File tree Expand file tree Collapse file tree 3 files changed +16
-1
lines changed
SwiftCompilerSources/Sources/AST Expand file tree Collapse file tree 3 files changed +16
-1
lines changed Original file line number Diff line number Diff line change @@ -18,7 +18,7 @@ import ASTBridging
1818///
1919/// Substitution maps are primarily used when performing substitutions into any entity that
2020/// can reference type parameters and conformances.
21- public struct SubstitutionMap : CustomStringConvertible {
21+ public struct SubstitutionMap : CustomStringConvertible , NoReflectionChildren {
2222 public let bridged : BridgedSubstitutionMap
2323
2424 public init ( bridged: BridgedSubstitutionMap ) {
@@ -28,6 +28,13 @@ public struct SubstitutionMap: CustomStringConvertible {
2828 public init ( ) {
2929 self . bridged = BridgedSubstitutionMap ( )
3030 }
31+
32+ public init ( genericSignature: GenericSignature , replacementTypes: [ Type ] ) {
33+ let bridgedReplTypes = replacementTypes. map { $0. bridged }
34+ self . bridged = bridgedReplTypes. withBridgedArrayRef {
35+ return BridgedSubstitutionMap . get ( genericSignature. bridged, $0)
36+ }
37+ }
3138
3239 public var description : String {
3340 return String ( taking: bridged. getDebugDescription ( ) )
Original file line number Diff line number Diff line change @@ -3071,6 +3071,8 @@ struct BridgedConformanceArray {
30713071struct BridgedSubstitutionMap {
30723072 uint64_t storage[1 ];
30733073
3074+ static SWIFT_IMPORT_UNSAFE BridgedSubstitutionMap get (BridgedGenericSignature genSig,
3075+ BridgedArrayRef replacementTypes);
30743076 BRIDGED_INLINE BridgedSubstitutionMap (swift::SubstitutionMap map);
30753077 BRIDGED_INLINE swift::SubstitutionMap unbridged () const ;
30763078 BRIDGED_INLINE BridgedSubstitutionMap ();
Original file line number Diff line number Diff line change @@ -115,6 +115,12 @@ BridgedOwnedString BridgedConformance::getDebugDescription() const {
115115static_assert (sizeof (BridgedSubstitutionMap) >= sizeof (swift::SubstitutionMap),
116116 " BridgedSubstitutionMap has wrong size" );
117117
118+ BridgedSubstitutionMap BridgedSubstitutionMap::get (BridgedGenericSignature genSig, BridgedArrayRef replacementTypes) {
119+ return SubstitutionMap::get (genSig.unbridged (),
120+ replacementTypes.unbridged <Type>(),
121+ swift::LookUpConformanceInModule ());
122+ }
123+
118124BridgedOwnedString BridgedSubstitutionMap::getDebugDescription () const {
119125 std::string str;
120126 llvm::raw_string_ostream os (str);
You can’t perform that action at this time.
0 commit comments