Skip to content

[ASTGen] Implement SequenceExpr generation #70168

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 4, 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
76 changes: 71 additions & 5 deletions include/swift/AST/ASTBridging.h
Original file line number Diff line number Diff line change
Expand Up @@ -644,6 +644,18 @@ BridgedStringRef BridgedVarDecl_getUserFacingName(BridgedVarDecl decl);
// MARK: Exprs
//===----------------------------------------------------------------------===//

SWIFT_NAME(
"BridgedArrowExpr.createParsed(_:asyncLoc:throwsLoc:thrownType:arrowLoc:)")
BridgedArrowExpr BridgedArrowExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAsyncLoc,
BridgedSourceLoc cThrowsLoc,
BridgedNullableExpr cThrownType,
BridgedSourceLoc cArrowLoc);

SWIFT_NAME("BridgedAssignExpr.createParsed(_:equalsLoc:)")
BridgedAssignExpr BridgedAssignExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cEqualsLoc);

SWIFT_NAME("BridgedCallExpr.createParsed(_:fn:args:)")
BridgedCallExpr BridgedCallExpr_createParsed(BridgedASTContext cContext,
BridgedExpr fn,
Expand All @@ -655,11 +667,34 @@ BridgedClosureExpr_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
BridgedBraceStmt body);

SWIFT_NAME("BridgedUnresolvedDeclRefExpr.createParsed(_:name:loc:)")
BridgedUnresolvedDeclRefExpr
BridgedUnresolvedDeclRefExpr_createParsed(BridgedASTContext cContext,
BridgedDeclNameRef cName,
BridgedDeclNameLoc cLoc);
SWIFT_NAME("BridgedCoerceExpr.createParsed(_:asLoc:type:)")
BridgedCoerceExpr BridgedCoerceExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAsLoc,
BridgedTypeRepr cType);

SWIFT_NAME(
"BridgedConditionalCheckedCastExpr.createParsed(_:asLoc:questionLoc:type:)")
BridgedConditionalCheckedCastExpr
BridgedConditionalCheckedCastExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAsLoc,
BridgedSourceLoc cQuestionLoc,
BridgedTypeRepr cType);

SWIFT_NAME("BridgedDiscardAssignmentExpr.createParsed(_:loc:)")
BridgedDiscardAssignmentExpr
BridgedDiscardAssignmentExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLoc);

SWIFT_NAME(
"BridgedForcedCheckedCastExpr.createParsed(_:asLoc:exclaimLoc:type:)")
BridgedForcedCheckedCastExpr BridgedForcedCheckedCastExpr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cAsLoc,
BridgedSourceLoc cExclaimLoc, BridgedTypeRepr cType);

SWIFT_NAME("BridgedIsExpr.createParsed(_:isLoc:type:)")
BridgedIsExpr BridgedIsExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cIsLoc,
BridgedTypeRepr cType);

SWIFT_NAME("BridgedSingleValueStmtExpr.createWithWrappedBranches(_:stmt:"
"declContext:mustBeExpr:)")
Expand All @@ -677,6 +712,11 @@ SWIFT_NAME("BridgedSequenceExpr.createParsed(_:exprs:)")
BridgedSequenceExpr BridgedSequenceExpr_createParsed(BridgedASTContext cContext,
BridgedArrayRef exprs);

SWIFT_NAME("BridgedTernaryExpr.createParsed(_:questionLoc:thenExpr:colonLoc:)")
BridgedTernaryExpr BridgedTernaryExpr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cQuestionLoc,
BridgedExpr cThenExpr, BridgedSourceLoc cColonLoc);

SWIFT_NAME("BridgedTupleExpr.createParsed(_:leftParenLoc:exprs:labels:"
"labelLocs:rightParenLoc:)")
BridgedTupleExpr BridgedTupleExpr_createParsed(
Expand Down Expand Up @@ -707,6 +747,32 @@ BridgedArrayExpr BridgedArrayExpr_createParsed(BridgedASTContext cContext,
BridgedArrayRef commas,
BridgedSourceLoc cRLoc);

SWIFT_NAME("BridgedPostfixUnaryExpr.createParsed(_:operator:operand:)")
BridgedPostfixUnaryExpr
BridgedPostfixUnaryExpr_createParsed(BridgedASTContext cContext,
BridgedExpr oper, BridgedExpr operand);

SWIFT_NAME("BridgedPrefixUnaryExpr.createParsed(_:operator:operand:)")
BridgedPrefixUnaryExpr
BridgedPrefixUnaryExpr_createParsed(BridgedASTContext cContext,
BridgedExpr oper, BridgedExpr operand);

SWIFT_NAME("BridgedTypeExpr.createParsed(_:type:)")
BridgedTypeExpr BridgedTypeExpr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr cType);

enum ENUM_EXTENSIBILITY_ATTR(open) BridgedDeclRefKind : size_t {
BridgedDeclRefKindOrdinary,
BridgedDeclRefKindBinaryOperator,
BridgedDeclRefKindPostfixOperator,
BridgedDeclRefKindPrefixOperator,
};

SWIFT_NAME("BridgedUnresolvedDeclRefExpr.createParsed(_:name:kind:loc:)")
BridgedUnresolvedDeclRefExpr BridgedUnresolvedDeclRefExpr_createParsed(
BridgedASTContext cContext, BridgedDeclNameRef cName,
BridgedDeclRefKind cKind, BridgedDeclNameLoc cLoc);

SWIFT_NAME("BridgedUnresolvedDotExpr.createParsed(_:base:dotLoc:name:nameLoc:)")
BridgedUnresolvedDotExpr BridgedUnresolvedDotExpr_createParsed(
BridgedASTContext cContext, BridgedExpr base, BridgedSourceLoc cDotLoc,
Expand Down
3 changes: 1 addition & 2 deletions include/swift/Parse/Parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -1698,8 +1698,7 @@ class Parser {
ParserResult<Expr> parseExprBasic(Diag<> ID) {
return parseExprImpl(ID, /*isExprBasic=*/true);
}
ParserResult<Expr> parseExprImpl(Diag<> ID, bool isExprBasic,
bool fromASTGen = false);
ParserResult<Expr> parseExprImpl(Diag<> ID, bool isExprBasic);
ParserResult<Expr> parseExprIs();
ParserResult<Expr> parseExprAs();
ParserResult<Expr> parseExprArrow();
Expand Down
102 changes: 95 additions & 7 deletions lib/AST/ASTBridging.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -869,6 +869,21 @@ bool BridgedNominalTypeDecl_isStructWithUnreferenceableStorage(
// MARK: Exprs
//===----------------------------------------------------------------------===//

BridgedArrowExpr BridgedArrowExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAsyncLoc,
BridgedSourceLoc cThrowsLoc,
BridgedNullableExpr cThrownType,
BridgedSourceLoc cArrowLoc) {
return new (cContext.unbridged())
ArrowExpr(cAsyncLoc.unbridged(), cThrowsLoc.unbridged(),
cThrownType.unbridged(), cArrowLoc.unbridged());
}

BridgedAssignExpr BridgedAssignExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cEqualsLoc) {
return new (cContext.unbridged()) AssignExpr(cEqualsLoc.unbridged());
}

BridgedClosureExpr
BridgedClosureExpr_createParsed(BridgedASTContext cContext,
BridgedDeclContext cDeclContext,
Expand All @@ -893,6 +908,45 @@ BridgedClosureExpr_createParsed(BridgedASTContext cContext,
return out;
}

BridgedCoerceExpr BridgedCoerceExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAsLoc,
BridgedTypeRepr cType) {
return CoerceExpr::create(cContext.unbridged(), cAsLoc.unbridged(),
cType.unbridged());
}

BridgedConditionalCheckedCastExpr
BridgedConditionalCheckedCastExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cAsLoc,
BridgedSourceLoc cQuestionLoc,
BridgedTypeRepr cType) {
return ConditionalCheckedCastExpr::create(
cContext.unbridged(), cAsLoc.unbridged(), cQuestionLoc.unbridged(),
cType.unbridged());
}

BridgedDiscardAssignmentExpr
BridgedDiscardAssignmentExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cLoc) {
return new (cContext.unbridged())
DiscardAssignmentExpr(cLoc.unbridged(), /*Implicit=*/false);
}

BridgedForcedCheckedCastExpr BridgedForcedCheckedCastExpr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cAsLoc,
BridgedSourceLoc cExclaimLoc, BridgedTypeRepr cType) {
return ForcedCheckedCastExpr::create(cContext.unbridged(), cAsLoc.unbridged(),
cExclaimLoc.unbridged(),
cType.unbridged());
}

BridgedIsExpr BridgedIsExpr_createParsed(BridgedASTContext cContext,
BridgedSourceLoc cIsLoc,
BridgedTypeRepr cType) {
return IsExpr::create(cContext.unbridged(), cIsLoc.unbridged(),
cType.unbridged());
}

BridgedSequenceExpr BridgedSequenceExpr_createParsed(BridgedASTContext cContext,
BridgedArrayRef exprs) {
return SequenceExpr::create(cContext.unbridged(), exprs.unbridged<Expr *>());
Expand Down Expand Up @@ -928,13 +982,26 @@ BridgedCallExpr BridgedCallExpr_createParsed(BridgedASTContext cContext,
/*implicit*/ false);
}

BridgedUnresolvedDeclRefExpr
BridgedUnresolvedDeclRefExpr_createParsed(BridgedASTContext cContext,
BridgedDeclNameRef cName,
BridgedDeclNameLoc cLoc) {
ASTContext &context = cContext.unbridged();
return new (context) UnresolvedDeclRefExpr(
cName.unbridged(), DeclRefKind::Ordinary, cLoc.unbridged());
BridgedUnresolvedDeclRefExpr BridgedUnresolvedDeclRefExpr_createParsed(
BridgedASTContext cContext, BridgedDeclNameRef cName,
BridgedDeclRefKind cKind, BridgedDeclNameLoc cLoc) {
DeclRefKind kind;
switch (cKind) {
case BridgedDeclRefKindOrdinary:
kind = DeclRefKind::Ordinary;
break;
case BridgedDeclRefKindBinaryOperator:
kind = DeclRefKind::BinaryOperator;
break;
case BridgedDeclRefKindPostfixOperator:
kind = DeclRefKind::PostfixOperator;
break;
case BridgedDeclRefKindPrefixOperator:
kind = DeclRefKind::PrefixOperator;
break;
}
return new (cContext.unbridged())
UnresolvedDeclRefExpr(cName.unbridged(), kind, cLoc.unbridged());
}

BridgedStringLiteralExpr
Expand Down Expand Up @@ -979,6 +1046,20 @@ BridgedNilLiteralExpr_createParsed(BridgedASTContext cContext,
return new (cContext.unbridged()) NilLiteralExpr(cNilKeywordLoc.unbridged());
}

BridgedPostfixUnaryExpr
BridgedPostfixUnaryExpr_createParsed(BridgedASTContext cContext,
BridgedExpr oper, BridgedExpr operand) {
return PostfixUnaryExpr::create(cContext.unbridged(), oper.unbridged(),
operand.unbridged());
}

BridgedPrefixUnaryExpr
BridgedPrefixUnaryExpr_createParsed(BridgedASTContext cContext,
BridgedExpr oper, BridgedExpr operand) {
return PrefixUnaryExpr::create(cContext.unbridged(), oper.unbridged(),
operand.unbridged());
}

BridgedSingleValueStmtExpr BridgedSingleValueStmtExpr_createWithWrappedBranches(
BridgedASTContext cContext, BridgedStmt S, BridgedDeclContext cDeclContext,
bool mustBeExpr) {
Expand All @@ -988,6 +1069,13 @@ BridgedSingleValueStmtExpr BridgedSingleValueStmtExpr_createWithWrappedBranches(
context, S.unbridged(), declContext, mustBeExpr);
}

BridgedTernaryExpr BridgedTernaryExpr_createParsed(
BridgedASTContext cContext, BridgedSourceLoc cQuestionLoc,
BridgedExpr cThenExpr, BridgedSourceLoc cColonLoc) {
return new (cContext.unbridged()) TernaryExpr(
cQuestionLoc.unbridged(), cThenExpr.unbridged(), cColonLoc.unbridged());
}

BridgedTypeExpr BridgedTypeExpr_createParsed(BridgedASTContext cContext,
BridgedTypeRepr cType) {
ASTContext &context = cContext.unbridged();
Expand Down
Loading