mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Codable's magic previously relied on the subject of every qualified lookup in an unqualified lookup stack to force the synthesis of this member. This allowed users to reference CodingKeys transitively through a non-primary input without qualification. As part of the requestification of name lookup, this synthesis was moved out of the normal qualified lookup path and into the Type Checker's semantic lookup entrypoints in order to prevent wild cycles caused by protocol conformance resolution. In the process, we forget to restore the synthesis check at this entrypoint. To patch up the source break this caused, we need to walk the context stack again and force synthesis. Unfortunately, we're stuck with a hack like this until we bring Codable's implementation back out of the realm of magic once more. A future implementation of synthesizeSemanticMembersIfNeeded should aim to just craft the AST for CodingKeys, but not actually run any of the semantic checks until we check the conformance to CodingKey. rdar://65088901, SR-13137