Skip to content

Commit 037e075

Browse files
committed
xxx
1 parent 40f1837 commit 037e075

File tree

10 files changed

+227
-141
lines changed

10 files changed

+227
-141
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ SWIFT_NAME("BridgedDeclNameRef.createParsed(_:baseName:argumentLabels:)")
120120
BridgedDeclNameRef
121121
BridgedDeclNameRef_createParsed(BridgedASTContext cContext,
122122
BridgedDeclBaseName cBaseName,
123-
BridgedErasedArrayRef cLabels);
123+
BridgedArrayRef<BridgedIdentifier> cLabels);
124124

125125
SWIFT_NAME("BridgedDeclNameRef.createParsed(_:)")
126126
BridgedDeclNameRef
@@ -148,7 +148,7 @@ SWIFT_NAME("BridgedDeclNameLoc.createParsed(_:baseNameLoc:lParenLoc:"
148148
"argumentLabelLocs:rParenLoc:)")
149149
BridgedDeclNameLoc BridgedDeclNameLoc_createParsed(
150150
BridgedASTContext cContext, BridgedSourceLoc cBaseNameLoc,
151-
BridgedSourceLoc cLParenLoc, BridgedErasedArrayRef cLabelLocs,
151+
BridgedSourceLoc cLParenLoc, BridgedArrayRef<BridgedSourceLoc> cLabelLocs,
152152
BridgedSourceLoc cRParenLoc);
153153

154154
SWIFT_NAME("BridgedDeclNameLoc.createParsed(_:)")
@@ -560,7 +560,8 @@ SWIFT_NAME("BridgedAllowFeatureSuppressionAttr.createParsed(_:atLoc:range:invert
560560
BridgedAllowFeatureSuppressionAttr
561561
BridgedAllowFeatureSuppressionAttr_createParsed(
562562
BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
563-
BridgedSourceRange cRange, bool inverted, BridgedErasedArrayRef cFeatures);
563+
BridgedSourceRange cRange, bool inverted,
564+
BridgedArrayRef<BridgedIdentifier> cFeatures);
564565

565566
SWIFT_NAME("BridgedCDeclAttr.createParsed(_:atLoc:range:name:)")
566567
BridgedCDeclAttr BridgedCDeclAttr_createParsed(BridgedASTContext cContext,
@@ -692,8 +693,8 @@ SWIFT_NAME("BridgedObjCAttr.createParsedSelector(_:atLoc:attrNameLoc:lParenLoc:"
692693
BridgedObjCAttr BridgedObjCAttr_createParsedSelector(
693694
BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
694695
BridgedSourceLoc cAttrNameLoc, BridgedSourceLoc cLParenLoc,
695-
BridgedErasedArrayRef cNameLocs, BridgedErasedArrayRef cNames,
696-
BridgedSourceLoc cRParenLoc);
696+
BridgedArrayRef<BridgedSourceLoc> cNameLocs,
697+
BridgedArrayRef<BridgedIdentifier> cNames, BridgedSourceLoc cRParenLoc);
697698

698699
SWIFT_NAME("BridgedObjCImplementationAttr.createParsed(_:atLoc:range:name:isEarlyAdopter:)")
699700
BridgedObjCImplementationAttr BridgedObjCImplementationAttr_createParsed(
@@ -795,7 +796,7 @@ enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedAccessorKind {
795796

796797
struct BridgedAccessorRecord {
797798
BridgedSourceLoc lBraceLoc;
798-
BridgedErasedArrayRef accessors;
799+
BridgedArrayRef<BridgedAccessorDecl> accessors;
799800
BridgedSourceLoc rBraceLoc;
800801
};
801802

@@ -814,8 +815,9 @@ SWIFT_NAME(
814815
"entries:isStatic:isLet:)")
815816
BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed(
816817
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
817-
BridgedSourceLoc cBindingKeywordLoc, BridgedErasedArrayRef cBindingEntries,
818-
bool isStatic, bool isLet);
818+
BridgedSourceLoc cBindingKeywordLoc,
819+
BridgedArrayRef<BridgedPatternBindingEntry> cBindingEntries, bool isStatic,
820+
bool isLet);
819821

820822
SWIFT_NAME("BridgedParamDecl.createParsed(_:declContext:specifierLoc:argName:"
821823
"argNameLoc:paramName:paramNameLoc:type:defaultValue:)")
@@ -881,8 +883,8 @@ BridgedTypeAliasDecl BridgedTypeAliasDecl_createParsed(
881883
BridgedNullableTrailingWhereClause genericWhereClause);
882884

883885
SWIFT_NAME("BridgedExtensionDecl.setParsedMembers(self:_:)")
884-
void BridgedExtensionDecl_setParsedMembers(BridgedExtensionDecl decl,
885-
BridgedErasedArrayRef members);
886+
void BridgedExtensionDecl_setParsedMembers(
887+
BridgedExtensionDecl decl, BridgedArrayRef<BridgedDecl> members);
886888

887889
SWIFT_NAME(
888890
"BridgedEnumDecl.createParsed(_:declContext:enumKeywordLoc:name:nameLoc:"
@@ -891,16 +893,15 @@ BridgedNominalTypeDecl BridgedEnumDecl_createParsed(
891893
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
892894
BridgedSourceLoc cEnumKeywordLoc, BridgedIdentifier cName,
893895
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
894-
BridgedErasedArrayRef cInheritedTypes,
896+
BridgedArrayRef<BridgedTypeRepr> cInheritedTypes,
895897
BridgedNullableTrailingWhereClause genericWhereClause,
896898
BridgedSourceRange cBraceRange);
897899

898900
SWIFT_NAME(
899901
"BridgedEnumCaseDecl.createParsed(declContext:caseKeywordLoc:elements:)")
900-
BridgedEnumCaseDecl
901-
BridgedEnumCaseDecl_createParsed(BridgedDeclContext cDeclContext,
902-
BridgedSourceLoc cCaseKeywordLoc,
903-
BridgedErasedArrayRef cElements);
902+
BridgedEnumCaseDecl BridgedEnumCaseDecl_createParsed(
903+
BridgedDeclContext cDeclContext, BridgedSourceLoc cCaseKeywordLoc,
904+
BridgedArrayRef<BridgedEnumElementDecl> cElements);
904905

905906
SWIFT_NAME("BridgedEnumElementDecl.createParsed(_:declContext:name:nameLoc:"
906907
"parameterList:equalsLoc:rawValue:)")
@@ -917,7 +918,7 @@ BridgedNominalTypeDecl BridgedStructDecl_createParsed(
917918
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
918919
BridgedSourceLoc cStructKeywordLoc, BridgedIdentifier cName,
919920
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
920-
BridgedErasedArrayRef cInheritedTypes,
921+
BridgedArrayRef<BridgedTypeRepr> cInheritedTypes,
921922
BridgedNullableTrailingWhereClause genericWhereClause,
922923
BridgedSourceRange cBraceRange);
923924

@@ -928,7 +929,7 @@ BridgedNominalTypeDecl BridgedClassDecl_createParsed(
928929
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
929930
BridgedSourceLoc cClassKeywordLoc, BridgedIdentifier cName,
930931
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList,
931-
BridgedErasedArrayRef cInheritedTypes,
932+
BridgedArrayRef<BridgedTypeRepr> cInheritedTypes,
932933
BridgedNullableTrailingWhereClause genericWhereClause,
933934
BridgedSourceRange cBraceRange, bool isActor);
934935

@@ -940,8 +941,8 @@ BridgedNominalTypeDecl BridgedProtocolDecl_createParsed(
940941
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
941942
BridgedSourceLoc cProtocolKeywordLoc, BridgedIdentifier cName,
942943
BridgedSourceLoc cNameLoc,
943-
BridgedErasedArrayRef cPrimaryAssociatedTypeNames,
944-
BridgedErasedArrayRef cInheritedTypes,
944+
BridgedArrayRef<BridgedLocatedIdentifier> cPrimaryAssociatedTypeNames,
945+
BridgedArrayRef<BridgedTypeRepr> cInheritedTypes,
945946
BridgedNullableTrailingWhereClause genericWhereClause,
946947
BridgedSourceRange cBraceRange);
947948

@@ -951,7 +952,7 @@ SWIFT_NAME("BridgedAssociatedTypeDecl.createParsed(_:declContext:"
951952
BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed(
952953
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
953954
BridgedSourceLoc cAssociatedtypeKeywordLoc, BridgedIdentifier cName,
954-
BridgedSourceLoc cNameLoc, BridgedErasedArrayRef cInheritedTypes,
955+
BridgedSourceLoc cNameLoc, BridgedArrayRef<BridgedTypeRepr> cInheritedTypes,
955956
BridgedNullableTypeRepr opaqueDefaultType,
956957
BridgedNullableTrailingWhereClause genericWhereClause);
957958

@@ -961,7 +962,7 @@ SWIFT_NAME(
961962
BridgedExtensionDecl BridgedExtensionDecl_createParsed(
962963
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
963964
BridgedSourceLoc cExtensionKeywordLoc, BridgedTypeRepr opaqueExtendedType,
964-
BridgedErasedArrayRef cInheritedTypes,
965+
BridgedArrayRef<BridgedTypeRepr> cInheritedTypes,
965966
BridgedNullableTrailingWhereClause genericWhereClause,
966967
BridgedSourceRange cBraceRange);
967968

@@ -1002,9 +1003,10 @@ BridgedPrecedenceGroupDecl BridgedPrecedenceGroupDecl_createParsed(
10021003
BridgedAssociativity cAssociativity, BridgedSourceLoc cAssignmentKeywordLoc,
10031004
BridgedSourceLoc cAssignmentValueLoc, bool isAssignment,
10041005
BridgedSourceLoc cHigherThanKeywordLoc,
1005-
BridgedErasedArrayRef cHigherThanNames,
1006+
BridgedArrayRef<BridgedLocatedIdentifier> cHigherThanNames,
10061007
BridgedSourceLoc cLowerThanKeywordLoc,
1007-
BridgedErasedArrayRef cLowerThanNames, BridgedSourceLoc cRightBraceLoc);
1008+
BridgedArrayRef<BridgedLocatedIdentifier> cLowerThanNames,
1009+
BridgedSourceLoc cRightBraceLoc);
10081010

10091011
enum ENUM_EXTENSIBILITY_ATTR(open) BridgedImportKind {
10101012
BridgedImportKindModule,
@@ -1022,7 +1024,8 @@ SWIFT_NAME("BridgedImportDecl.createParsed(_:declContext:importKeywordLoc:"
10221024
BridgedImportDecl BridgedImportDecl_createParsed(
10231025
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
10241026
BridgedSourceLoc cImportKeywordLoc, BridgedImportKind cImportKind,
1025-
BridgedSourceLoc cImportKindLoc, BridgedErasedArrayRef cImportPathElements);
1027+
BridgedSourceLoc cImportKindLoc,
1028+
BridgedArrayRef<BridgedLocatedIdentifier> cImportPathElements);
10261029

10271030
SWIFT_NAME("BridgedSubscriptDecl.createParsed(_:declContext:staticLoc:"
10281031
"staticSpelling:subscriptKeywordLoc:genericParamList:parameterList:"
@@ -1092,8 +1095,8 @@ BRIDGED_INLINE
10921095
bool BridgedNominalTypeDecl_hasValueDeinit(BridgedNominalTypeDecl decl);
10931096

10941097
SWIFT_NAME("BridgedNominalTypeDecl.setParsedMembers(self:_:)")
1095-
void BridgedNominalTypeDecl_setParsedMembers(BridgedNominalTypeDecl decl,
1096-
BridgedErasedArrayRef members);
1098+
void BridgedNominalTypeDecl_setParsedMembers(
1099+
BridgedNominalTypeDecl decl, BridgedArrayRef<BridgedDecl> members);
10971100

10981101
//===----------------------------------------------------------------------===//
10991102
// MARK: SubscriptDecl
@@ -1142,15 +1145,14 @@ struct BridgedCallArgument {
11421145
};
11431146

11441147
SWIFT_NAME("BridgedArgumentList.createImplicitUnlabeled(_:exprs:)")
1145-
BridgedArgumentList
1146-
BridgedArgumentList_createImplicitUnlabeled(BridgedASTContext cContext,
1147-
BridgedErasedArrayRef cExprs);
1148+
BridgedArgumentList BridgedArgumentList_createImplicitUnlabeled(
1149+
BridgedASTContext cContext, BridgedArrayRef<BridgedExpr> cExprs);
11481150

11491151
SWIFT_NAME("BridgedArgumentList.createParsed(_:lParenLoc:args:rParenLoc:"
11501152
"firstTrailingClosureIndex:)")
11511153
BridgedArgumentList BridgedArgumentList_createParsed(
11521154
BridgedASTContext cContext, BridgedSourceLoc cLParenLoc,
1153-
BridgedErasedArrayRef cArgs, BridgedSourceLoc cRParenLoc,
1155+
BridgedArrayRef<BridgedCallArgument> cArgs, BridgedSourceLoc cRParenLoc,
11541156
size_t cFirstTrailingClosureIndex);
11551157

11561158
SWIFT_NAME("BridgedArrayExpr.createParsed(_:lSquareLoc:elements:commaLocs:"

include/swift/Basic/BasicBridging.h

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,59 @@ const void *_Nullable BridgedErasedArrayRef_data(BridgedErasedArrayRef arr);
147147
SWIFT_NAME("getter:BridgedErasedArrayRef.count(self:)")
148148
BRIDGED_INLINE SwiftInt BridgedErasedArrayRef_count(BridgedErasedArrayRef arr);
149149

150+
151+
/// Bridgable wrapper for 'llvm::ArrayRef<Element>'.
152+
template <typename _Element>
153+
class BridgedArrayRef {
154+
public:
155+
// Seemingly needed for Swift-side conformance.
156+
using Element = _Element;
157+
158+
SWIFT_UNAVAILABLE("Use '.data' instead")
159+
const void *_Nullable Data;
160+
161+
SWIFT_UNAVAILABLE("Use '.count' instead")
162+
size_t Length;
163+
164+
SWIFT_NAME("init(data:count:)")
165+
BridgedArrayRef(const Element *_Nullable data, SwiftInt length)
166+
: Data(data), Length(length) {}
167+
168+
#ifdef USED_IN_CPP_SOURCE
169+
using ArrRefTy = llvm::ArrayRef<Element>;
170+
171+
BridgedArrayRef(ArrRefTy arrRef)
172+
: Data(arrRef.data()), Length(arrRef.size()) {}
173+
174+
using iterator = typename ArrRefTy::iterator;
175+
iterator begin() const { return unbridged().begin(); }
176+
iterator end() const { return unbridged().end(); }
177+
178+
ArrRefTy unbridged() const {
179+
return ArrRefTy(static_cast<const Element *>(Data), Length);
180+
}
181+
#endif
182+
183+
bool empty() const { return Length == 0; }
184+
185+
}
186+
#ifdef IMPORTING_INTO_ASTGEN
187+
__attribute__((swift_attr("conforms_to:swiftASTGen.BridgedArrayRefProtocol")))
188+
#endif
189+
;
190+
191+
template<typename T>
192+
SWIFT_NAME("getter:BridgedArrayRef.data(self:)")
193+
inline const void *_Nullable BridgedArrayRef_data(BridgedArrayRef<T> arr) {
194+
return arr.Data;
195+
}
196+
197+
template<typename T>
198+
SWIFT_NAME("getter:BridgedArrayRef.count(self:)")
199+
inline SwiftInt BridgedArrayRef_count(BridgedArrayRef<T> arr) {
200+
return arr.Length;
201+
}
202+
150203
//===----------------------------------------------------------------------===//
151204
// MARK: Data
152205
//===----------------------------------------------------------------------===//

0 commit comments

Comments
 (0)