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
18
18
///
19
19
/// Substitution maps are primarily used when performing substitutions into any entity that
20
20
/// can reference type parameters and conformances.
21
- public struct SubstitutionMap : CustomStringConvertible {
21
+ public struct SubstitutionMap : CustomStringConvertible , NoReflectionChildren {
22
22
public let bridged : BridgedSubstitutionMap
23
23
24
24
public init ( bridged: BridgedSubstitutionMap ) {
@@ -28,6 +28,13 @@ public struct SubstitutionMap: CustomStringConvertible {
28
28
public init ( ) {
29
29
self . bridged = BridgedSubstitutionMap ( )
30
30
}
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
+ }
31
38
32
39
public var description : String {
33
40
return String ( taking: bridged. getDebugDescription ( ) )
Original file line number Diff line number Diff line change @@ -3071,6 +3071,8 @@ struct BridgedConformanceArray {
3071
3071
struct BridgedSubstitutionMap {
3072
3072
uint64_t storage[1 ];
3073
3073
3074
+ static SWIFT_IMPORT_UNSAFE BridgedSubstitutionMap get (BridgedGenericSignature genSig,
3075
+ BridgedArrayRef replacementTypes);
3074
3076
BRIDGED_INLINE BridgedSubstitutionMap (swift::SubstitutionMap map);
3075
3077
BRIDGED_INLINE swift::SubstitutionMap unbridged () const ;
3076
3078
BRIDGED_INLINE BridgedSubstitutionMap ();
Original file line number Diff line number Diff line change @@ -115,6 +115,12 @@ BridgedOwnedString BridgedConformance::getDebugDescription() const {
115
115
static_assert (sizeof (BridgedSubstitutionMap) >= sizeof(swift::SubstitutionMap),
116
116
"BridgedSubstitutionMap has wrong size");
117
117
118
+ BridgedSubstitutionMap BridgedSubstitutionMap::get (BridgedGenericSignature genSig, BridgedArrayRef replacementTypes) {
119
+ return SubstitutionMap::get (genSig.unbridged (),
120
+ replacementTypes.unbridged <Type>(),
121
+ swift::LookUpConformanceInModule ());
122
+ }
123
+
118
124
BridgedOwnedString BridgedSubstitutionMap::getDebugDescription () const {
119
125
std::string str;
120
126
llvm::raw_string_ostream os (str);
You can’t perform that action at this time.
0 commit comments