Commits

gregomni committed 1e3ed8bdd05
Split parsing for typealias & associatedtype, and allow typealias in protocols. Split up parsing of typealias and associatedtype, including dropping a now unneeded ParseDeclOptions flag. Then made typealias in a protocol valid, and act like you would hope for protocol conformance purposes (i.e. as an alias possibly involved in the types of other func/var conformances, not as a hidden generic param in itself). Also added support for simple type aliases in generic constraints. Aliases to simple (non-sugared) archetype types (and also - trivially - aliases to concrete types) can now be part of same-type constraints. The strategy here is to add type aliases to the tree of PotentialArchetypes, and if they are an alias to an archetype, also to immediately find the real associated type and set it as the representative for the PA. Thus the typealias PA node becomes just a shortcut farther down into the tree for purposes of lookup and generating same type requirements. Then the typealias PA nodes need to be explicitly skipped when walking the tree for building archetype types and other types of requirements, in order to keep from getting extra out-of-order archetypes/witness markers of the real associated type inserted where the typealias is defined. Any constraint with a typealias more complex than pointing to a single nested associated type (e.g. `typealias T = A.B.C.D`), will now get a specialized diagnoses.