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

Charles Srstka cocoadev at charlessoft.com
Sun Dec 4 20:46:04 CST 2016

The following currently does not work:

protocol P: class {}
class C: P {}

func foo<T>(t: T) where T: AnyObject {

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?


More information about the swift-evolution mailing list