Commit Graph

160 Commits

Author SHA1 Message Date
zoecarver
fc3b3a1d71 [cxx-interop] Implement foreign reference types.
This is an expiremental feature to allow an attribute, `import_as_ref`, to import a C++ record as a non-reference-counted reference type in Swift.
2021-12-08 15:35:18 +00:00
Slava Pestov
0e2fd5ad06 RequirementMachine: Don't call getExistentialLayout() from desugarConformanceRequirement() 2021-12-08 00:53:35 -05:00
Slava Pestov
77d4a207f8 RequirementMachine: Implement requirement inference 2021-11-29 13:54:15 -05:00
Slava Pestov
291ddd7a31 RequirementMachine: Plumb through the ModuleDecl used for requirement inference 2021-11-29 13:54:15 -05:00
Slava Pestov
42c0a28ad7 RequirementMachine: Add RequirementMachine::initWithWrittenRequirements() 2021-11-19 15:48:28 -05:00
Slava Pestov
f0899e3acb RequirementMachine: Make some entry points in RequirementLowering.cpp public 2021-11-19 15:48:07 -05:00
Slava Pestov
28c1178c4f RequirementMachine: Introduce TypeAliasRequirementsRequest
This is a verbatim copy of the GenericSignatureBuilder's somewhat
questionable (but necessary for source compatibility) logic where
protocol typealiases with the same name as some other associated
type imply a same-type requirement.

The related diagnostics are there too, but only emitted when
-requirement-machine-protocol-signatures=on; in 'verify' mode,
the GSB will emit the same diagnostics.
2021-11-19 15:48:01 -05:00
Slava Pestov
df8ce67539 RequirementMachine: Refactor requirement lowering 2021-11-12 14:30:46 -05:00
Slava Pestov
67535303b6 RequirementMachine: Move implementation of StructuralRequirementsRequest and ProtocolDependenciesRequest to RequirementLowering.cpp 2021-11-12 14:30:46 -05:00
Slava Pestov
ff5d0e1d63 RequirementMachine: Split off RuleBuilder into a new RequirementLowering.cpp file 2021-11-12 14:30:46 -05:00