In the following piece of code, can somebody explain the last result? Why the 
break in consistency? Is this a bug?

protocol P {
        func foo() -> String
}

extension P {
        func foo() -> String { return "P" }
}

class A : P {
        func foo() -> String { return "A" }
}

class B : P {}
class C : B {
        func foo() -> String { return "C" }
}

A().foo()          // A
(A() as P).foo()   // A
B().foo()          // P
(B() as P).foo()   // P
C().foo()          // C
(C() as P).foo()   // P
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to