diff --git a/SwiftCompilerSources/Sources/Basic/Utils.swift b/SwiftCompilerSources/Sources/Basic/Utils.swift index 62a1f201ac4c8..eb70e2c8e0422 100644 --- a/SwiftCompilerSources/Sources/Basic/Utils.swift +++ b/SwiftCompilerSources/Sources/Basic/Utils.swift @@ -142,9 +142,9 @@ extension String { } extension Array { - public func withBridgedArrayRef(_ c: (BridgedArrayRef) -> T) -> T { + public func withBridgedArrayRef(_ c: (BridgedErasedArrayRef) -> T) -> T { return withUnsafeBytes { buf in - return c(BridgedArrayRef(data: buf.baseAddress!, count: count)) + return c(BridgedErasedArrayRef(data: buf.baseAddress!, count: count)) } } } @@ -171,7 +171,7 @@ extension Optional where Wrapped == UnsafeMutablePointer { } } -extension BridgedArrayRef { +extension BridgedErasedArrayRef { public func withElements(ofType ty: T.Type, _ c: (UnsafeBufferPointer) -> R) -> R { let start = data?.bindMemory(to: ty, capacity: count) let buffer = UnsafeBufferPointer(start: start, count: count) diff --git a/SwiftCompilerSources/Sources/Optimizer/Utilities/BorrowedFromUpdater.swift b/SwiftCompilerSources/Sources/Optimizer/Utilities/BorrowedFromUpdater.swift index dd5a4be1f4fa8..92c2f5e65fcc3 100644 --- a/SwiftCompilerSources/Sources/Optimizer/Utilities/BorrowedFromUpdater.swift +++ b/SwiftCompilerSources/Sources/Optimizer/Utilities/BorrowedFromUpdater.swift @@ -105,7 +105,7 @@ func registerBorrowedFromUpdater() { let function = bridgedFunction.function; updateBorrowedFrom(in: function, context) }, - { (bridgedCtxt: BridgedPassContext, bridgedPhiArray: BridgedArrayRef) in + { (bridgedCtxt: BridgedPassContext, bridgedPhiArray: BridgedErasedArrayRef) in let context = FunctionPassContext(_bridged: bridgedCtxt) var guaranteedPhis = Stack(context) defer { guaranteedPhis.deinitialize() } diff --git a/SwiftCompilerSources/Sources/SIL/Function.swift b/SwiftCompilerSources/Sources/SIL/Function.swift index 185b8c759bf1e..ff2713aea5906 100644 --- a/SwiftCompilerSources/Sources/SIL/Function.swift +++ b/SwiftCompilerSources/Sources/SIL/Function.swift @@ -418,7 +418,7 @@ extension Function { s._withBridgedStringRef { $0.write(os) } }, // parseFn: - { (f: BridgedFunction, str: BridgedStringRef, mode: BridgedFunction.ParseEffectsMode, argumentIndex: Int, paramNames: BridgedArrayRef) -> BridgedFunction.ParsingError in + { (f: BridgedFunction, str: BridgedStringRef, mode: BridgedFunction.ParseEffectsMode, argumentIndex: Int, paramNames: BridgedErasedArrayRef) -> BridgedFunction.ParsingError in do { var parser = StringParser(String(str)) let function = f.function diff --git a/include/swift/AST/ASTBridging.h b/include/swift/AST/ASTBridging.h index 0e946c8531ab1..2770b76229f65 100644 --- a/include/swift/AST/ASTBridging.h +++ b/include/swift/AST/ASTBridging.h @@ -120,7 +120,7 @@ SWIFT_NAME("BridgedDeclNameRef.createParsed(_:baseName:argumentLabels:)") BridgedDeclNameRef BridgedDeclNameRef_createParsed(BridgedASTContext cContext, BridgedDeclBaseName cBaseName, - BridgedArrayRef cLabels); + BridgedArrayRef cLabels); SWIFT_NAME("BridgedDeclNameRef.createParsed(_:)") BridgedDeclNameRef @@ -148,7 +148,7 @@ SWIFT_NAME("BridgedDeclNameLoc.createParsed(_:baseNameLoc:lParenLoc:" "argumentLabelLocs:rParenLoc:)") BridgedDeclNameLoc BridgedDeclNameLoc_createParsed( BridgedASTContext cContext, BridgedSourceLoc cBaseNameLoc, - BridgedSourceLoc cLParenLoc, BridgedArrayRef cLabelLocs, + BridgedSourceLoc cLParenLoc, BridgedArrayRef cLabelLocs, BridgedSourceLoc cRParenLoc); SWIFT_NAME("BridgedDeclNameLoc.createParsed(_:)") @@ -447,8 +447,8 @@ SWIFT_NAME("BridgedDiagnosticEngine.diagnose(self:at:_:_:highlightAt:" "highlightLength:fixIts:)") void BridgedDiagnosticEngine_diagnose( BridgedDiagnosticEngine, BridgedSourceLoc loc, BridgedDiagID diagID, - BridgedArrayRef arguments, BridgedSourceLoc highlightStart, - uint32_t hightlightLength, BridgedArrayRef fixIts); + BridgedErasedArrayRef arguments, BridgedSourceLoc highlightStart, + uint32_t hightlightLength, BridgedErasedArrayRef fixIts); SWIFT_NAME("getter:BridgedDiagnosticEngine.hadAnyError(self:)") bool BridgedDiagnosticEngine_hadAnyError(BridgedDiagnosticEngine); @@ -559,11 +559,9 @@ BridgedAlignmentAttr_createParsed(BridgedASTContext cContext, SWIFT_NAME("BridgedAllowFeatureSuppressionAttr.createParsed(_:atLoc:range:inverted:features:)") BridgedAllowFeatureSuppressionAttr BridgedAllowFeatureSuppressionAttr_createParsed( - BridgedASTContext cContext, - BridgedSourceLoc cAtLoc, - BridgedSourceRange cRange, - bool inverted, - BridgedArrayRef cFeatures); + BridgedASTContext cContext, BridgedSourceLoc cAtLoc, + BridgedSourceRange cRange, bool inverted, + BridgedArrayRef cFeatures); SWIFT_NAME("BridgedCDeclAttr.createParsed(_:atLoc:range:name:)") BridgedCDeclAttr BridgedCDeclAttr_createParsed(BridgedASTContext cContext, @@ -695,8 +693,8 @@ SWIFT_NAME("BridgedObjCAttr.createParsedSelector(_:atLoc:attrNameLoc:lParenLoc:" BridgedObjCAttr BridgedObjCAttr_createParsedSelector( BridgedASTContext cContext, BridgedSourceLoc cAtLoc, BridgedSourceLoc cAttrNameLoc, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cNameLocs, BridgedArrayRef cNames, - BridgedSourceLoc cRParenLoc); + BridgedArrayRef cNameLocs, + BridgedArrayRef cNames, BridgedSourceLoc cRParenLoc); SWIFT_NAME("BridgedObjCImplementationAttr.createParsed(_:atLoc:range:name:isEarlyAdopter:)") BridgedObjCImplementationAttr BridgedObjCImplementationAttr_createParsed( @@ -798,7 +796,7 @@ enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedAccessorKind { struct BridgedAccessorRecord { BridgedSourceLoc lBraceLoc; - BridgedArrayRef accessors; + BridgedArrayRef accessors; BridgedSourceLoc rBraceLoc; }; @@ -817,8 +815,9 @@ SWIFT_NAME( "entries:isStatic:isLet:)") BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, - BridgedSourceLoc cBindingKeywordLoc, BridgedArrayRef cBindingEntries, - bool isStatic, bool isLet); + BridgedSourceLoc cBindingKeywordLoc, + BridgedArrayRef cBindingEntries, bool isStatic, + bool isLet); SWIFT_NAME("BridgedParamDecl.createParsed(_:declContext:specifierLoc:argName:" "argNameLoc:paramName:paramNameLoc:type:defaultValue:)") @@ -884,8 +883,8 @@ BridgedTypeAliasDecl BridgedTypeAliasDecl_createParsed( BridgedNullableTrailingWhereClause genericWhereClause); SWIFT_NAME("BridgedExtensionDecl.setParsedMembers(self:_:)") -void BridgedExtensionDecl_setParsedMembers(BridgedExtensionDecl decl, - BridgedArrayRef members); +void BridgedExtensionDecl_setParsedMembers( + BridgedExtensionDecl decl, BridgedArrayRef members); SWIFT_NAME( "BridgedEnumDecl.createParsed(_:declContext:enumKeywordLoc:name:nameLoc:" @@ -894,16 +893,15 @@ BridgedNominalTypeDecl BridgedEnumDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cEnumKeywordLoc, BridgedIdentifier cName, BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange); SWIFT_NAME( "BridgedEnumCaseDecl.createParsed(declContext:caseKeywordLoc:elements:)") -BridgedEnumCaseDecl -BridgedEnumCaseDecl_createParsed(BridgedDeclContext cDeclContext, - BridgedSourceLoc cCaseKeywordLoc, - BridgedArrayRef cElements); +BridgedEnumCaseDecl BridgedEnumCaseDecl_createParsed( + BridgedDeclContext cDeclContext, BridgedSourceLoc cCaseKeywordLoc, + BridgedArrayRef cElements); SWIFT_NAME("BridgedEnumElementDecl.createParsed(_:declContext:name:nameLoc:" "parameterList:equalsLoc:rawValue:)") @@ -920,7 +918,7 @@ BridgedNominalTypeDecl BridgedStructDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cStructKeywordLoc, BridgedIdentifier cName, BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange); @@ -931,7 +929,7 @@ BridgedNominalTypeDecl BridgedClassDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cClassKeywordLoc, BridgedIdentifier cName, BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange, bool isActor); @@ -942,8 +940,9 @@ SWIFT_NAME( BridgedNominalTypeDecl BridgedProtocolDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cProtocolKeywordLoc, BridgedIdentifier cName, - BridgedSourceLoc cNameLoc, BridgedArrayRef cPrimaryAssociatedTypeNames, - BridgedArrayRef cInheritedTypes, + BridgedSourceLoc cNameLoc, + BridgedArrayRef cPrimaryAssociatedTypeNames, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange); @@ -953,7 +952,7 @@ SWIFT_NAME("BridgedAssociatedTypeDecl.createParsed(_:declContext:" BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cAssociatedtypeKeywordLoc, BridgedIdentifier cName, - BridgedSourceLoc cNameLoc, BridgedArrayRef cInheritedTypes, + BridgedSourceLoc cNameLoc, BridgedArrayRef cInheritedTypes, BridgedNullableTypeRepr opaqueDefaultType, BridgedNullableTrailingWhereClause genericWhereClause); @@ -963,7 +962,7 @@ SWIFT_NAME( BridgedExtensionDecl BridgedExtensionDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cExtensionKeywordLoc, BridgedTypeRepr opaqueExtendedType, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange); @@ -1003,8 +1002,10 @@ BridgedPrecedenceGroupDecl BridgedPrecedenceGroupDecl_createParsed( BridgedSourceLoc cAssociativityValueLoc, BridgedAssociativity cAssociativity, BridgedSourceLoc cAssignmentKeywordLoc, BridgedSourceLoc cAssignmentValueLoc, bool isAssignment, - BridgedSourceLoc cHigherThanKeywordLoc, BridgedArrayRef cHigherThanNames, - BridgedSourceLoc cLowerThanKeywordLoc, BridgedArrayRef cLowerThanNames, + BridgedSourceLoc cHigherThanKeywordLoc, + BridgedArrayRef cHigherThanNames, + BridgedSourceLoc cLowerThanKeywordLoc, + BridgedArrayRef cLowerThanNames, BridgedSourceLoc cRightBraceLoc); enum ENUM_EXTENSIBILITY_ATTR(open) BridgedImportKind { @@ -1023,7 +1024,8 @@ SWIFT_NAME("BridgedImportDecl.createParsed(_:declContext:importKeywordLoc:" BridgedImportDecl BridgedImportDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cImportKeywordLoc, BridgedImportKind cImportKind, - BridgedSourceLoc cImportKindLoc, BridgedArrayRef cImportPathElements); + BridgedSourceLoc cImportKindLoc, + BridgedArrayRef cImportPathElements); SWIFT_NAME("BridgedSubscriptDecl.createParsed(_:declContext:staticLoc:" "staticSpelling:subscriptKeywordLoc:genericParamList:parameterList:" @@ -1093,8 +1095,8 @@ BRIDGED_INLINE bool BridgedNominalTypeDecl_hasValueDeinit(BridgedNominalTypeDecl decl); SWIFT_NAME("BridgedNominalTypeDecl.setParsedMembers(self:_:)") -void BridgedNominalTypeDecl_setParsedMembers(BridgedNominalTypeDecl decl, - BridgedArrayRef members); +void BridgedNominalTypeDecl_setParsedMembers( + BridgedNominalTypeDecl decl, BridgedArrayRef members); //===----------------------------------------------------------------------===// // MARK: SubscriptDecl @@ -1143,23 +1145,22 @@ struct BridgedCallArgument { }; SWIFT_NAME("BridgedArgumentList.createImplicitUnlabeled(_:exprs:)") -BridgedArgumentList -BridgedArgumentList_createImplicitUnlabeled(BridgedASTContext cContext, - BridgedArrayRef cExprs); +BridgedArgumentList BridgedArgumentList_createImplicitUnlabeled( + BridgedASTContext cContext, BridgedArrayRef cExprs); SWIFT_NAME("BridgedArgumentList.createParsed(_:lParenLoc:args:rParenLoc:" "firstTrailingClosureIndex:)") BridgedArgumentList BridgedArgumentList_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cArgs, BridgedSourceLoc cRParenLoc, + BridgedArrayRef cArgs, BridgedSourceLoc cRParenLoc, size_t cFirstTrailingClosureIndex); SWIFT_NAME("BridgedArrayExpr.createParsed(_:lSquareLoc:elements:commaLocs:" "rSquareLoc:)") BridgedArrayExpr BridgedArrayExpr_createParsed(BridgedASTContext cContext, BridgedSourceLoc cLLoc, - BridgedArrayRef elements, - BridgedArrayRef commas, + BridgedErasedArrayRef elements, + BridgedErasedArrayRef commas, BridgedSourceLoc cRLoc); SWIFT_NAME( @@ -1232,7 +1233,7 @@ SWIFT_NAME("BridgedDictionaryExpr.createParsed(_:lBracketLoc:elements:" "colonLocs:rBracketLoc:)") BridgedDictionaryExpr BridgedDictionaryExpr_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLBracketLoc, - BridgedArrayRef cElements, BridgedArrayRef cCommaLocs, + BridgedErasedArrayRef cElements, BridgedErasedArrayRef cCommaLocs, BridgedSourceLoc cRBracketLoc); SWIFT_NAME("BridgedDiscardAssignmentExpr.createParsed(_:loc:)") @@ -1309,8 +1310,9 @@ BridgedPrefixUnaryExpr_createParsed(BridgedASTContext cContext, BridgedExpr oper, BridgedExpr operand); SWIFT_NAME("BridgedSequenceExpr.createParsed(_:exprs:)") -BridgedSequenceExpr BridgedSequenceExpr_createParsed(BridgedASTContext cContext, - BridgedArrayRef exprs); +BridgedSequenceExpr +BridgedSequenceExpr_createParsed(BridgedASTContext cContext, + BridgedErasedArrayRef exprs); SWIFT_NAME("BridgedSingleValueStmtExpr.createWithWrappedBranches(_:stmt:" "declContext:mustBeExpr:)") @@ -1340,9 +1342,12 @@ BridgedTryExpr BridgedTryExpr_createParsed(BridgedASTContext cContext, SWIFT_NAME("BridgedTupleExpr.createParsed(_:leftParenLoc:exprs:labels:" "labelLocs:rightParenLoc:)") -BridgedTupleExpr BridgedTupleExpr_createParsed( - BridgedASTContext cContext, BridgedSourceLoc cLParen, BridgedArrayRef subs, - BridgedArrayRef names, BridgedArrayRef cNameLocs, BridgedSourceLoc cRParen); +BridgedTupleExpr BridgedTupleExpr_createParsed(BridgedASTContext cContext, + BridgedSourceLoc cLParen, + BridgedErasedArrayRef subs, + BridgedErasedArrayRef names, + BridgedErasedArrayRef cNameLocs, + BridgedSourceLoc cRParen); SWIFT_NAME("BridgedTupleExpr.createParsedDictionaryElement(_:key:value:)") BridgedTupleExpr BridgedTupleExpr_createParsedDictionaryElement( @@ -1440,7 +1445,7 @@ struct BridgedCaseLabelItemInfo { SWIFT_NAME("BridgedBraceStmt.createParsed(_:lBraceLoc:elements:rBraceLoc:)") BridgedBraceStmt BridgedBraceStmt_createParsed(BridgedASTContext cContext, BridgedSourceLoc cLBLoc, - BridgedArrayRef elements, + BridgedErasedArrayRef elements, BridgedSourceLoc cRBLoc); SWIFT_NAME("BridgedBreakStmt.createParsed(_:loc:targetName:targetLoc:)") @@ -1453,14 +1458,14 @@ SWIFT_NAME("BridgedCaseStmt.createParsedSwitchCase(_:introducerLoc:" "caseLabelItems:unknownAttrLoc:terminatorLoc:body:)") BridgedCaseStmt BridgedCaseStmt_createParsedSwitchCase( BridgedASTContext cContext, BridgedSourceLoc cIntroducerLoc, - BridgedArrayRef cCaseLabelItems, BridgedSourceLoc cUnknownAttrLoc, + BridgedErasedArrayRef cCaseLabelItems, BridgedSourceLoc cUnknownAttrLoc, BridgedSourceLoc cTerminatorLoc, BridgedBraceStmt cBody); SWIFT_NAME( "BridgedCaseStmt.createParsedDoCatch(_:catchLoc:caseLabelItems:body:)") BridgedCaseStmt BridgedCaseStmt_createParsedDoCatch( BridgedASTContext cContext, BridgedSourceLoc cCatchLoc, - BridgedArrayRef cCaseLabelItems, BridgedBraceStmt cBody); + BridgedErasedArrayRef cCaseLabelItems, BridgedBraceStmt cBody); SWIFT_NAME("BridgedContinueStmt.createParsed(_:loc:targetName:targetLoc:)") BridgedContinueStmt BridgedContinueStmt_createParsed( @@ -1492,7 +1497,7 @@ BridgedDoCatchStmt BridgedDoCatchStmt_createParsed( BridgedDeclContext cDeclContext, BridgedLabeledStmtInfo cLabelInfo, BridgedSourceLoc cDoLoc, BridgedSourceLoc cThrowsLoc, BridgedNullableTypeRepr cThrownType, BridgedStmt cBody, - BridgedArrayRef cCatches); + BridgedErasedArrayRef cCatches); SWIFT_NAME("BridgedFallthroughStmt.createParsed(loc:declContext:)") BridgedFallthroughStmt @@ -1511,15 +1516,18 @@ BridgedForEachStmt BridgedForEachStmt_createParsed( SWIFT_NAME("BridgedGuardStmt.createParsed(_:guardLoc:conds:body:)") BridgedGuardStmt BridgedGuardStmt_createParsed(BridgedASTContext cContext, BridgedSourceLoc cGuardLoc, - BridgedArrayRef cConds, + BridgedErasedArrayRef cConds, BridgedBraceStmt cBody); SWIFT_NAME("BridgedIfStmt.createParsed(_:labelInfo:ifLoc:conditions:then:" "elseLoc:else:)") -BridgedIfStmt BridgedIfStmt_createParsed( - BridgedASTContext cContext, BridgedLabeledStmtInfo cLabelInfo, - BridgedSourceLoc cIfLoc, BridgedArrayRef cConds, BridgedBraceStmt cThen, - BridgedSourceLoc cElseLoc, BridgedNullableStmt cElse); +BridgedIfStmt BridgedIfStmt_createParsed(BridgedASTContext cContext, + BridgedLabeledStmtInfo cLabelInfo, + BridgedSourceLoc cIfLoc, + BridgedErasedArrayRef cConds, + BridgedBraceStmt cThen, + BridgedSourceLoc cElseLoc, + BridgedNullableStmt cElse); SWIFT_NAME("BridgedRepeatWhileStmt.createParsed(_:labelInfo:repeatLoc:cond:" "whileLoc:body:)") @@ -1538,7 +1546,7 @@ SWIFT_NAME("BridgedSwitchStmt.createParsed(_:labelInfo:switchLoc:subjectExpr:" BridgedSwitchStmt BridgedSwitchStmt_createParsed( BridgedASTContext cContext, BridgedLabeledStmtInfo cLabelInfo, BridgedSourceLoc cSwitchLoc, BridgedExpr cSubjectExpr, - BridgedSourceLoc cLBraceLoc, BridgedArrayRef cCases, + BridgedSourceLoc cLBraceLoc, BridgedErasedArrayRef cCases, BridgedSourceLoc cRBraceLoc); SWIFT_NAME("BridgedThenStmt.createParsed(_:thenLoc:result:)") @@ -1554,14 +1562,14 @@ BridgedThrowStmt BridgedThrowStmt_createParsed(BridgedASTContext cContext, SWIFT_NAME("BridgedWhileStmt.createParsed(_:labelInfo:whileLoc:cond:body:)") BridgedWhileStmt BridgedWhileStmt_createParsed( BridgedASTContext cContext, BridgedLabeledStmtInfo cLabelInfo, - BridgedSourceLoc cWhileLoc, BridgedArrayRef cCond, BridgedStmt cBody); + BridgedSourceLoc cWhileLoc, BridgedErasedArrayRef cCond, BridgedStmt cBody); SWIFT_NAME( "BridgedYieldStmt.createParsed(_:yieldLoc:lParenLoc:yields:rParenLoc:)") BridgedYieldStmt BridgedYieldStmt_createParsed(BridgedASTContext cContext, BridgedSourceLoc cYieldLoc, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cYields, + BridgedErasedArrayRef cYields, BridgedSourceLoc cRParenLoc); SWIFT_NAME("BridgedStmt.dump(self:)") @@ -1657,7 +1665,7 @@ BridgedCompositionTypeRepr_createEmpty(BridgedASTContext cContext, SWIFT_NAME("BridgedCompositionTypeRepr.createParsed(_:types:ampersandLoc:)") BridgedCompositionTypeRepr BridgedCompositionTypeRepr_createParsed(BridgedASTContext cContext, - BridgedArrayRef types, + BridgedErasedArrayRef types, BridgedSourceLoc cFirstAmpLoc); SWIFT_NAME("BridgedDictionaryTypeRepr.createParsed(_:leftSquareLoc:keyType:" @@ -1679,7 +1687,7 @@ SWIFT_NAME("BridgedUnqualifiedIdentTypeRepr.createParsed(_:name:nameLoc:" "genericArgs:leftAngleLoc:rightAngleLoc:)") BridgedUnqualifiedIdentTypeRepr BridgedUnqualifiedIdentTypeRepr_createParsed( BridgedASTContext cContext, BridgedIdentifier name, - BridgedSourceLoc cNameLoc, BridgedArrayRef genericArgs, + BridgedSourceLoc cNameLoc, BridgedErasedArrayRef genericArgs, BridgedSourceLoc cLAngleLoc, BridgedSourceLoc cRAngleLoc); SWIFT_NAME("BridgedOptionalTypeRepr.createParsed(_:base:questionLoc:)") @@ -1704,7 +1712,7 @@ BridgedInverseTypeRepr_createParsed(BridgedASTContext cContext, SWIFT_NAME("BridgedDeclRefTypeRepr.createParsed(_:base:name:nameLoc:genericArguments:angleRange:)") BridgedDeclRefTypeRepr BridgedDeclRefTypeRepr_createParsed( BridgedASTContext cContext, BridgedTypeRepr cBase, BridgedIdentifier cName, - BridgedSourceLoc cLoc, BridgedArrayRef cGenericArguments, + BridgedSourceLoc cLoc, BridgedErasedArrayRef cGenericArguments, BridgedSourceRange cAngleRange); SWIFT_NAME("BridgedMetatypeTypeRepr.createParsed(_:base:typeKeywordLoc:)") @@ -1735,7 +1743,7 @@ BridgedPackExpansionTypeRepr_createParsed(BridgedASTContext cContext, SWIFT_NAME( "BridgedTupleTypeRepr.createParsed(_:elements:leftParenLoc:rightParenLoc:)") BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed( - BridgedASTContext cContext, BridgedArrayRef elements, + BridgedASTContext cContext, BridgedErasedArrayRef elements, BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc); SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)") @@ -1817,7 +1825,7 @@ struct BridgedTuplePatternElt { SWIFT_NAME("BridgedTuplePattern.createParsed(_:lParenLoc:elements:rParenLoc:)") BridgedTuplePattern BridgedTuplePattern_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cElements, BridgedSourceLoc cRParenLoc); + BridgedErasedArrayRef cElements, BridgedSourceLoc cRParenLoc); SWIFT_NAME("BridgedTypedPattern.createParsed(_:pattern:type:)") BridgedTypedPattern BridgedTypedPattern_createParsed(BridgedASTContext cContext, @@ -1900,7 +1908,7 @@ SWIFT_NAME("BridgedGenericParamList.createParsed(_:leftAngleLoc:parameters:" "genericWhereClause:rightAngleLoc:)") BridgedGenericParamList BridgedGenericParamList_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLeftAngleLoc, - BridgedArrayRef cParameters, + BridgedErasedArrayRef cParameters, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceLoc cRightAngleLoc); @@ -1918,13 +1926,13 @@ SWIFT_NAME( BridgedTrailingWhereClause BridgedTrailingWhereClause_createParsed(BridgedASTContext cContext, BridgedSourceLoc cWhereKeywordLoc, - BridgedArrayRef cRequirements); + BridgedErasedArrayRef cRequirements); SWIFT_NAME("BridgedParameterList.createParsed(_:leftParenLoc:parameters:" "rightParenLoc:)") BridgedParameterList BridgedParameterList_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLeftParenLoc, - BridgedArrayRef cParameters, BridgedSourceLoc cRightParenLoc); + BridgedErasedArrayRef cParameters, BridgedSourceLoc cRightParenLoc); //===----------------------------------------------------------------------===// // MARK: #if handling diff --git a/include/swift/Basic/BasicBridging.h b/include/swift/Basic/BasicBridging.h index 046b72b71239b..843889fbc25f3 100644 --- a/include/swift/Basic/BasicBridging.h +++ b/include/swift/Basic/BasicBridging.h @@ -114,7 +114,7 @@ void assertFail(const char * _Nonnull msg, const char * _Nonnull file, // MARK: ArrayRef //===----------------------------------------------------------------------===// -class BridgedArrayRef { +class BridgedErasedArrayRef { public: SWIFT_UNAVAILABLE("Use '.data' instead") const void *_Nullable Data; @@ -122,15 +122,15 @@ class BridgedArrayRef { SWIFT_UNAVAILABLE("Use '.count' instead") size_t Length; - BridgedArrayRef() : Data(nullptr), Length(0) {} + BridgedErasedArrayRef() : Data(nullptr), Length(0) {} SWIFT_NAME("init(data:count:)") - BridgedArrayRef(const void *_Nullable data, size_t length) + BridgedErasedArrayRef(const void *_Nullable data, size_t length) : Data(data), Length(length) {} #ifdef USED_IN_CPP_SOURCE template - BridgedArrayRef(llvm::ArrayRef arr) + BridgedErasedArrayRef(llvm::ArrayRef arr) : Data(arr.data()), Length(arr.size()) {} template @@ -140,12 +140,65 @@ class BridgedArrayRef { #endif }; -SWIFT_NAME("getter:BridgedArrayRef.data(self:)") +SWIFT_NAME("getter:BridgedErasedArrayRef.data(self:)") BRIDGED_INLINE -const void *_Nullable BridgedArrayRef_data(BridgedArrayRef arr); +const void *_Nullable BridgedErasedArrayRef_data(BridgedErasedArrayRef arr); + +SWIFT_NAME("getter:BridgedErasedArrayRef.count(self:)") +BRIDGED_INLINE SwiftInt BridgedErasedArrayRef_count(BridgedErasedArrayRef arr); + + +/// Bridgable wrapper for 'llvm::ArrayRef'. +template +class BridgedArrayRef { +public: + // Seemingly needed for Swift-side conformance. + using Element = _Element; + + SWIFT_UNAVAILABLE("Use '.data' instead") + const void *_Nullable Data; + + SWIFT_UNAVAILABLE("Use '.count' instead") + size_t Length; + + SWIFT_NAME("init(data:count:)") + BridgedArrayRef(const Element *_Nullable data, SwiftInt length) + : Data(data), Length(length) {} +#ifdef USED_IN_CPP_SOURCE + using ArrRefTy = llvm::ArrayRef; + + BridgedArrayRef(ArrRefTy arrRef) + : Data(arrRef.data()), Length(arrRef.size()) {} + + using iterator = typename ArrRefTy::iterator; + iterator begin() const { return unbridged().begin(); } + iterator end() const { return unbridged().end(); } + + ArrRefTy unbridged() const { + return ArrRefTy(static_cast(Data), Length); + } +#endif + + bool empty() const { return Length == 0; } + +} +#ifdef IMPORTING_INTO_ASTGEN +__attribute__((swift_attr("conforms_to:swiftASTGen.BridgedArrayRefProtocol"))) +#endif +; + +template +SWIFT_NAME("getter:BridgedArrayRef.data(self:)") +inline const void *_Nullable BridgedArrayRef_data(BridgedArrayRef arr) { + return arr.Data; +} + +template SWIFT_NAME("getter:BridgedArrayRef.count(self:)") -BRIDGED_INLINE SwiftInt BridgedArrayRef_count(BridgedArrayRef arr); +inline SwiftInt BridgedArrayRef_count(BridgedArrayRef arr) { + return arr.Length; +} //===----------------------------------------------------------------------===// // MARK: Data diff --git a/include/swift/Basic/BasicBridgingImpl.h b/include/swift/Basic/BasicBridgingImpl.h index dfa730deb5ea3..58c8b8686d6ce 100644 --- a/include/swift/Basic/BasicBridgingImpl.h +++ b/include/swift/Basic/BasicBridgingImpl.h @@ -16,14 +16,14 @@ SWIFT_BEGIN_NULLABILITY_ANNOTATIONS //===----------------------------------------------------------------------===// -// MARK: BridgedArrayRef +// MARK: BridgedErasedArrayRef //===----------------------------------------------------------------------===// -const void *_Nullable BridgedArrayRef_data(BridgedArrayRef arr) { +const void *_Nullable BridgedErasedArrayRef_data(BridgedErasedArrayRef arr) { return arr.Data; } -SwiftInt BridgedArrayRef_count(BridgedArrayRef arr) { +SwiftInt BridgedErasedArrayRef_count(BridgedErasedArrayRef arr) { return static_cast(arr.Length); } diff --git a/include/swift/SIL/SILBridging.h b/include/swift/SIL/SILBridging.h index ccad1a58aa0a6..37481edd661fb 100644 --- a/include/swift/SIL/SILBridging.h +++ b/include/swift/SIL/SILBridging.h @@ -112,7 +112,7 @@ struct OptionalBridgedResultInfo { }; struct BridgedResultInfoArray { - BridgedArrayRef resultInfoArray; + BridgedErasedArrayRef resultInfoArray; #ifdef USED_IN_CPP_SOURCE BridgedResultInfoArray(llvm::ArrayRef results) @@ -215,7 +215,7 @@ struct BridgedParameterInfo { }; struct BridgedParameterInfoArray { - BridgedArrayRef parameterInfoArray; + BridgedErasedArrayRef parameterInfoArray; #ifdef USED_IN_CPP_SOURCE BridgedParameterInfoArray(llvm::ArrayRef parameters) @@ -233,7 +233,7 @@ struct BridgedParameterInfoArray { }; struct BridgedYieldInfoArray { - BridgedArrayRef yieldInfoArray; + BridgedErasedArrayRef yieldInfoArray; #ifdef USED_IN_CPP_SOURCE BridgedYieldInfoArray(llvm::ArrayRef yields) @@ -271,7 +271,7 @@ struct BridgedLifetimeDependenceInfo { }; struct BridgedLifetimeDependenceInfoArray { - BridgedArrayRef lifetimeDependenceInfoArray; + BridgedErasedArrayRef lifetimeDependenceInfoArray; #ifdef USED_IN_CPP_SOURCE BridgedLifetimeDependenceInfoArray( @@ -704,10 +704,9 @@ struct BridgedFunction { typedef void (* _Nonnull RegisterFn)(BridgedFunction f, void * _Nonnull data, SwiftInt size); typedef void (* _Nonnull WriteFn)(BridgedFunction, BridgedOStream, SwiftInt); - typedef ParsingError (*_Nonnull ParseFn)(BridgedFunction, - BridgedStringRef, + typedef ParsingError (*_Nonnull ParseFn)(BridgedFunction, BridgedStringRef, ParseEffectsMode, SwiftInt, - BridgedArrayRef); + BridgedErasedArrayRef); typedef SwiftInt (* _Nonnull CopyEffectsFn)(BridgedFunction, BridgedFunction); typedef EffectInfo (* _Nonnull GetEffectInfoFn)(BridgedFunction, SwiftInt); typedef BridgedMemoryBehavior (* _Nonnull GetMemBehaviorFn)(BridgedFunction, bool); @@ -778,7 +777,7 @@ struct BridgedSubstitutionMap { }; struct BridgedTypeArray { - BridgedArrayRef typeArray; + BridgedErasedArrayRef typeArray; // Ensure that this struct value type will be indirectly returned on // Windows ARM64, @@ -802,7 +801,7 @@ struct BridgedTypeArray { }; struct BridgedSILTypeArray { - BridgedArrayRef typeArray; + BridgedErasedArrayRef typeArray; #ifdef USED_IN_CPP_SOURCE BridgedSILTypeArray(llvm::ArrayRef silTypes) diff --git a/include/swift/SILOptimizer/OptimizerBridging.h b/include/swift/SILOptimizer/OptimizerBridging.h index 5d451cd7e5315..e23bd36dbb79a 100644 --- a/include/swift/SILOptimizer/OptimizerBridging.h +++ b/include/swift/SILOptimizer/OptimizerBridging.h @@ -140,7 +140,8 @@ struct BridgedPostDomTree { struct BridgedUtilities { typedef void (* _Nonnull VerifyFunctionFn)(BridgedPassContext, BridgedFunction); typedef void (* _Nonnull UpdateBorrowedFromFn)(BridgedPassContext, BridgedFunction); - typedef void (* _Nonnull UpdateBorrowedFromPhisFn)(BridgedPassContext, BridgedArrayRef); + typedef void (*_Nonnull UpdateBorrowedFromPhisFn)(BridgedPassContext, + BridgedErasedArrayRef); static void registerVerifier(VerifyFunctionFn verifyFunctionFn); static void registerBorrowedFromUpdater(UpdateBorrowedFromFn updateBorrowedFromFn, @@ -257,9 +258,10 @@ struct BridgedPassContext { BridgedOwnedString mangleWithDeadArgs(const SwiftInt * _Nullable deadArgs, SwiftInt numDeadArgs, BridgedFunction function) const; - BridgedOwnedString mangleWithClosureArgs(BridgedValueArray closureArgs, - BridgedArrayRef closureArgIndices, - BridgedFunction applySiteCallee) const; + BridgedOwnedString + mangleWithClosureArgs(BridgedValueArray closureArgs, + BridgedErasedArrayRef closureArgIndices, + BridgedFunction applySiteCallee) const; SWIFT_IMPORT_UNSAFE BridgedGlobalVar createGlobalVariable(BridgedStringRef name, BridgedType type, bool isPrivate) const; diff --git a/lib/AST/ASTBridging.cpp b/lib/AST/ASTBridging.cpp index 52c443973c307..84267ad108d29 100644 --- a/lib/AST/ASTBridging.cpp +++ b/lib/AST/ASTBridging.cpp @@ -70,10 +70,10 @@ BridgedDeclBaseName_createIdentifier(BridgedIdentifier identifier) { BridgedDeclNameRef BridgedDeclNameRef_createParsed(BridgedASTContext cContext, BridgedDeclBaseName cBaseName, - BridgedArrayRef cLabels) { + BridgedArrayRef cLabels) { ASTContext &context = cContext.unbridged(); SmallVector labels; - for (auto &cLabel : cLabels.unbridged()) { + for (auto &cLabel : cLabels) { labels.push_back(cLabel.unbridged()); } return DeclNameRef(DeclName(context, cBaseName.unbridged(), labels)); @@ -86,12 +86,12 @@ BridgedDeclNameRef_createParsed(BridgedDeclBaseName cBaseName) { BridgedDeclNameLoc BridgedDeclNameLoc_createParsed( BridgedASTContext cContext, BridgedSourceLoc cBaseNameLoc, - BridgedSourceLoc cLParenLoc, BridgedArrayRef cLabelLocs, + BridgedSourceLoc cLParenLoc, BridgedArrayRef cLabelLocs, BridgedSourceLoc cRParenLoc) { ASTContext &context = cContext.unbridged(); SmallVector labelLocs; - for (auto &cLabelLoc : cLabelLocs.unbridged()) + for (auto &cLabelLoc : cLabelLocs) labelLocs.push_back(cLabelLoc.unbridged()); return DeclNameLoc(context, cBaseNameLoc.unbridged(), cLParenLoc.unbridged(), @@ -339,12 +339,13 @@ BridgedDiagnosticFixIt::BridgedDiagnosticFixIt(BridgedSourceLoc start, CharSourceRange(start.unbridged(), length), text.unbridged(), llvm::ArrayRef())) {} -void BridgedDiagnosticEngine_diagnose( - BridgedDiagnosticEngine bridgedEngine, BridgedSourceLoc loc, - BridgedDiagID bridgedDiagID, - BridgedArrayRef /*BridgedDiagnosticArgument*/ bridgedArguments, - BridgedSourceLoc highlightStart, uint32_t hightlightLength, - BridgedArrayRef /*BridgedDiagnosticFixIt*/ bridgedFixIts) { +void BridgedDiagnosticEngine_diagnose(BridgedDiagnosticEngine bridgedEngine, + BridgedSourceLoc loc, + BridgedDiagID bridgedDiagID, + BridgedErasedArrayRef bridgedArguments, + BridgedSourceLoc highlightStart, + uint32_t hightlightLength, + BridgedErasedArrayRef bridgedFixIts) { auto *D = bridgedEngine.unbridged(); auto diagID = static_cast(bridgedDiagID); @@ -563,13 +564,12 @@ BridgedAlignmentAttr_createParsed(BridgedASTContext cContext, } BridgedAllowFeatureSuppressionAttr -BridgedAllowFeatureSuppressionAttr_createParsed(BridgedASTContext cContext, - BridgedSourceLoc cAtLoc, - BridgedSourceRange cRange, - bool inverted, - BridgedArrayRef cFeatures) { +BridgedAllowFeatureSuppressionAttr_createParsed( + BridgedASTContext cContext, BridgedSourceLoc cAtLoc, + BridgedSourceRange cRange, bool inverted, + BridgedArrayRef cFeatures) { SmallVector features; - for (auto elem : cFeatures.unbridged()) + for (auto elem : cFeatures) features.push_back(elem.unbridged()); return AllowFeatureSuppressionAttr::create( cContext.unbridged(), cAtLoc.unbridged(), cRange.unbridged(), @@ -779,13 +779,13 @@ BridgedObjCAttr BridgedObjCAttr_createParsedNullary( BridgedObjCAttr BridgedObjCAttr_createParsedSelector( BridgedASTContext cContext, BridgedSourceLoc cAtLoc, BridgedSourceLoc cAttrNameLoc, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cNameLocs, BridgedArrayRef cNames, - BridgedSourceLoc cRParenLoc) { + BridgedArrayRef cNameLocs, + BridgedArrayRef cNames, BridgedSourceLoc cRParenLoc) { SmallVector nameLocs; - for (auto elem : cNameLocs.unbridged()) + for (auto elem : cNameLocs) nameLocs.push_back(elem.unbridged()); SmallVector names; - for (auto elem : cNames.unbridged()) + for (auto elem : cNames) names.push_back(elem.unbridged()); return ObjCAttr::createSelector( @@ -938,15 +938,16 @@ BridgedAccessorDecl BridgedAccessorDecl_createParsed( BridgedPatternBindingDecl BridgedPatternBindingDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, - BridgedSourceLoc cBindingKeywordLoc, BridgedArrayRef cBindingEntries, - bool isStatic, bool isLet) { + BridgedSourceLoc cBindingKeywordLoc, + BridgedArrayRef cBindingEntries, bool isStatic, + bool isLet) { ASTContext &context = cContext.unbridged(); DeclContext *declContext = cDeclContext.unbridged(); auto introducer = isLet ? VarDecl::Introducer::Let : VarDecl::Introducer::Var; SmallVector entries; - for (auto &entry : cBindingEntries.unbridged()) { + for (auto &entry : cBindingEntries) { auto *pattern = entry.pattern.unbridged(); // Configure all vars. @@ -1127,11 +1128,12 @@ BridgedTypeAliasDecl BridgedTypeAliasDecl_createParsed( } static void setParsedMembers(IterableDeclContext *IDC, - BridgedArrayRef bridgedMembers) { + BridgedArrayRef bridgedMembers) { auto &ctx = IDC->getDecl()->getASTContext(); SmallVector members; - for (auto *decl : bridgedMembers.unbridged()) { + for (auto cDecl : bridgedMembers) { + auto *decl = cDecl.unbridged(); members.push_back(decl); // Add any variables bound to the list of decls. @@ -1156,20 +1158,23 @@ static void setParsedMembers(IterableDeclContext *IDC, FingerprintAndMembers{std::nullopt, ctx.AllocateCopy(members)}); } -void BridgedNominalTypeDecl_setParsedMembers(BridgedNominalTypeDecl bridgedDecl, - BridgedArrayRef bridgedMembers) { +void BridgedNominalTypeDecl_setParsedMembers( + BridgedNominalTypeDecl bridgedDecl, + BridgedArrayRef bridgedMembers) { setParsedMembers(bridgedDecl.unbridged(), bridgedMembers); } -void BridgedExtensionDecl_setParsedMembers(BridgedExtensionDecl bridgedDecl, - BridgedArrayRef bridgedMembers) { +void BridgedExtensionDecl_setParsedMembers( + BridgedExtensionDecl bridgedDecl, + BridgedArrayRef bridgedMembers) { setParsedMembers(bridgedDecl.unbridged(), bridgedMembers); } static ArrayRef -convertToInheritedEntries(ASTContext &ctx, BridgedArrayRef cInheritedTypes) { +convertToInheritedEntries(ASTContext &ctx, + BridgedArrayRef cInheritedTypes) { return ctx.AllocateTransform( - cInheritedTypes.unbridged(), + cInheritedTypes.unbridged(), [](auto &e) { return InheritedEntry(e.unbridged()); }); } @@ -1177,7 +1182,7 @@ BridgedNominalTypeDecl BridgedEnumDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cEnumKeywordLoc, BridgedIdentifier cName, BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange) { ASTContext &context = cContext.unbridged(); @@ -1192,12 +1197,14 @@ BridgedNominalTypeDecl BridgedEnumDecl_createParsed( return decl; } -BridgedEnumCaseDecl -BridgedEnumCaseDecl_createParsed(BridgedDeclContext cDeclContext, - BridgedSourceLoc cCaseKeywordLoc, - BridgedArrayRef cElements) { - return EnumCaseDecl::create(cCaseKeywordLoc.unbridged(), - cElements.unbridged(), +BridgedEnumCaseDecl BridgedEnumCaseDecl_createParsed( + BridgedDeclContext cDeclContext, BridgedSourceLoc cCaseKeywordLoc, + BridgedArrayRef cElements) { + SmallVector elements; + for (auto elt : cElements) + elements.push_back(elt.unbridged()); + + return EnumCaseDecl::create(cCaseKeywordLoc.unbridged(), elements, cDeclContext.unbridged()); } @@ -1229,7 +1236,7 @@ BridgedNominalTypeDecl BridgedStructDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cStructKeywordLoc, BridgedIdentifier cName, BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange) { ASTContext &context = cContext.unbridged(); @@ -1248,7 +1255,7 @@ BridgedNominalTypeDecl BridgedClassDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cClassKeywordLoc, BridgedIdentifier cName, BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList genericParamList, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange, bool isActor) { ASTContext &context = cContext.unbridged(); @@ -1266,15 +1273,16 @@ BridgedNominalTypeDecl BridgedClassDecl_createParsed( BridgedNominalTypeDecl BridgedProtocolDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cProtocolKeywordLoc, BridgedIdentifier cName, - BridgedSourceLoc cNameLoc, BridgedArrayRef cPrimaryAssociatedTypeNames, - BridgedArrayRef cInheritedTypes, + BridgedSourceLoc cNameLoc, + BridgedArrayRef cPrimaryAssociatedTypeNames, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange) { ASTContext &context = cContext.unbridged(); auto primaryAssociatedTypeNames = context.AllocateTransform( - cPrimaryAssociatedTypeNames.unbridged(), + cPrimaryAssociatedTypeNames.unbridged(), [](auto &e) -> PrimaryAssociatedTypeName { return {e.Name.unbridged(), e.NameLoc.unbridged()}; }); @@ -1292,7 +1300,7 @@ BridgedNominalTypeDecl BridgedProtocolDecl_createParsed( BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cAssociatedtypeKeywordLoc, BridgedIdentifier cName, - BridgedSourceLoc cNameLoc, BridgedArrayRef cInheritedTypes, + BridgedSourceLoc cNameLoc, BridgedArrayRef cInheritedTypes, BridgedNullableTypeRepr defaultType, BridgedNullableTrailingWhereClause genericWhereClause) { ASTContext &context = cContext.unbridged(); @@ -1309,7 +1317,7 @@ BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed( BridgedExtensionDecl BridgedExtensionDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cExtensionKeywordLoc, BridgedTypeRepr extendedType, - BridgedArrayRef cInheritedTypes, + BridgedArrayRef cInheritedTypes, BridgedNullableTrailingWhereClause genericWhereClause, BridgedSourceRange cBraceRange) { ASTContext &context = cContext.unbridged(); @@ -1368,18 +1376,20 @@ BridgedPrecedenceGroupDecl BridgedPrecedenceGroupDecl_createParsed( BridgedSourceLoc cAssociativityValueLoc, BridgedAssociativity cAssociativity, BridgedSourceLoc cAssignmentKeywordLoc, BridgedSourceLoc cAssignmentValueLoc, bool isAssignment, - BridgedSourceLoc cHigherThanKeywordLoc, BridgedArrayRef cHigherThanNames, - BridgedSourceLoc cLowerThanKeywordLoc, BridgedArrayRef cLowerThanNames, + BridgedSourceLoc cHigherThanKeywordLoc, + BridgedArrayRef cHigherThanNames, + BridgedSourceLoc cLowerThanKeywordLoc, + BridgedArrayRef cLowerThanNames, BridgedSourceLoc cRightBraceLoc) { SmallVector higherThanNames; - for (auto &pair : cHigherThanNames.unbridged()) { + for (auto &pair : cHigherThanNames) { higherThanNames.push_back( {pair.NameLoc.unbridged(), pair.Name.unbridged(), nullptr}); } SmallVector lowerThanNames; - for (auto &pair : cLowerThanNames.unbridged()) { + for (auto &pair : cLowerThanNames) { lowerThanNames.push_back( {pair.NameLoc.unbridged(), pair.Name.unbridged(), nullptr}); } @@ -1398,10 +1408,10 @@ BridgedPrecedenceGroupDecl BridgedPrecedenceGroupDecl_createParsed( BridgedImportDecl BridgedImportDecl_createParsed( BridgedASTContext cContext, BridgedDeclContext cDeclContext, BridgedSourceLoc cImportKeywordLoc, BridgedImportKind cImportKind, - BridgedSourceLoc cImportKindLoc, BridgedArrayRef cImportPathElements) { + BridgedSourceLoc cImportKindLoc, + BridgedArrayRef cImportPathElements) { ImportPath::Builder builder; - for (auto &element : - cImportPathElements.unbridged()) { + for (auto &element : cImportPathElements) { builder.push_back(element.Name.unbridged(), element.NameLoc.unbridged()); } @@ -1466,10 +1476,12 @@ BridgedVarDecl BridgedVarDec_createImplicitStringInterpolationVar( void BridgedAbstractStorageDecl_setAccessors( BridgedAbstractStorageDecl cStorage, BridgedAccessorRecord accessors) { - cStorage.unbridged()->setAccessors( - accessors.lBraceLoc.unbridged(), - accessors.accessors.unbridged(), - accessors.rBraceLoc.unbridged()); + SmallVector decls; + for (auto cDecl : accessors.accessors) + decls.push_back(cDecl.unbridged()); + + cStorage.unbridged()->setAccessors(accessors.lBraceLoc.unbridged(), decls, + accessors.rBraceLoc.unbridged()); } //===----------------------------------------------------------------------===// @@ -1498,20 +1510,21 @@ bool BridgedNominalTypeDecl_isStructWithUnreferenceableStorage( // MARK: Exprs //===----------------------------------------------------------------------===// -BridgedArgumentList -BridgedArgumentList_createImplicitUnlabeled(BridgedASTContext cContext, - BridgedArrayRef cExprs) { - return ArgumentList::forImplicitUnlabeled(cContext.unbridged(), - cExprs.unbridged()); +BridgedArgumentList BridgedArgumentList_createImplicitUnlabeled( + BridgedASTContext cContext, BridgedArrayRef cExprs) { + SmallVector exprs; + for (auto cExpr : cExprs) + exprs.push_back(cExpr.unbridged()); + return ArgumentList::forImplicitUnlabeled(cContext.unbridged(), exprs); } BridgedArgumentList BridgedArgumentList_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cArgs, BridgedSourceLoc cRParenLoc, + BridgedArrayRef cArgs, BridgedSourceLoc cRParenLoc, size_t cFirstTrailingClosureIndex) { SmallVector arguments; - arguments.reserve(cArgs.unbridged().size()); - for (auto &arg : cArgs.unbridged()) { + arguments.reserve(cArgs.unbridged().size()); + for (auto &arg : cArgs) { arguments.push_back(arg.unbridged()); } @@ -1526,8 +1539,8 @@ BridgedArgumentList BridgedArgumentList_createParsed( BridgedArrayExpr BridgedArrayExpr_createParsed(BridgedASTContext cContext, BridgedSourceLoc cLLoc, - BridgedArrayRef elements, - BridgedArrayRef commas, + BridgedErasedArrayRef elements, + BridgedErasedArrayRef commas, BridgedSourceLoc cRLoc) { ASTContext &context = cContext.unbridged(); return ArrayExpr::create(context, cLLoc.unbridged(), @@ -1641,7 +1654,7 @@ BridgedDeclRefExpr BridgedDeclRefExpr_create(BridgedASTContext cContext, BridgedDictionaryExpr BridgedDictionaryExpr_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLBracketLoc, - BridgedArrayRef cElements, BridgedArrayRef cCommaLocs, + BridgedErasedArrayRef cElements, BridgedErasedArrayRef cCommaLocs, BridgedSourceLoc cRBracketLoc) { return DictionaryExpr::create(cContext.unbridged(), cLBracketLoc.unbridged(), cElements.unbridged(), @@ -1750,8 +1763,9 @@ BridgedPrefixUnaryExpr_createParsed(BridgedASTContext cContext, operand.unbridged()); } -BridgedSequenceExpr BridgedSequenceExpr_createParsed(BridgedASTContext cContext, - BridgedArrayRef exprs) { +BridgedSequenceExpr +BridgedSequenceExpr_createParsed(BridgedASTContext cContext, + BridgedErasedArrayRef exprs) { return SequenceExpr::create(cContext.unbridged(), exprs.unbridged()); } @@ -1794,9 +1808,9 @@ BridgedTryExpr BridgedTryExpr_createParsed(BridgedASTContext cContext, BridgedTupleExpr BridgedTupleExpr_createParsed(BridgedASTContext cContext, BridgedSourceLoc cLParen, - BridgedArrayRef subs, - BridgedArrayRef names, - BridgedArrayRef cNameLocs, + BridgedErasedArrayRef subs, + BridgedErasedArrayRef names, + BridgedErasedArrayRef cNameLocs, BridgedSourceLoc cRParen) { ASTContext &context = cContext.unbridged(); return TupleExpr::create( @@ -1886,7 +1900,7 @@ BridgedStmtConditionElement BridgedStmtConditionElement_createPatternBinding( BridgedBraceStmt BridgedBraceStmt_createParsed(BridgedASTContext cContext, BridgedSourceLoc cLBLoc, - BridgedArrayRef elements, + BridgedErasedArrayRef elements, BridgedSourceLoc cRBLoc) { llvm::SmallVector nodes; for (auto node : elements.unbridged()) { @@ -1926,7 +1940,7 @@ BridgedBreakStmt BridgedBreakStmt_createParsed(BridgedDeclContext cDeclContext, cTargetLoc.unbridged(), cDeclContext.unbridged()); } -void getCaseLabelItems(BridgedArrayRef cItems, +void getCaseLabelItems(BridgedErasedArrayRef cItems, SmallVectorImpl &output) { for (auto &elem : cItems.unbridged()) { if (!elem.IsDefault) { @@ -1943,7 +1957,7 @@ void getCaseLabelItems(BridgedArrayRef cItems, BridgedCaseStmt BridgedCaseStmt_createParsedSwitchCase( BridgedASTContext cContext, BridgedSourceLoc cIntroducerLoc, - BridgedArrayRef cCaseLabelItems, BridgedSourceLoc cUnknownAttrLoc, + BridgedErasedArrayRef cCaseLabelItems, BridgedSourceLoc cUnknownAttrLoc, BridgedSourceLoc cTerminatorLoc, BridgedBraceStmt cBody) { SmallVector labelItems; getCaseLabelItems(cCaseLabelItems, labelItems); @@ -1956,7 +1970,7 @@ BridgedCaseStmt BridgedCaseStmt_createParsedSwitchCase( BridgedCaseStmt BridgedCaseStmt_createParsedDoCatch( BridgedASTContext cContext, BridgedSourceLoc cCatchLoc, - BridgedArrayRef cCaseLabelItems, BridgedBraceStmt cBody) { + BridgedErasedArrayRef cCaseLabelItems, BridgedBraceStmt cBody) { SmallVector labelItems; getCaseLabelItems(cCaseLabelItems, labelItems); @@ -2001,7 +2015,7 @@ BridgedDoCatchStmt BridgedDoCatchStmt_createParsed( BridgedDeclContext cDeclContext, BridgedLabeledStmtInfo cLabelInfo, BridgedSourceLoc cDoLoc, BridgedSourceLoc cThrowsLoc, BridgedNullableTypeRepr cThrownType, BridgedStmt cBody, - BridgedArrayRef cCatches) { + BridgedErasedArrayRef cCatches) { return DoCatchStmt::create(cDeclContext.unbridged(), cLabelInfo.unbridged(), cDoLoc.unbridged(), cThrowsLoc.unbridged(), cThrownType.unbridged(), cBody.unbridged(), @@ -2029,7 +2043,7 @@ BridgedForEachStmt BridgedForEachStmt_createParsed( BridgedGuardStmt BridgedGuardStmt_createParsed(BridgedASTContext cContext, BridgedSourceLoc cGuardLoc, - BridgedArrayRef cConds, + BridgedErasedArrayRef cConds, BridgedBraceStmt cBody) { auto &context = cContext.unbridged(); StmtCondition cond = context.AllocateTransform( @@ -2040,10 +2054,13 @@ BridgedGuardStmt BridgedGuardStmt_createParsed(BridgedASTContext cContext, GuardStmt(cGuardLoc.unbridged(), cond, cBody.unbridged()); } -BridgedIfStmt BridgedIfStmt_createParsed( - BridgedASTContext cContext, BridgedLabeledStmtInfo cLabelInfo, - BridgedSourceLoc cIfLoc, BridgedArrayRef cConds, BridgedBraceStmt cThen, - BridgedSourceLoc cElseLoc, BridgedNullableStmt cElse) { +BridgedIfStmt BridgedIfStmt_createParsed(BridgedASTContext cContext, + BridgedLabeledStmtInfo cLabelInfo, + BridgedSourceLoc cIfLoc, + BridgedErasedArrayRef cConds, + BridgedBraceStmt cThen, + BridgedSourceLoc cElseLoc, + BridgedNullableStmt cElse) { auto &context = cContext.unbridged(); StmtCondition cond = context.AllocateTransform( cConds.unbridged(), @@ -2073,7 +2090,7 @@ BridgedReturnStmt BridgedReturnStmt_createParsed(BridgedASTContext cContext, BridgedSwitchStmt BridgedSwitchStmt_createParsed( BridgedASTContext cContext, BridgedLabeledStmtInfo cLabelInfo, BridgedSourceLoc cSwitchLoc, BridgedExpr cSubjectExpr, - BridgedSourceLoc cLBraceLoc, BridgedArrayRef cCases, + BridgedSourceLoc cLBraceLoc, BridgedErasedArrayRef cCases, BridgedSourceLoc cRBraceLoc) { auto &context = cContext.unbridged(); auto cases = @@ -2099,9 +2116,11 @@ BridgedThrowStmt BridgedThrowStmt_createParsed(BridgedASTContext cContext, ThrowStmt(cThrowLoc.unbridged(), cSubExpr.unbridged()); } -BridgedWhileStmt BridgedWhileStmt_createParsed( - BridgedASTContext cContext, BridgedLabeledStmtInfo cLabelInfo, - BridgedSourceLoc cWhileLoc, BridgedArrayRef cCond, BridgedStmt cBody) { +BridgedWhileStmt +BridgedWhileStmt_createParsed(BridgedASTContext cContext, + BridgedLabeledStmtInfo cLabelInfo, + BridgedSourceLoc cWhileLoc, + BridgedErasedArrayRef cCond, BridgedStmt cBody) { auto &context = cContext.unbridged(); StmtCondition cond = context.AllocateTransform( cCond.unbridged(), @@ -2114,7 +2133,7 @@ BridgedWhileStmt BridgedWhileStmt_createParsed( BridgedYieldStmt BridgedYieldStmt_createParsed(BridgedASTContext cContext, BridgedSourceLoc cYieldLoc, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cYields, + BridgedErasedArrayRef cYields, BridgedSourceLoc cRParenLoc) { return YieldStmt::create(cContext.unbridged(), cYieldLoc.unbridged(), cLParenLoc.unbridged(), cYields.unbridged(), @@ -2217,7 +2236,7 @@ BridgedUnqualifiedIdentTypeRepr BridgedUnqualifiedIdentTypeRepr_createParsed( BridgedUnqualifiedIdentTypeRepr BridgedUnqualifiedIdentTypeRepr_createParsed( BridgedASTContext cContext, BridgedIdentifier name, - BridgedSourceLoc cNameLoc, BridgedArrayRef genericArgs, + BridgedSourceLoc cNameLoc, BridgedErasedArrayRef genericArgs, BridgedSourceLoc cLAngleLoc, BridgedSourceLoc cRAngleLoc) { ASTContext &context = cContext.unbridged(); auto Loc = DeclNameLoc(cNameLoc.unbridged()); @@ -2378,7 +2397,7 @@ BridgedVarargTypeRepr_createParsed(BridgedASTContext cContext, } BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed( - BridgedASTContext cContext, BridgedArrayRef elements, + BridgedASTContext cContext, BridgedErasedArrayRef elements, BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc) { ASTContext &context = cContext.unbridged(); SourceLoc lParen = cLParenLoc.unbridged(); @@ -2404,7 +2423,7 @@ BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed( BridgedDeclRefTypeRepr BridgedDeclRefTypeRepr_createParsed( BridgedASTContext cContext, BridgedTypeRepr cBase, BridgedIdentifier cName, - BridgedSourceLoc cLoc, BridgedArrayRef cGenericArguments, + BridgedSourceLoc cLoc, BridgedErasedArrayRef cGenericArguments, BridgedSourceRange cAngleRange) { ASTContext &context = cContext.unbridged(); auto genericArguments = cGenericArguments.unbridged(); @@ -2427,7 +2446,7 @@ BridgedCompositionTypeRepr_createEmpty(BridgedASTContext cContext, BridgedCompositionTypeRepr BridgedCompositionTypeRepr_createParsed(BridgedASTContext cContext, - BridgedArrayRef cTypes, + BridgedErasedArrayRef cTypes, BridgedSourceLoc cFirstAmpLoc) { ASTContext &context = cContext.unbridged(); SourceLoc firstAmpLoc = cFirstAmpLoc.unbridged(); @@ -2546,7 +2565,7 @@ BridgedParenPattern BridgedParenPattern_createParsed( BridgedTuplePattern BridgedTuplePattern_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLParenLoc, - BridgedArrayRef cElements, BridgedSourceLoc cRParenLoc) { + BridgedErasedArrayRef cElements, BridgedSourceLoc cRParenLoc) { ASTContext &context = cContext.unbridged(); llvm::SmallVector elements; elements.reserve(cElements.Length); @@ -2590,7 +2609,7 @@ BridgedIdentifier BridgedPattern_getBoundName(BridgedPattern cPattern) { BridgedGenericParamList BridgedGenericParamList_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLeftAngleLoc, - BridgedArrayRef cParameters, + BridgedErasedArrayRef cParameters, BridgedNullableTrailingWhereClause bridgedGenericWhereClause, BridgedSourceLoc cRightAngleLoc) { SourceLoc whereLoc; @@ -2643,7 +2662,7 @@ BridgedGenericTypeParamDecl BridgedGenericTypeParamDecl_createParsed( BridgedTrailingWhereClause BridgedTrailingWhereClause_createParsed(BridgedASTContext cContext, BridgedSourceLoc cWhereKeywordLoc, - BridgedArrayRef cRequirements) { + BridgedErasedArrayRef cRequirements) { SmallVector requirements; for (auto &cReq : cRequirements.unbridged()) { switch (cReq.Kind) { @@ -2678,7 +2697,7 @@ BridgedTrailingWhereClause_createParsed(BridgedASTContext cContext, BridgedParameterList BridgedParameterList_createParsed( BridgedASTContext cContext, BridgedSourceLoc cLeftParenLoc, - BridgedArrayRef cParameters, BridgedSourceLoc cRightParenLoc) { + BridgedErasedArrayRef cParameters, BridgedSourceLoc cRightParenLoc) { ASTContext &context = cContext.unbridged(); return ParameterList::create(context, cLeftParenLoc.unbridged(), cParameters.unbridged(), diff --git a/lib/ASTGen/CMakeLists.txt b/lib/ASTGen/CMakeLists.txt index 188780ece8fd6..1783d558bd443 100644 --- a/lib/ASTGen/CMakeLists.txt +++ b/lib/ASTGen/CMakeLists.txt @@ -86,7 +86,7 @@ endforeach() set(compile_options ${c_include_paths_args} - "SHELL: -Xcc -std=c++17 -Xcc -DCOMPILED_WITH_SWIFT" + "SHELL: -Xcc -std=c++17 -Xcc -DCOMPILED_WITH_SWIFT -Xcc -DIMPORTING_INTO_ASTGEN" # FIXME: Needed to work around an availability issue with CxxStdlib "SHELL: -Xfrontend -disable-target-os-checking" diff --git a/lib/ASTGen/Sources/ASTGen/ASTGen.swift b/lib/ASTGen/Sources/ASTGen/ASTGen.swift index 5c4ef6b24c9a4..095440fe28f11 100644 --- a/lib/ASTGen/Sources/ASTGen/ASTGen.swift +++ b/lib/ASTGen/Sources/ASTGen/ASTGen.swift @@ -315,22 +315,22 @@ extension ASTGenVisitor { } @inline(__always) - func generate(inheritedTypeList node: InheritedTypeListSyntax?) -> BridgedArrayRef { - node.map(generate(inheritedTypeList:)) ?? .init() + func generate(inheritedTypeList node: InheritedTypeListSyntax?) -> (some Collection)? { + node.map(generate(inheritedTypeList:)) } @inline(__always) - func generate(precedenceGroupNameList node: PrecedenceGroupNameListSyntax?) -> BridgedArrayRef { - node.map(generate(precedenceGroupNameList:)) ?? .init() + func generate(precedenceGroupNameList node: PrecedenceGroupNameListSyntax?) -> (some Collection)? { + node.map(generate(precedenceGroupNameList:)) } } extension Collection { - /// Like ``Sequence.compactMap(_:)``, but returns a `BridgedArrayRef` with a lifetime tied to that of `astgen`. + /// Like ``Sequence.compactMap(_:)``, but returns a `BridgedErasedArrayRef` with a lifetime tied to that of `astgen`. /// /// - Note: The purpose of this method is to make up for the performance toll of calling ``Collection.bridgedArray`` /// on a ``LazyFilterSequence`` due to the `count` access. - func compactMap(in astgen: ASTGenVisitor, _ transform: (Element) -> T?) -> BridgedArrayRef { + func compactMap(in astgen: ASTGenVisitor, _ transform: (Element) -> T?) -> BridgedErasedArrayRef { if self.isEmpty { return .init() } @@ -355,8 +355,8 @@ extension Collection { } extension CollectionOfOne { - /// Returns a single element as a `BridgedArrayRef` with a lifetime tied to that of `astgen`. - func bridgedArray(in astgen: ASTGenVisitor) -> BridgedArrayRef { + /// Returns a single element as a `BridgedErasedArrayRef` with a lifetime tied to that of `astgen`. + func bridgedArray(in astgen: ASTGenVisitor) -> BridgedErasedArrayRef { let buffer = astgen.allocator.allocate(Element.self, count: 1) _ = buffer.initialize(from: self) return .init(data: buffer.baseAddress, count: 1) @@ -364,8 +364,8 @@ extension CollectionOfOne { } extension LazyCollectionProtocol { - /// Returns a copy of the collection's elements as a `BridgedArrayRef` with a lifetime tied to that of `astgen`. - func bridgedArray(in astgen: ASTGenVisitor) -> BridgedArrayRef { + /// Returns a copy of the collection's elements as a `BridgedErasedArrayRef` with a lifetime tied to that of `astgen`. + func bridgedArray(in astgen: ASTGenVisitor) -> BridgedErasedArrayRef { if self.isEmpty { return .init() } @@ -381,17 +381,17 @@ extension LazyCollectionProtocol { // conditionally conforms to 'LazySequenceProtocol' in the standard library. // FIXME: We could make it conform unconditionally extension ReversedCollection { - /// Returns a copy of the collection's elements as a `BridgedArrayRef` with a lifetime tied to that of `astgen`. + /// Returns a copy of the collection's elements as a `BridgedErasedArrayRef` with a lifetime tied to that of `astgen`. @inline(__always) - func bridgedArray(in astgen: ASTGenVisitor) -> BridgedArrayRef { + func bridgedArray(in astgen: ASTGenVisitor) -> BridgedErasedArrayRef { self.lazy.bridgedArray(in: astgen) } } extension Optional where Wrapped: LazyCollectionProtocol { - /// Returns a copy of the collection's elements as a `BridgedArrayRef` with a lifetime tied to that of `astgen`. + /// Returns a copy of the collection's elements as a `BridgedErasedArrayRef` with a lifetime tied to that of `astgen`. @inline(__always) - func bridgedArray(in astgen: ASTGenVisitor) -> BridgedArrayRef { + func bridgedArray(in astgen: ASTGenVisitor) -> BridgedErasedArrayRef { guard let self else { return .init() } @@ -400,6 +400,22 @@ extension Optional where Wrapped: LazyCollectionProtocol { } } +extension BridgedArrayRefProtocol { + init( + _ collection: C?, in astgen: ASTGenVisitor + ) where C.Element == Element { + guard let collection = collection, !collection.isEmpty else { + self.init(data: nil, count: 0) + return + } + + let buffer = astgen.allocator.allocate(Element.self, count: collection.count) + _ = buffer.initialize(from: collection) + + self.init(data: buffer.baseAddress, count: collection.count) + } +} + extension TokenSyntax { /// Get `Keyword` kind if the token is a keyword. var keywordKind: Keyword? { diff --git a/lib/ASTGen/Sources/ASTGen/Bridge.swift b/lib/ASTGen/Sources/ASTGen/Bridge.swift index ae950404e5efc..f8207339e503a 100644 --- a/lib/ASTGen/Sources/ASTGen/Bridge.swift +++ b/lib/ASTGen/Sources/ASTGen/Bridge.swift @@ -237,6 +237,11 @@ extension BridgedSourceRange { } } +protocol BridgedArrayRefProtocol { + associatedtype Element + init(data: UnsafePointer?, count: Int) +} + /// Helper collection type that lazily concatenates two collections. struct ConcatCollection where C1.Element == C2.Element { let c1: C1 diff --git a/lib/ASTGen/Sources/ASTGen/DeclAttrs.swift b/lib/ASTGen/Sources/ASTGen/DeclAttrs.swift index a52d5a5df3e25..cdb2ad1d70f33 100644 --- a/lib/ASTGen/Sources/ASTGen/DeclAttrs.swift +++ b/lib/ASTGen/Sources/ASTGen/DeclAttrs.swift @@ -359,7 +359,7 @@ extension ASTGenVisitor { return nil } - let features = args.compactMap(in: self) { arg -> BridgedIdentifier? in + let features = args.compactMap { arg -> BridgedIdentifier? in guard arg.label == nil, let declNameExpr = arg.expression.as(DeclReferenceExprSyntax.self), declNameExpr.argumentNames == nil @@ -376,7 +376,7 @@ extension ASTGenVisitor { atLoc: self.generateSourceLoc(node.atSign), range: self.generateSourceRange(node), inverted: inverted, - features: features) + features: .init(features, in: self)) } func generateCDeclAttr(attribute node: AttributeSyntax) -> BridgedCDeclAttr? { @@ -728,8 +728,8 @@ extension ASTGenVisitor { atLoc: self.generateSourceLoc(node.atSign), attrNameLoc: self.generateSourceLoc(node.attributeName), lParenLoc: self.generateSourceLoc(node.leftParen), - nameLocs: selectorPieces.lazy.map({ self.generateSourceLoc($0.name) }).bridgedArray(in: self), - names: selectorPieces.lazy.map({ self.generateIdentifier($0.name) }).bridgedArray(in: self), + nameLocs: .init(selectorPieces.lazy.map({ self.generateSourceLoc($0.name) }), in: self), + names: .init(selectorPieces.lazy.map({ self.generateIdentifier($0.name) }), in: self), rParenLoc: self.generateSourceLoc(node.rightParen) ) } diff --git a/lib/ASTGen/Sources/ASTGen/Decls.swift b/lib/ASTGen/Sources/ASTGen/Decls.swift index 728b6bd0a3fe9..8b2c8f3edcc35 100644 --- a/lib/ASTGen/Sources/ASTGen/Decls.swift +++ b/lib/ASTGen/Sources/ASTGen/Decls.swift @@ -111,7 +111,7 @@ extension ASTGenVisitor { name: name, nameLoc: nameLoc, genericParamList: self.generate(genericParameterClause: node.genericParameterClause), - inheritedTypes: self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), + inheritedTypes: .init(self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), in: self), genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause), braceRange: self.generateSourceRange( start: node.memberBlock.leftBrace, @@ -121,7 +121,7 @@ extension ASTGenVisitor { decl.asDecl.setAttrs(attrs.attributes) self.withDeclContext(decl.asDeclContext) { - decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members)) + decl.setParsedMembers(.init(self.generate(memberBlockItemList: node.memberBlock.members), in: self)) } return decl @@ -138,7 +138,7 @@ extension ASTGenVisitor { name: name, nameLoc: nameLoc, genericParamList: self.generate(genericParameterClause: node.genericParameterClause), - inheritedTypes: self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), + inheritedTypes: .init(self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), in: self), genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause), braceRange: self.generateSourceRange( start: node.memberBlock.leftBrace, @@ -148,7 +148,7 @@ extension ASTGenVisitor { decl.asDecl.setAttrs(attrs.attributes) self.withDeclContext(decl.asDeclContext) { - decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members)) + decl.setParsedMembers(.init(self.generate(memberBlockItemList: node.memberBlock.members), in: self)) } return decl @@ -165,7 +165,7 @@ extension ASTGenVisitor { name: name, nameLoc: nameLoc, genericParamList: self.generate(genericParameterClause: node.genericParameterClause), - inheritedTypes: self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), + inheritedTypes: .init(self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), in: self), genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause), braceRange: self.generateSourceRange( start: node.memberBlock.leftBrace, @@ -176,7 +176,7 @@ extension ASTGenVisitor { decl.asDecl.setAttrs(attrs.attributes) self.withDeclContext(decl.asDeclContext) { - decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members)) + decl.setParsedMembers(.init(self.generate(memberBlockItemList: node.memberBlock.members), in: self)) } return decl @@ -193,7 +193,7 @@ extension ASTGenVisitor { name: name, nameLoc: nameLoc, genericParamList: self.generate(genericParameterClause: node.genericParameterClause), - inheritedTypes: self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), + inheritedTypes: .init(self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), in: self), genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause), braceRange: self.generateSourceRange( start: node.memberBlock.leftBrace, @@ -204,7 +204,7 @@ extension ASTGenVisitor { decl.asDecl.setAttrs(attrs.attributes) self.withDeclContext(decl.asDeclContext) { - decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members)) + decl.setParsedMembers(.init(self.generate(memberBlockItemList: node.memberBlock.members), in: self)) } return decl @@ -223,8 +223,8 @@ extension ASTGenVisitor { protocolKeywordLoc: self.generateSourceLoc(node.protocolKeyword), name: name, nameLoc: nameLoc, - primaryAssociatedTypeNames: primaryAssociatedTypeNames.bridgedArray(in: self), - inheritedTypes: self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), + primaryAssociatedTypeNames: .init(primaryAssociatedTypeNames, in: self), + inheritedTypes: .init(self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), in: self), genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause), braceRange: self.generateSourceRange( start: node.memberBlock.leftBrace, @@ -234,7 +234,7 @@ extension ASTGenVisitor { decl.asDecl.setAttrs(attrs.attributes) self.withDeclContext(decl.asDeclContext) { - decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members)) + decl.setParsedMembers(.init(self.generate(memberBlockItemList: node.memberBlock.members), in: self)) } return decl @@ -250,7 +250,7 @@ extension ASTGenVisitor { associatedtypeKeywordLoc: self.generateSourceLoc(node.associatedtypeKeyword), name: name, nameLoc: nameLoc, - inheritedTypes: self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), + inheritedTypes: .init(self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), in: self), defaultType: self.generate(type: node.initializer?.value), genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause) ) @@ -269,7 +269,7 @@ extension ASTGenVisitor { declContext: self.declContext, extensionKeywordLoc: self.generateSourceLoc(node.extensionKeyword), extendedType: self.generate(type: node.extendedType), - inheritedTypes: self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), + inheritedTypes: .init(self.generate(inheritedTypeList: node.inheritanceClause?.inheritedTypes), in: self), genericWhereClause: self.generate(genericWhereClause: node.genericWhereClause), braceRange: self.generateSourceRange( start: node.memberBlock.leftBrace, @@ -279,7 +279,7 @@ extension ASTGenVisitor { decl.asDecl.setAttrs(attrs.attributes) self.withDeclContext(decl.asDeclContext) { - decl.setParsedMembers(self.generate(memberBlockItemList: node.memberBlock.members)) + decl.setParsedMembers(.init(self.generate(memberBlockItemList: node.memberBlock.members), in: self)) } return decl @@ -315,7 +315,7 @@ extension ASTGenVisitor { return .createParsed( declContext: self.declContext, caseKeywordLoc: self.generateSourceLoc(node.caseKeyword), - elements: elements.bridgedArray(in: self) + elements: .init(elements, in: self) ) } } @@ -393,9 +393,9 @@ extension ASTGenVisitor { case .accessors(let accessors): return BridgedAccessorRecord( lBraceLoc: leftBrace, - accessors: accessors.lazy.compactMap { + accessors: .init(accessors.lazy.compactMap { self.generate(accessorDecl: $0, for: storage) - }.bridgedArray(in: self), + }, in: self), rBraceLoc: rightBrace ) case .getter(let codeBlock): @@ -422,7 +422,7 @@ extension ASTGenVisitor { } return BridgedAccessorRecord( lBraceLoc: leftBrace, - accessors: CollectionOfOne(accessor).bridgedArray(in: self), + accessors: .init(CollectionOfOne(accessor), in: self), rBraceLoc: rightBrace ) #if RESILIENT_SWIFT_SYNTAX @@ -467,7 +467,7 @@ extension ASTGenVisitor { ) } - private func generateBindingEntries(for node: VariableDeclSyntax) -> BridgedArrayRef { + private func generateBindingEntries(for node: VariableDeclSyntax) -> some Collection { var propagatedType: BridgedTypeRepr? var entries: [BridgedPatternBindingEntry] = [] @@ -504,7 +504,7 @@ extension ASTGenVisitor { } entries.append(entry) } - return entries.reversed().bridgedArray(in: self) + return entries.reversed() } func generate(variableDecl node: VariableDeclSyntax) -> BridgedPatternBindingDecl { @@ -516,7 +516,7 @@ extension ASTGenVisitor { self.ctx, declContext: self.declContext, bindingKeywordLoc: self.generateSourceLoc(node.bindingSpecifier), - entries: self.generateBindingEntries(for: node), + entries: .init(self.generateBindingEntries(for: node), in: self), isStatic: isStatic, isLet: isLet ) @@ -778,9 +778,9 @@ extension ASTGenVisitor { assignmentValueLoc: self.generateSourceLoc((body.assignment?.value)), isAssignment: assignmentValue, higherThanKeywordLoc: self.generateSourceLoc((body.higherThanRelation?.higherThanOrLowerThanLabel)), - higherThanNames: self.generate(precedenceGroupNameList: body.higherThanRelation?.precedenceGroups), + higherThanNames: .init(self.generate(precedenceGroupNameList: body.higherThanRelation?.precedenceGroups), in: self), lowerThanKeywordLoc: self.generateSourceLoc(body.lowerThanRelation?.higherThanOrLowerThanLabel), - lowerThanNames: self.generate(precedenceGroupNameList: body.lowerThanRelation?.precedenceGroups), + lowerThanNames: .init(self.generate(precedenceGroupNameList: body.lowerThanRelation?.precedenceGroups), in: self), rightBraceLoc: self.generateSourceLoc(node.rightBrace) ) decl.asDecl.setAttrs(attrs.attributes) @@ -826,9 +826,9 @@ extension ASTGenVisitor { importKeywordLoc: self.generateSourceLoc(node.importKeyword), importKind: importKind, importKindLoc: self.generateSourceLoc(node.importKindSpecifier), - path: node.path.lazy.map { - self.generateLocatedIdentifier($0.name) - }.bridgedArray(in: self) + path: .init( + node.path.lazy.map { self.generateLocatedIdentifier($0.name) }, in: self + ) ) decl.asDecl.setAttrs(attrs.attributes) return decl @@ -837,7 +837,7 @@ extension ASTGenVisitor { extension ASTGenVisitor { @inline(__always) - func generate(memberBlockItemList node: MemberBlockItemListSyntax) -> BridgedArrayRef { + func generate(memberBlockItemList node: MemberBlockItemListSyntax) -> some Collection { var allBridged: [BridgedDecl] = [] visitIfConfigElements(node, of: MemberBlockItemSyntax.self) { element in if let ifConfigDecl = element.decl.as(IfConfigDeclSyntax.self) { @@ -850,18 +850,18 @@ extension ASTGenVisitor { allBridged.append(self.generate(decl: member.decl)) } - return allBridged.lazy.bridgedArray(in: self) + return allBridged.lazy } @inline(__always) - func generate(inheritedTypeList node: InheritedTypeListSyntax) -> BridgedArrayRef { - node.lazy.map { self.generate(type: $0.type) }.bridgedArray(in: self) + func generate(inheritedTypeList node: InheritedTypeListSyntax) -> some Collection { + node.lazy.map { self.generate(type: $0.type) } } @inline(__always) - func generate(precedenceGroupNameList node: PrecedenceGroupNameListSyntax) -> BridgedArrayRef { + func generate(precedenceGroupNameList node: PrecedenceGroupNameListSyntax) -> some Collection { node.lazy.map { self.generateLocatedIdentifier($0.name) - }.bridgedArray(in: self) + } } } diff --git a/lib/ASTGen/Sources/ASTGen/Exprs.swift b/lib/ASTGen/Sources/ASTGen/Exprs.swift index edfbb7cb1610b..c03bc4e73c418 100644 --- a/lib/ASTGen/Sources/ASTGen/Exprs.swift +++ b/lib/ASTGen/Sources/ASTGen/Exprs.swift @@ -306,9 +306,9 @@ extension ASTGenVisitor { additionalTrailingClosures: MultipleTrailingClosureElementListSyntax? ) -> BridgedArgumentList { - let bridgedArgs: BridgedArrayRef = { + let bridgedArgs = { // Arguments before ')' - let normalArgs = labeledExprList.lazy.map({ elem in + let normalArgs = labeledExprList.map({ elem in let labelInfo = elem.label.map(self.generateIdentifierAndSourceLoc(_:)) return BridgedCallArgument( labelLoc: labelInfo?.sourceLoc ?? BridgedSourceLoc(), @@ -322,7 +322,7 @@ extension ASTGenVisitor { additionalTrailingClosures == nil || additionalTrailingClosures!.isEmpty, "multiple trailing closures without the first trailing closure" ) - return normalArgs.bridgedArray(in: self) + return normalArgs } // The first trailing closure. @@ -331,9 +331,9 @@ extension ASTGenVisitor { label: nil, argExpr: self.generate(closureExpr: trailingClosure).asExpr ) - let normalArgsAndClosure = ConcatCollection(normalArgs, CollectionOfOne(bridgedTrailingClosureArg)) + let normalArgsAndClosure = normalArgs + [bridgedTrailingClosureArg] guard let additionalTrailingClosures else { - return normalArgsAndClosure.bridgedArray(in: self) + return normalArgsAndClosure } // Remaining trailing closures. @@ -344,8 +344,7 @@ extension ASTGenVisitor { argExpr: self.generate(closureExpr: argNode.closure).asExpr ) } - let allArgs = ConcatCollection(normalArgsAndClosure, additions) - return allArgs.bridgedArray(in: self) + return normalArgsAndClosure + additions }() // This should be "nil" value if there's no trailing closure. Passing the number @@ -357,7 +356,7 @@ extension ASTGenVisitor { return BridgedArgumentList.createParsed( self.ctx, lParenLoc: self.generateSourceLoc(leftParen), - args: bridgedArgs, + args: .init(bridgedArgs, in: self), rParenLoc: self.generateSourceLoc(rightParen), firstTrailingClosureIndex: firstTrailingClosureIndex ) @@ -416,13 +415,13 @@ extension ASTGenVisitor { name: .createParsed( self.ctx, baseName: baseName, - argumentLabels: labels.bridgedArray(in: self) + argumentLabels: .init(labels, in: self) ), loc: .createParsed( self.ctx, baseNameLoc: baseNameLoc, lParenLoc: self.generateSourceLoc(argumentClause.leftParen), - argumentLabelLocs: labelLocs.bridgedArray(in: self), + argumentLabelLocs: .init(labelLocs, in: self), rParenLoc: self.generateSourceLoc(argumentClause.rightParen) ) ) diff --git a/lib/ASTGen/Sources/ASTGen/Literals.swift b/lib/ASTGen/Sources/ASTGen/Literals.swift index f74cd6607eee3..b72944c4c50f9 100644 --- a/lib/ASTGen/Sources/ASTGen/Literals.swift +++ b/lib/ASTGen/Sources/ASTGen/Literals.swift @@ -76,7 +76,7 @@ extension ASTGenVisitor { let appendLiteral = BridgedDeclNameRef.createParsed( self.ctx, baseName: .createIdentifier(self.ctx.getIdentifier("appendLiteral")), - argumentLabels: CollectionOfOne(BridgedIdentifier()).bridgedArray(in: self) + argumentLabels: .init(CollectionOfOne(BridgedIdentifier()), in: self) ) // Name reference to `appendInterpolation`. Arguments labels are not determined yet. let appendInterpolation = BridgedDeclNameRef.createParsed( @@ -123,7 +123,7 @@ extension ASTGenVisitor { appendLiteralRef.asExpr.setImplicit() let argList = BridgedArgumentList.createImplicitUnlabeled( self.ctx, - exprs: CollectionOfOne(literalExpr).bridgedArray(in: self) + exprs: .init(CollectionOfOne(literalExpr.asExpr), in: self) ) let callExpr = BridgedCallExpr.createParsed( self.ctx, @@ -267,13 +267,13 @@ extension ASTGenVisitor { public func generate(dictionaryExpr node: DictionaryExprSyntax) -> BridgedDictionaryExpr { let lBracketLoc = self.generateSourceLoc(node.leftSquare) let rBracketLoc = self.generateSourceLoc(node.rightSquare) - let elements: BridgedArrayRef - let colonLocs: BridgedArrayRef + let elements: BridgedErasedArrayRef + let colonLocs: BridgedErasedArrayRef switch node.content { case .colon(_): - elements = BridgedArrayRef() - colonLocs = BridgedArrayRef() + elements = BridgedErasedArrayRef() + colonLocs = BridgedErasedArrayRef() case .elements(let elementNodes): elements = elementNodes.lazy .map({ self.generate(dictionaryElement: $0).asExpr }) diff --git a/lib/ASTGen/Sources/ASTGen/ParameterClause.swift b/lib/ASTGen/Sources/ASTGen/ParameterClause.swift index a591004066158..34a1010e27ad4 100644 --- a/lib/ASTGen/Sources/ASTGen/ParameterClause.swift +++ b/lib/ASTGen/Sources/ASTGen/ParameterClause.swift @@ -169,7 +169,7 @@ extension ASTGenVisitor { extension ASTGenVisitor { @inline(__always) - func generate(functionParameterList node: FunctionParameterListSyntax, forSubscript: Bool) -> BridgedArrayRef { + func generate(functionParameterList node: FunctionParameterListSyntax, forSubscript: Bool) -> BridgedErasedArrayRef { node.lazy.map({ self.generate(functionParameter: $0, forSubscript: forSubscript) }).bridgedArray(in: self) } } diff --git a/lib/ASTGen/Sources/ASTGen/Stmts.swift b/lib/ASTGen/Sources/ASTGen/Stmts.swift index c502275fc700e..6053b4cd5bab0 100644 --- a/lib/ASTGen/Sources/ASTGen/Stmts.swift +++ b/lib/ASTGen/Sources/ASTGen/Stmts.swift @@ -76,7 +76,7 @@ extension ASTGenVisitor { } @inline(__always) - func generate(codeBlockItemList node: CodeBlockItemListSyntax) -> BridgedArrayRef { + func generate(codeBlockItemList node: CodeBlockItemListSyntax) -> BridgedErasedArrayRef { var allItems: [BridgedASTNode] = [] visitIfConfigElements( node, @@ -180,7 +180,7 @@ extension ASTGenVisitor { } } - func generate(conditionElementList node: ConditionElementListSyntax) -> BridgedArrayRef { + func generate(conditionElementList node: ConditionElementListSyntax) -> BridgedErasedArrayRef { node.lazy.map(generate(conditionElement:)).bridgedArray(in: self) } @@ -243,7 +243,7 @@ extension ASTGenVisitor { ) } - func generate(catchItemList node: CatchItemListSyntax) -> BridgedArrayRef { + func generate(catchItemList node: CatchItemListSyntax) -> BridgedErasedArrayRef { if node.isEmpty { let item = BridgedCaseLabelItemInfo( isDefault: false, @@ -269,7 +269,7 @@ extension ASTGenVisitor { ) } - func generate(catchClauseList node: CatchClauseListSyntax) -> BridgedArrayRef { + func generate(catchClauseList node: CatchClauseListSyntax) -> BridgedErasedArrayRef { node.lazy.map(self.generate(catchClause:)).bridgedArray(in: self) } @@ -435,7 +435,7 @@ extension ASTGenVisitor { ) } - func generate(switchCaseItemList node: SwitchCaseItemListSyntax) -> BridgedArrayRef { + func generate(switchCaseItemList node: SwitchCaseItemListSyntax) -> BridgedErasedArrayRef { return node.lazy.map(self.generate(switchCaseItem:)).bridgedArray(in: self) } @@ -443,7 +443,7 @@ extension ASTGenVisitor { let unknownAttrLoc = self.generateSourceLoc(node.attribute?.atSign) let introducerLoc: BridgedSourceLoc let terminatorLoc: BridgedSourceLoc - let items: BridgedArrayRef + let items: BridgedErasedArrayRef switch node.label { case .case(let node): introducerLoc = self.generateSourceLoc(node.caseKeyword) @@ -481,7 +481,7 @@ extension ASTGenVisitor { ) } - func generate(switchCaseList node: SwitchCaseListSyntax) -> BridgedArrayRef { + func generate(switchCaseList node: SwitchCaseListSyntax) -> BridgedErasedArrayRef { var allBridgedCases: [BridgedASTNode] = [] visitIfConfigElements(node, of: SwitchCaseSyntax.self) { element in switch element { @@ -536,7 +536,7 @@ extension ASTGenVisitor { // ASTGen needs to convert the call to an expression (in generate(codeBlockItem:)?) let lParenLoc: BridgedSourceLoc let rParenLoc: BridgedSourceLoc - let yields: BridgedArrayRef + let yields: BridgedErasedArrayRef switch node.yieldedExpressions { case .multiple(let node): lParenLoc = self.generateSourceLoc(node.leftParen) diff --git a/lib/ASTGen/Sources/ASTGen/Types.swift b/lib/ASTGen/Sources/ASTGen/Types.swift index 69b79c30295fb..e9107380301be 100644 --- a/lib/ASTGen/Sources/ASTGen/Types.swift +++ b/lib/ASTGen/Sources/ASTGen/Types.swift @@ -140,7 +140,7 @@ extension ASTGenVisitor { func generate(memberType node: MemberTypeSyntax) -> BridgedDeclRefTypeRepr { let (name, nameLoc) = self.generateIdentifierAndSourceLoc(node.name) - let genericArguments: BridgedArrayRef + let genericArguments: BridgedErasedArrayRef let angleRange: BridgedSourceRange if let generics = node.genericArgumentClause { genericArguments = generics.arguments.lazy.map { @@ -389,7 +389,7 @@ extension ASTGenVisitor { } extension ASTGenVisitor { - func generate(tupleTypeElementList node: TupleTypeElementListSyntax) -> BridgedArrayRef { + func generate(tupleTypeElementList node: TupleTypeElementListSyntax) -> BridgedErasedArrayRef { node.lazy.map { element in let (firstName, firstNameLoc) = self.generateIdentifierAndSourceLoc(element.firstName) diff --git a/lib/SILOptimizer/PassManager/PassManager.cpp b/lib/SILOptimizer/PassManager/PassManager.cpp index 130f6d2984df6..7f7ad245d920f 100644 --- a/lib/SILOptimizer/PassManager/PassManager.cpp +++ b/lib/SILOptimizer/PassManager/PassManager.cpp @@ -1804,10 +1804,9 @@ BridgedOwnedString BridgedPassContext::mangleWithDeadArgs(const SwiftInt * _Null } BridgedOwnedString BridgedPassContext::mangleWithClosureArgs( - BridgedValueArray bridgedClosureArgs, - BridgedArrayRef bridgedClosureArgIndices, - BridgedFunction applySiteCallee -) const { + BridgedValueArray bridgedClosureArgs, + BridgedErasedArrayRef bridgedClosureArgIndices, + BridgedFunction applySiteCallee) const { auto pass = Demangle::SpecializationPass::ClosureSpecializer; auto serializedKind = applySiteCallee.getFunction()->getSerializedKind(); Mangle::FunctionSignatureSpecializationMangler mangler(