Reconsider the semantics of type aliases in protocol extensions

Hi Jens,

With this proposal I am trying to fix some violations that are a result of how the language developed. Some are rudiments, others – intended decisions for convenience that are no longer relevant. In other words, I am trying to refactor an established grammar.

Everything you pointed out aren't really problems related to what this pitch tackles at the implementation level, so I doubt fixing them together will make a difference. Mostly, they are bugs or simply an early state of a not yet fully implemented feature. A good example are conditional conformances.

By the way, as long as the extension resides in the same module, this should be alright.
You can treat non-conditional extensions like these as part of the primary definition.

struct S {
    let v: A
    func roo() {foo()}
}
extension S {
    typealias A = Int
    func foo() {}
}

P.S.

Thanks for the bugs, I'll look if I can help with any of them.

1 Like