[swift-evolution] Passing class protocols to functions accepting AnyObject

Derrick Ho wh1pch81n at gmail.com
Sun Dec 4 23:49:55 CST 2016


Does the following expression evaluate to true?

p is AnyObject

If it does then you may have found a bug.
On Sun, Dec 4, 2016 at 9:46 PM Charles Srstka via swift-evolution <
swift-evolution at swift.org> wrote:

> The following currently does not work:
>
> protocol P: class {}
> class C: P {}
>
> func foo<T>(t: T) where T: AnyObject {
>         print("foo")
> }
>
> let p: P = C()
>
> foo(t: p) // error: cannot invoke 'foo' with an argument list of type '(t:
> P)'
>
> It seems to me that this ought to have been allowed, since P is declared
> as being a reference type and thus should have been able to satisfy the
> function’s requirements.
>
> Is this worthy of writing a language proposal, or would this be considered
> a bug that should be sent through the radar system instead?
>
> Thanks,
> Charles
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20161205/99409863/attachment.html>


More information about the swift-evolution mailing list