Skip to content

Commit 4117512

Browse files
committed
[Syntax] Parse attributed types in expr position as TypeExprSyntax
rdar://problem/70101520 https://bugs.swift.org/browse/SR-13711
1 parent a665ba6 commit 4117512

File tree

3 files changed

+3
-0
lines changed

3 files changed

+3
-0
lines changed

lib/Parse/ParseExpr.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,7 @@ ParserResult<Expr> Parser::parseExprSequenceElement(Diag<> message,
421421
isType = canParseType();
422422
}
423423
if (isType) {
424+
SyntaxParsingContext TyExprCtx(SyntaxContext, SyntaxKind::TypeExpr);
424425
ParserResult<TypeRepr> ty = parseType();
425426
if (ty.isNonNull())
426427
return makeParserResult(

test/Syntax/Outputs/round_trip_parse_gen.swift.withkinds

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class C <MemberDeclBlock>{<MemberDeclListItem><FunctionDecl>
7373

7474
func foo3<FunctionSignature><ParameterClause>() </ParameterClause></FunctionSignature><CodeBlock>{<SequenceExpr><DiscardAssignmentExpr>
7575
_ </DiscardAssignmentExpr><AssignmentExpr>= </AssignmentExpr><FunctionCallExpr><ArrayExpr>[<ArrayElement><TypeExpr><SimpleTypeIdentifier>Any</SimpleTypeIdentifier></TypeExpr></ArrayElement>]</ArrayExpr>()</FunctionCallExpr></SequenceExpr><SequenceExpr><DiscardAssignmentExpr>
76+
_ </DiscardAssignmentExpr><AssignmentExpr>= </AssignmentExpr><MemberAccessExpr><TupleExpr>(<TupleExprElement><TypeExpr><AttributedType><Attribute>@convention(c) </Attribute><FunctionType>(<TupleTypeElement><SimpleTypeIdentifier>Int</SimpleTypeIdentifier></TupleTypeElement>) -> <SimpleTypeIdentifier>Void</SimpleTypeIdentifier></FunctionType></AttributedType></TypeExpr></TupleExprElement>)</TupleExpr>.self</MemberAccessExpr></SequenceExpr><SequenceExpr><DiscardAssignmentExpr>
7677
_ </DiscardAssignmentExpr><AssignmentExpr>= </AssignmentExpr><MemberAccessExpr><MemberAccessExpr><IdentifierExpr>a</IdentifierExpr>.a</MemberAccessExpr>.a</MemberAccessExpr></SequenceExpr><SequenceExpr><DiscardAssignmentExpr>
7778
_ </DiscardAssignmentExpr><AssignmentExpr>= </AssignmentExpr><MemberAccessExpr><IdentifierExpr>a</IdentifierExpr>.b</MemberAccessExpr></SequenceExpr><SequenceExpr><DiscardAssignmentExpr>
7879
_ </DiscardAssignmentExpr><AssignmentExpr>= </AssignmentExpr><MemberAccessExpr><IntegerLiteralExpr>1</IntegerLiteralExpr>.a</MemberAccessExpr></SequenceExpr><MemberAccessExpr><MemberAccessExpr><MemberAccessExpr><TupleExpr>

test/Syntax/round_trip_parse_gen.swift

+1
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ class C {
7373

7474
func foo3() {
7575
_ = [Any]()
76+
_ = (@convention(c) (Int) -> Void).self
7677
_ = a.a.a
7778
_ = a.b
7879
_ = 1.a

0 commit comments

Comments
 (0)