Skip to content

Commit a21d732

Browse files
committed
[ASTGen] Implement SequenceExpr generation
1 parent c46eb58 commit a21d732

File tree

8 files changed

+403
-55
lines changed

8 files changed

+403
-55
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 71 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -644,6 +644,18 @@ BridgedStringRef BridgedVarDecl_getUserFacingName(BridgedVarDecl decl);
644644
// MARK: Exprs
645645
//===----------------------------------------------------------------------===//
646646

647+
SWIFT_NAME(
648+
"BridgedArrowExpr.createParsed(_:asyncLoc:throwsLoc:thrownType:arrowLoc:)")
649+
BridgedArrowExpr BridgedArrowExpr_createParsed(BridgedASTContext cContext,
650+
BridgedSourceLoc cAsyncLoc,
651+
BridgedSourceLoc cThrowsLoc,
652+
BridgedNullableExpr cThrownType,
653+
BridgedSourceLoc cArrowLoc);
654+
655+
SWIFT_NAME("BridgedAssignExpr.createParsed(_:equalsLoc:)")
656+
BridgedAssignExpr BridgedAssignExpr_createParsed(BridgedASTContext cContext,
657+
BridgedSourceLoc cEqualsLoc);
658+
647659
SWIFT_NAME("BridgedCallExpr.createParsed(_:fn:args:)")
648660
BridgedCallExpr BridgedCallExpr_createParsed(BridgedASTContext cContext,
649661
BridgedExpr fn,
@@ -655,11 +667,34 @@ BridgedClosureExpr_createParsed(BridgedASTContext cContext,
655667
BridgedDeclContext cDeclContext,
656668
BridgedBraceStmt body);
657669

658-
SWIFT_NAME("BridgedUnresolvedDeclRefExpr.createParsed(_:name:loc:)")
659-
BridgedUnresolvedDeclRefExpr
660-
BridgedUnresolvedDeclRefExpr_createParsed(BridgedASTContext cContext,
661-
BridgedDeclNameRef cName,
662-
BridgedDeclNameLoc cLoc);
670+
SWIFT_NAME("BridgedCoerceExpr.createParsed(_:asLoc:type:)")
671+
BridgedCoerceExpr BridgedCoerceExpr_createParsed(BridgedASTContext cContext,
672+
BridgedSourceLoc cAsLoc,
673+
BridgedTypeRepr cType);
674+
675+
SWIFT_NAME(
676+
"BridgedConditionalCheckedCastExpr.createParsed(_:asLoc:questionLoc:type:)")
677+
BridgedConditionalCheckedCastExpr
678+
BridgedConditionalCheckedCastExpr_createParsed(BridgedASTContext cContext,
679+
BridgedSourceLoc cAsLoc,
680+
BridgedSourceLoc cQuestionLoc,
681+
BridgedTypeRepr cType);
682+
683+
SWIFT_NAME("BridgedDiscardAssignmentExpr.createParsed(_:loc:)")
684+
BridgedDiscardAssignmentExpr
685+
BridgedDiscardAssignmentExpr_createParsed(BridgedASTContext cContext,
686+
BridgedSourceLoc cLoc);
687+
688+
SWIFT_NAME(
689+
"BridgedForcedCheckedCastExpr.createParsed(_:asLoc:exclaimLoc:type:)")
690+
BridgedForcedCheckedCastExpr BridgedForcedCheckedCastExpr_createParsed(
691+
BridgedASTContext cContext, BridgedSourceLoc cAsLoc,
692+
BridgedSourceLoc cExclaimLoc, BridgedTypeRepr cType);
693+
694+
SWIFT_NAME("BridgedIsExpr.createParsed(_:isLoc:type:)")
695+
BridgedIsExpr BridgedIsExpr_createParsed(BridgedASTContext cContext,
696+
BridgedSourceLoc cIsLoc,
697+
BridgedTypeRepr cType);
663698

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

715+
SWIFT_NAME("BridgedTernaryExpr.createParsed(_:questionLoc:thenExpr:colonLoc:)")
716+
BridgedTernaryExpr BridgedTernaryExpr_createParsed(
717+
BridgedASTContext cContext, BridgedSourceLoc cQuestionLoc,
718+
BridgedExpr cThenExpr, BridgedSourceLoc cColonLoc);
719+
680720
SWIFT_NAME("BridgedTupleExpr.createParsed(_:leftParenLoc:exprs:labels:"
681721
"labelLocs:rightParenLoc:)")
682722
BridgedTupleExpr BridgedTupleExpr_createParsed(
@@ -707,6 +747,32 @@ BridgedArrayExpr BridgedArrayExpr_createParsed(BridgedASTContext cContext,
707747
BridgedArrayRef commas,
708748
BridgedSourceLoc cRLoc);
709749

750+
SWIFT_NAME("BridgedPostfixUnaryExpr.createParsed(_:operator:operand:)")
751+
BridgedPostfixUnaryExpr
752+
BridgedPostfixUnaryExpr_createParsed(BridgedASTContext cContext,
753+
BridgedExpr oper, BridgedExpr operand);
754+
755+
SWIFT_NAME("BridgedPrefixUnaryExpr.createParsed(_:operator:operand:)")
756+
BridgedPrefixUnaryExpr
757+
BridgedPrefixUnaryExpr_createParsed(BridgedASTContext cContext,
758+
BridgedExpr oper, BridgedExpr operand);
759+
760+
SWIFT_NAME("BridgedTypeExpr.createParsed(_:type:)")
761+
BridgedTypeExpr BridgedTypeExpr_createParsed(BridgedASTContext cContext,
762+
BridgedTypeRepr cType);
763+
764+
enum ENUM_EXTENSIBILITY_ATTR(open) BridgedDeclRefKind : size_t {
765+
BridgedDeclRefKindOrdinary,
766+
BridgedDeclRefKindBinaryOperator,
767+
BridgedDeclRefKindPostfixOperator,
768+
BridgedDeclRefKindPrefixOperator,
769+
};
770+
771+
SWIFT_NAME("BridgedUnresolvedDeclRefExpr.createParsed(_:name:kind:loc:)")
772+
BridgedUnresolvedDeclRefExpr BridgedUnresolvedDeclRefExpr_createParsed(
773+
BridgedASTContext cContext, BridgedDeclNameRef cName,
774+
BridgedDeclRefKind cKind, BridgedDeclNameLoc cLoc);
775+
710776
SWIFT_NAME("BridgedUnresolvedDotExpr.createParsed(_:base:dotLoc:name:nameLoc:)")
711777
BridgedUnresolvedDotExpr BridgedUnresolvedDotExpr_createParsed(
712778
BridgedASTContext cContext, BridgedExpr base, BridgedSourceLoc cDotLoc,

include/swift/Parse/Parser.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1698,8 +1698,7 @@ class Parser {
16981698
ParserResult<Expr> parseExprBasic(Diag<> ID) {
16991699
return parseExprImpl(ID, /*isExprBasic=*/true);
17001700
}
1701-
ParserResult<Expr> parseExprImpl(Diag<> ID, bool isExprBasic,
1702-
bool fromASTGen = false);
1701+
ParserResult<Expr> parseExprImpl(Diag<> ID, bool isExprBasic);
17031702
ParserResult<Expr> parseExprIs();
17041703
ParserResult<Expr> parseExprAs();
17051704
ParserResult<Expr> parseExprArrow();

lib/AST/ASTBridging.cpp

Lines changed: 95 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -869,6 +869,21 @@ bool BridgedNominalTypeDecl_isStructWithUnreferenceableStorage(
869869
// MARK: Exprs
870870
//===----------------------------------------------------------------------===//
871871

872+
BridgedArrowExpr BridgedArrowExpr_createParsed(BridgedASTContext cContext,
873+
BridgedSourceLoc cAsyncLoc,
874+
BridgedSourceLoc cThrowsLoc,
875+
BridgedNullableExpr cThrownType,
876+
BridgedSourceLoc cArrowLoc) {
877+
return new (cContext.unbridged())
878+
ArrowExpr(cAsyncLoc.unbridged(), cThrowsLoc.unbridged(),
879+
cThrownType.unbridged(), cArrowLoc.unbridged());
880+
}
881+
882+
BridgedAssignExpr BridgedAssignExpr_createParsed(BridgedASTContext cContext,
883+
BridgedSourceLoc cEqualsLoc) {
884+
return new (cContext.unbridged()) AssignExpr(cEqualsLoc.unbridged());
885+
}
886+
872887
BridgedClosureExpr
873888
BridgedClosureExpr_createParsed(BridgedASTContext cContext,
874889
BridgedDeclContext cDeclContext,
@@ -893,6 +908,45 @@ BridgedClosureExpr_createParsed(BridgedASTContext cContext,
893908
return out;
894909
}
895910

911+
BridgedCoerceExpr BridgedCoerceExpr_createParsed(BridgedASTContext cContext,
912+
BridgedSourceLoc cAsLoc,
913+
BridgedTypeRepr cType) {
914+
return CoerceExpr::create(cContext.unbridged(), cAsLoc.unbridged(),
915+
cType.unbridged());
916+
}
917+
918+
BridgedConditionalCheckedCastExpr
919+
BridgedConditionalCheckedCastExpr_createParsed(BridgedASTContext cContext,
920+
BridgedSourceLoc cAsLoc,
921+
BridgedSourceLoc cQuestionLoc,
922+
BridgedTypeRepr cType) {
923+
return ConditionalCheckedCastExpr::create(
924+
cContext.unbridged(), cAsLoc.unbridged(), cQuestionLoc.unbridged(),
925+
cType.unbridged());
926+
}
927+
928+
BridgedDiscardAssignmentExpr
929+
BridgedDiscardAssignmentExpr_createParsed(BridgedASTContext cContext,
930+
BridgedSourceLoc cLoc) {
931+
return new (cContext.unbridged())
932+
DiscardAssignmentExpr(cLoc.unbridged(), /*Implicit=*/false);
933+
}
934+
935+
BridgedForcedCheckedCastExpr BridgedForcedCheckedCastExpr_createParsed(
936+
BridgedASTContext cContext, BridgedSourceLoc cAsLoc,
937+
BridgedSourceLoc cExclaimLoc, BridgedTypeRepr cType) {
938+
return ForcedCheckedCastExpr::create(cContext.unbridged(), cAsLoc.unbridged(),
939+
cExclaimLoc.unbridged(),
940+
cType.unbridged());
941+
}
942+
943+
BridgedIsExpr BridgedIsExpr_createParsed(BridgedASTContext cContext,
944+
BridgedSourceLoc cIsLoc,
945+
BridgedTypeRepr cType) {
946+
return IsExpr::create(cContext.unbridged(), cIsLoc.unbridged(),
947+
cType.unbridged());
948+
}
949+
896950
BridgedSequenceExpr BridgedSequenceExpr_createParsed(BridgedASTContext cContext,
897951
BridgedArrayRef exprs) {
898952
return SequenceExpr::create(cContext.unbridged(), exprs.unbridged<Expr *>());
@@ -928,13 +982,26 @@ BridgedCallExpr BridgedCallExpr_createParsed(BridgedASTContext cContext,
928982
/*implicit*/ false);
929983
}
930984

931-
BridgedUnresolvedDeclRefExpr
932-
BridgedUnresolvedDeclRefExpr_createParsed(BridgedASTContext cContext,
933-
BridgedDeclNameRef cName,
934-
BridgedDeclNameLoc cLoc) {
935-
ASTContext &context = cContext.unbridged();
936-
return new (context) UnresolvedDeclRefExpr(
937-
cName.unbridged(), DeclRefKind::Ordinary, cLoc.unbridged());
985+
BridgedUnresolvedDeclRefExpr BridgedUnresolvedDeclRefExpr_createParsed(
986+
BridgedASTContext cContext, BridgedDeclNameRef cName,
987+
BridgedDeclRefKind cKind, BridgedDeclNameLoc cLoc) {
988+
DeclRefKind kind;
989+
switch (cKind) {
990+
case BridgedDeclRefKindOrdinary:
991+
kind = DeclRefKind::Ordinary;
992+
break;
993+
case BridgedDeclRefKindBinaryOperator:
994+
kind = DeclRefKind::BinaryOperator;
995+
break;
996+
case BridgedDeclRefKindPostfixOperator:
997+
kind = DeclRefKind::PostfixOperator;
998+
break;
999+
case BridgedDeclRefKindPrefixOperator:
1000+
kind = DeclRefKind::PrefixOperator;
1001+
break;
1002+
}
1003+
return new (cContext.unbridged())
1004+
UnresolvedDeclRefExpr(cName.unbridged(), kind, cLoc.unbridged());
9381005
}
9391006

9401007
BridgedStringLiteralExpr
@@ -979,6 +1046,20 @@ BridgedNilLiteralExpr_createParsed(BridgedASTContext cContext,
9791046
return new (cContext.unbridged()) NilLiteralExpr(cNilKeywordLoc.unbridged());
9801047
}
9811048

1049+
BridgedPostfixUnaryExpr
1050+
BridgedPostfixUnaryExpr_createParsed(BridgedASTContext cContext,
1051+
BridgedExpr oper, BridgedExpr operand) {
1052+
return PostfixUnaryExpr::create(cContext.unbridged(), oper.unbridged(),
1053+
operand.unbridged());
1054+
}
1055+
1056+
BridgedPrefixUnaryExpr
1057+
BridgedPrefixUnaryExpr_createParsed(BridgedASTContext cContext,
1058+
BridgedExpr oper, BridgedExpr operand) {
1059+
return PrefixUnaryExpr::create(cContext.unbridged(), oper.unbridged(),
1060+
operand.unbridged());
1061+
}
1062+
9821063
BridgedSingleValueStmtExpr BridgedSingleValueStmtExpr_createWithWrappedBranches(
9831064
BridgedASTContext cContext, BridgedStmt S, BridgedDeclContext cDeclContext,
9841065
bool mustBeExpr) {
@@ -988,6 +1069,13 @@ BridgedSingleValueStmtExpr BridgedSingleValueStmtExpr_createWithWrappedBranches(
9881069
context, S.unbridged(), declContext, mustBeExpr);
9891070
}
9901071

1072+
BridgedTernaryExpr BridgedTernaryExpr_createParsed(
1073+
BridgedASTContext cContext, BridgedSourceLoc cQuestionLoc,
1074+
BridgedExpr cThenExpr, BridgedSourceLoc cColonLoc) {
1075+
return new (cContext.unbridged()) TernaryExpr(
1076+
cQuestionLoc.unbridged(), cThenExpr.unbridged(), cColonLoc.unbridged());
1077+
}
1078+
9911079
BridgedTypeExpr BridgedTypeExpr_createParsed(BridgedASTContext cContext,
9921080
BridgedTypeRepr cType) {
9931081
ASTContext &context = cContext.unbridged();

0 commit comments

Comments
 (0)