Skip to content

Commit 5212d92

Browse files
committed
Swift AST: add Conformance.getAssociatedConformance
1 parent e4cb2da commit 5212d92

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

SwiftCompilerSources/Sources/AST/Conformance.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ public struct Conformance: CustomStringConvertible, NoReflectionChildren {
6161
assert(isSpecialized)
6262
return SubstitutionMap(bridged: bridged.getSpecializedSubstitutions())
6363
}
64+
65+
public func getAssociatedConformance(ofAssociatedType assocType: Type, to proto: ProtocolDecl) -> Conformance {
66+
assert(isConcrete)
67+
return bridged.getAssociatedConformance(assocType.bridged, proto.bridged).conformance
68+
}
6469
}
6570

6671
public struct ConformanceArray : RandomAccessCollection, CustomReflectable {

include/swift/AST/ASTBridging.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3066,6 +3066,8 @@ struct BridgedConformance {
30663066
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedConformance getGenericConformance() const;
30673067
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedConformance getInheritedConformance() const;
30683068
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedSubstitutionMap getSpecializedSubstitutions() const;
3069+
SWIFT_IMPORT_UNSAFE BRIDGED_INLINE BridgedConformance getAssociatedConformance(BridgedASTType assocType,
3070+
BridgedDeclObj proto) const;
30693071
};
30703072

30713073
struct BridgedConformanceArray {

include/swift/AST/ASTBridgingImpl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,11 @@ BridgedSubstitutionMap BridgedConformance::getSpecializedSubstitutions() const {
553553
return {specPC->getSubstitutionMap()};
554554
}
555555

556+
BridgedConformance BridgedConformance::getAssociatedConformance(BridgedASTType assocType, BridgedDeclObj proto) const {
557+
return {unbridged().getConcrete()->getAssociatedConformance(assocType.unbridged(),
558+
proto.getAs<swift::ProtocolDecl>())};
559+
}
560+
556561
BridgedConformance BridgedConformanceArray::getAt(SwiftInt index) const {
557562
return pcArray.unbridged<swift::ProtocolConformanceRef>()[index];
558563
}

0 commit comments

Comments
 (0)