mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Protocol atoms map to the 'Self' parameter; GenericParam and Name atoms map in the obvious way. An associated type atom `[P1&P1&...&Pn:A]` has one or more protocols P0...Pn and an identifier 'A'. We map it back to a AssociatedTypeDecl as follows: - For each protocol Pn, look for associated types A in Pn itself, and all protocols that Pn refines. - For each candidate associated type An in protocol Qn where Pn refines Qn, get the associated type anchor An' defined in protocol Qn', where Qn refines Qn'. - Out of all the candidiate pairs (Qn', An'), pick the one where the protocol Qn' is the lowest element according to the linear order defined by TypeDecl::compare(). The associated type An' is then the canonical associated type representative of the associated type atom `[P0&...&Pn:A]`.
36 KiB
36 KiB