Skip to content

[ASTGen] BridgedXXXTypeRepr_createParsed return the sub type if possible #70334

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Dec 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 32 additions & 29 deletions include/swift/AST/ASTBridging.h
Original file line number Diff line number Diff line change
Expand Up @@ -950,6 +950,9 @@ void BridgedTypeAttributes_addSimpleAttr(BridgedTypeAttributes cAttributes,
BridgedSourceLoc cAtLoc,
BridgedSourceLoc cAttrLoc);

SWIFT_NAME("getter:BridgedTypeAttributes.isEmpty(self:)")
bool BridgedTypeAttributes_isEmpty(BridgedTypeAttributes cAttributes);

//===----------------------------------------------------------------------===//
// MARK: TypeReprs
//===----------------------------------------------------------------------===//
Expand All @@ -967,76 +970,76 @@ enum ENUM_EXTENSIBILITY_ATTR(open) BridgedAttributedTypeSpecifier : size_t {
};

SWIFT_NAME("BridgedSimpleIdentTypeRepr.createParsed(_:loc:name:)")
BridgedTypeRepr BridgedSimpleIdentTypeRepr_createParsed(
BridgedSimpleIdentTypeRepr BridgedSimpleIdentTypeRepr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLoc, BridgedIdentifier id);

SWIFT_NAME(
"BridgedSpecifierTypeRepr.createParsed(_:base:specifier:specifierLoc:)")
BridgedTypeRepr BridgedSpecifierTypeRepr_createParsed(
BridgedSpecifierTypeRepr BridgedSpecifierTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedAttributedTypeSpecifier specifier, BridgedSourceLoc cSpecifierLoc);

SWIFT_NAME(
"BridgedArrayTypeRepr.createParsed(_:base:leftSquareLoc:rightSquareLoc:)")
BridgedTypeRepr BridgedArrayTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cLSquareLoc,
BridgedSourceLoc cRSquareLoc);
BridgedArrayTypeRepr BridgedArrayTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedSourceLoc cLSquareLoc, BridgedSourceLoc cRSquareLoc);

SWIFT_NAME(
"BridgedAttributedTypeRepr.createParsed(_:base:consumingAttributes:)")
BridgedTypeRepr
BridgedAttributedTypeRepr
BridgedAttributedTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedTypeAttributes cAttributes);

SWIFT_NAME("BridgedCompositionTypeRepr.createEmpty(_:anyKeywordLoc:)")
BridgedTypeRepr
BridgedCompositionTypeRepr
BridgedCompositionTypeRepr_createEmpty(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc);

SWIFT_NAME("BridgedCompositionTypeRepr.createParsed(_:types:ampersandLoc:)")
BridgedTypeRepr
BridgedCompositionTypeRepr
BridgedCompositionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef types,
BridgedSourceLoc cFirstAmpLoc);

SWIFT_NAME("BridgedDictionaryTypeRepr.createParsed(_:leftSquareLoc:keyType:"
"colonLoc:valueType:rightSquareLoc:)")
BridgedTypeRepr BridgedDictionaryTypeRepr_createParsed(
BridgedDictionaryTypeRepr BridgedDictionaryTypeRepr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLSquareLoc,
BridgedTypeRepr keyType, BridgedSourceLoc cColonloc,
BridgedTypeRepr valueType, BridgedSourceLoc cRSquareLoc);

SWIFT_NAME("BridgedFunctionTypeRepr.createParsed(_:argsType:asyncLoc:throwsLoc:"
"thrownType:arrowLoc:resultType:)")
BridgedTypeRepr BridgedFunctionTypeRepr_createParsed(
BridgedFunctionTypeRepr BridgedFunctionTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr argsTy,
BridgedSourceLoc cAsyncLoc, BridgedSourceLoc cThrowsLoc,
BridgedNullableTypeRepr thrownType, BridgedSourceLoc cArrowLoc,
BridgedTypeRepr resultType);

SWIFT_NAME("BridgedGenericIdentTypeRepr.createParsed(_:name:nameLoc:"
"genericArgs:leftAngleLoc:rightAngleLoc:)")
BridgedTypeRepr BridgedGenericIdentTypeRepr_createParsed(
BridgedGenericIdentTypeRepr BridgedGenericIdentTypeRepr_createParsed(
BridgedASTContext cContext, BridgedIdentifier name,
BridgedSourceLoc cNameLoc, BridgedArrayRef genericArgs,
BridgedSourceLoc cLAngleLoc, BridgedSourceLoc cRAngleLoc);

SWIFT_NAME("BridgedOptionalTypeRepr.createParsed(_:base:questionLoc:)")
BridgedTypeRepr
BridgedOptionalTypeRepr
BridgedOptionalTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cQuestionLoc);

SWIFT_NAME("BridgedImplicitlyUnwrappedOptionalTypeRepr.createParsed(_:base:"
"exclaimLoc:)")
BridgedTypeRepr BridgedImplicitlyUnwrappedOptionalTypeRepr_createParsed(
BridgedImplicitlyUnwrappedOptionalTypeRepr
BridgedImplicitlyUnwrappedOptionalTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedSourceLoc cExclamationLoc);

SWIFT_NAME("BridgedInverseTypeRepr.createParsed(_:tildeLoc:constraint:)")
BridgedTypeRepr
BridgedInverseTypeRepr
BridgedInverseTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cTildeLoc,
BridgedTypeRepr cConstraint);
Expand All @@ -1048,55 +1051,55 @@ BridgedMemberTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef bridgedMemberComponents);

SWIFT_NAME("BridgedMetatypeTypeRepr.createParsed(_:base:typeKeywordLoc:)")
BridgedTypeRepr BridgedMetatypeTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cTypeLoc);
BridgedMetatypeTypeRepr
BridgedMetatypeTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cTypeLoc);

SWIFT_NAME("BridgedProtocolTypeRepr.createParsed(_:base:protocolKeywordLoc:)")
BridgedTypeRepr
BridgedProtocolTypeRepr
BridgedProtocolTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cProtoLoc);

SWIFT_NAME("BridgedPackElementTypeRepr.createParsed(_:base:eachKeywordLoc:)")
BridgedTypeRepr
BridgedPackElementTypeRepr
BridgedPackElementTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cEachLoc);

SWIFT_NAME(
"BridgedPackExpansionTypeRepr.createParsed(_:base:repeatKeywordLoc:)")
BridgedTypeRepr
BridgedPackExpansionTypeRepr
BridgedPackExpansionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cRepeatLoc);

SWIFT_NAME(
"BridgedTupleTypeRepr.createParsed(_:elements:leftParenLoc:rightParenLoc:)")
BridgedTypeRepr BridgedTupleTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc,
BridgedSourceLoc cRParenLoc);
BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed(
BridgedASTContext cContext, BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc);

SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)")
BridgedTypeRepr
BridgedNamedOpaqueReturnTypeRepr
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseTy);

SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)")
BridgedTypeRepr
BridgedOpaqueReturnTypeRepr
BridgedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cOpaqueLoc,
BridgedTypeRepr baseTy);

SWIFT_NAME("BridgedExistentialTypeRepr.createParsed(_:anyKeywordLoc:base:)")
BridgedTypeRepr
BridgedExistentialTypeRepr
BridgedExistentialTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc,
BridgedTypeRepr baseTy);

SWIFT_NAME("BridgedVarargTypeRepr.createParsed(_:base:ellipsisLoc:)")
BridgedTypeRepr
BridgedVarargTypeRepr
BridgedVarargTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cEllipsisLoc);
Expand Down
1 change: 1 addition & 0 deletions include/swift/AST/ASTBridgingWrappers.def
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ AST_BRIDGING_WRAPPER_NULLABLE(GenericParamList)
AST_BRIDGING_WRAPPER_NULLABLE(TrailingWhereClause)
AST_BRIDGING_WRAPPER_NULLABLE(ParameterList)
AST_BRIDGING_WRAPPER_NONNULL(TypeAttributes)
AST_BRIDGING_WRAPPER_NONNULL(CustomAttribute)

// Non-AST types to generate wrappers for.
AST_BRIDGING_WRAPPER_NULLABLE(DiagnosticEngine)
Expand Down
56 changes: 30 additions & 26 deletions lib/AST/ASTBridging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1263,18 +1263,22 @@ void BridgedTypeAttributes_addSimpleAttr(BridgedTypeAttributes cAttributes,
typeAttributes->AtLoc = cAtLoc.unbridged();
}

bool BridgedTypeAttributes_isEmpty(BridgedTypeAttributes cAttributes) {
return cAttributes.unbridged()->empty();
}

//===----------------------------------------------------------------------===//
// MARK: TypeReprs
//===----------------------------------------------------------------------===//

BridgedTypeRepr BridgedSimpleIdentTypeRepr_createParsed(
BridgedSimpleIdentTypeRepr BridgedSimpleIdentTypeRepr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLoc, BridgedIdentifier id) {
ASTContext &context = cContext.unbridged();
return new (context) SimpleIdentTypeRepr(DeclNameLoc(cLoc.unbridged()),
DeclNameRef(id.unbridged()));
}

BridgedTypeRepr BridgedGenericIdentTypeRepr_createParsed(
BridgedGenericIdentTypeRepr BridgedGenericIdentTypeRepr_createParsed(
BridgedASTContext cContext, BridgedIdentifier name,
BridgedSourceLoc cNameLoc, BridgedArrayRef genericArgs,
BridgedSourceLoc cLAngleLoc, BridgedSourceLoc cRAngleLoc) {
Expand All @@ -1288,7 +1292,7 @@ BridgedTypeRepr BridgedGenericIdentTypeRepr_createParsed(
SourceRange{lAngleLoc, rAngleLoc});
}

BridgedTypeRepr
BridgedOptionalTypeRepr
BridgedOptionalTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cQuestionLoc) {
Expand All @@ -1297,15 +1301,16 @@ BridgedOptionalTypeRepr_createParsed(BridgedASTContext cContext,
OptionalTypeRepr(base.unbridged(), cQuestionLoc.unbridged());
}

BridgedTypeRepr BridgedImplicitlyUnwrappedOptionalTypeRepr_createParsed(
BridgedImplicitlyUnwrappedOptionalTypeRepr
BridgedImplicitlyUnwrappedOptionalTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedSourceLoc cExclamationLoc) {
ASTContext &context = cContext.unbridged();
return new (context) ImplicitlyUnwrappedOptionalTypeRepr(
base.unbridged(), cExclamationLoc.unbridged());
}

BridgedTypeRepr BridgedArrayTypeRepr_createParsed(
BridgedArrayTypeRepr BridgedArrayTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedSourceLoc cLSquareLoc, BridgedSourceLoc cRSquareLoc) {
ASTContext &context = cContext.unbridged();
Expand All @@ -1315,7 +1320,7 @@ BridgedTypeRepr BridgedArrayTypeRepr_createParsed(
ArrayTypeRepr(base.unbridged(), SourceRange{lSquareLoc, rSquareLoc});
}

BridgedTypeRepr BridgedDictionaryTypeRepr_createParsed(
BridgedDictionaryTypeRepr BridgedDictionaryTypeRepr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cLSquareLoc,
BridgedTypeRepr keyType, BridgedSourceLoc cColonloc,
BridgedTypeRepr valueType, BridgedSourceLoc cRSquareLoc) {
Expand All @@ -1328,7 +1333,7 @@ BridgedTypeRepr BridgedDictionaryTypeRepr_createParsed(
SourceRange{lSquareLoc, rSquareLoc});
}

BridgedTypeRepr
BridgedInverseTypeRepr
BridgedInverseTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cTildeLoc,
BridgedTypeRepr cConstraint) {
Expand All @@ -1337,7 +1342,7 @@ BridgedInverseTypeRepr_createParsed(BridgedASTContext cContext,
InverseTypeRepr(cTildeLoc.unbridged(), cConstraint.unbridged());
}

BridgedTypeRepr
BridgedMetatypeTypeRepr
BridgedMetatypeTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cTypeLoc) {
Expand All @@ -1346,7 +1351,7 @@ BridgedMetatypeTypeRepr_createParsed(BridgedASTContext cContext,
return new (context) MetatypeTypeRepr(baseType.unbridged(), tyLoc);
}

BridgedTypeRepr
BridgedProtocolTypeRepr
BridgedProtocolTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseType,
BridgedSourceLoc cProtoLoc) {
Expand All @@ -1355,7 +1360,7 @@ BridgedProtocolTypeRepr_createParsed(BridgedASTContext cContext,
return new (context) ProtocolTypeRepr(baseType.unbridged(), protoLoc);
}

BridgedTypeRepr
BridgedPackElementTypeRepr
BridgedPackElementTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cEachLoc) {
Expand All @@ -1364,7 +1369,7 @@ BridgedPackElementTypeRepr_createParsed(BridgedASTContext cContext,
PackElementTypeRepr(cEachLoc.unbridged(), base.unbridged());
}

BridgedTypeRepr
BridgedPackExpansionTypeRepr
BridgedPackExpansionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cRepeatLoc) {
Expand All @@ -1373,13 +1378,12 @@ BridgedPackExpansionTypeRepr_createParsed(BridgedASTContext cContext,
PackExpansionTypeRepr(cRepeatLoc.unbridged(), base.unbridged());
}

BridgedTypeRepr
BridgedAttributedTypeRepr
BridgedAttributedTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedTypeAttributes cAttributes) {
TypeAttributes *typeAttributes = cAttributes.unbridged();
if (typeAttributes->empty())
return base;
assert(!typeAttributes->empty());

ASTContext &context = cContext.unbridged();
auto attributedType =
Expand All @@ -1388,7 +1392,7 @@ BridgedAttributedTypeRepr_createParsed(BridgedASTContext cContext,
return attributedType;
}

BridgedTypeRepr BridgedSpecifierTypeRepr_createParsed(
BridgedSpecifierTypeRepr BridgedSpecifierTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr base,
BridgedAttributedTypeSpecifier specifier, BridgedSourceLoc cSpecifierLoc) {
ASTContext &context = cContext.unbridged();
Expand Down Expand Up @@ -1427,7 +1431,7 @@ BridgedTypeRepr BridgedSpecifierTypeRepr_createParsed(
}
}

BridgedTypeRepr
BridgedVarargTypeRepr
BridgedVarargTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr base,
BridgedSourceLoc cEllipsisLoc) {
Expand All @@ -1437,10 +1441,9 @@ BridgedVarargTypeRepr_createParsed(BridgedASTContext cContext,
return new (context) VarargTypeRepr(baseType, ellipsisLoc);
}

BridgedTypeRepr BridgedTupleTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc,
BridgedSourceLoc cRParenLoc) {
BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed(
BridgedASTContext cContext, BridgedArrayRef elements,
BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc) {
ASTContext &context = cContext.unbridged();
SourceLoc lParen = cLParenLoc.unbridged();
SourceLoc rParen = cRParenLoc.unbridged();
Expand Down Expand Up @@ -1474,15 +1477,15 @@ BridgedMemberTypeRepr_createParsed(BridgedASTContext cContext,
memberComponents);
}

BridgedTypeRepr
BridgedCompositionTypeRepr
BridgedCompositionTypeRepr_createEmpty(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc) {
ASTContext &context = cContext.unbridged();
SourceLoc anyLoc = cAnyLoc.unbridged();
return CompositionTypeRepr::createEmptyComposition(context, anyLoc);
}

BridgedTypeRepr
BridgedCompositionTypeRepr
BridgedCompositionTypeRepr_createParsed(BridgedASTContext cContext,
BridgedArrayRef cTypes,
BridgedSourceLoc cFirstAmpLoc) {
Expand All @@ -1494,7 +1497,7 @@ BridgedCompositionTypeRepr_createParsed(BridgedASTContext cContext,
SourceRange{firstAmpLoc, types.back()->getEndLoc()});
}

BridgedTypeRepr BridgedFunctionTypeRepr_createParsed(
BridgedFunctionTypeRepr BridgedFunctionTypeRepr_createParsed(
BridgedASTContext cContext, BridgedTypeRepr argsTy,
BridgedSourceLoc cAsyncLoc, BridgedSourceLoc cThrowsLoc,
BridgedNullableTypeRepr thrownType, BridgedSourceLoc cArrowLoc,
Expand All @@ -1506,22 +1509,23 @@ BridgedTypeRepr BridgedFunctionTypeRepr_createParsed(
resultType.unbridged());
}

BridgedTypeRepr
BridgedNamedOpaqueReturnTypeRepr
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr baseTy) {
ASTContext &context = cContext.unbridged();
return new (context) NamedOpaqueReturnTypeRepr(baseTy.unbridged(), nullptr);
}

BridgedTypeRepr
BridgedOpaqueReturnTypeRepr
BridgedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cOpaqueLoc,
BridgedTypeRepr baseTy) {
ASTContext &context = cContext.unbridged();
return new (context)
OpaqueReturnTypeRepr(cOpaqueLoc.unbridged(), baseTy.unbridged());
}
BridgedTypeRepr

BridgedExistentialTypeRepr
BridgedExistentialTypeRepr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAnyLoc,
BridgedTypeRepr baseTy) {
Expand Down
2 changes: 1 addition & 1 deletion lib/ASTGen/Sources/ASTGen/ParameterClause.swift
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ extension ASTGenVisitor {
self.ctx,
base: base,
ellipsisLoc: self.generateSourceLoc(ellipsis)
)
).asTypeRepr
}

return .createParsed(
Expand Down
Loading