I always wanted a way to make some protocol default implementations not 
overridable. Now Swift 3 got open vs. public behavior for classes. (Hopefully 
the inconsistency will be fixed soon and we’ll get open protocols as well.)

Imagine this scenario with open/public protocols.

// Module A
// `open protocol` means that in a diff. module I'll
// be able to conform to that protocol
open protocol Proto {}

extension Proto {
     // shouldn't this mean that the variable is not overridable  
     // from a different module? :)
     public var foo: Int { return 42 }
}

// Module B
struct A : Proto {
    // can I or can I not override `foo` from here?
}
I wonder if my thinking is correct here, or do we need something else to make 
extensions with default implementation to be fixed and not overridable?



-- 
Adrian Zubarev
Sent with Airmail
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to