Skip to content

Commit 5dfa894

Browse files
authored
Merge pull request #60191 from ahoppen/pr/await-contextual-keyword
[SourceKit] Register await as a contextual keyword
2 parents d1cbc2b + 83380f2 commit 5dfa894

File tree

4 files changed

+66
-2
lines changed

4 files changed

+66
-2
lines changed

lib/Parse/ParseExpr.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,7 @@ ParserResult<Expr> Parser::parseExprSequenceElement(Diag<> message,
413413
diagnose(Tok.getLoc(), diag::expected_await_not_async)
414414
.fixItReplace(Tok.getLoc(), "await");
415415
}
416+
Tok.setKind(tok::contextual_keyword);
416417
SourceLoc awaitLoc = consumeToken();
417418
ParserResult<Expr> sub =
418419
parseExprSequenceElement(diag::expected_expr_after_await, isExprBasic);
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// RUN: %sourcekitd-test -req=syntax-map %s > %t.response
2+
// RUN: %diff -u %s.response %t.response
3+
4+
func foo() async {}
5+
func test() async {
6+
await foo()
7+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
{
2+
key.offset: 0,
3+
key.length: 156,
4+
key.diagnostic_stage: source.diagnostic.stage.swift.parse,
5+
key.syntaxmap: [
6+
{
7+
key.kind: source.lang.swift.syntaxtype.comment,
8+
key.offset: 0,
9+
key.length: 58
10+
},
11+
{
12+
key.kind: source.lang.swift.syntaxtype.comment,
13+
key.offset: 58,
14+
key.length: 41
15+
},
16+
{
17+
key.kind: source.lang.swift.syntaxtype.keyword,
18+
key.offset: 100,
19+
key.length: 4
20+
},
21+
{
22+
key.kind: source.lang.swift.syntaxtype.identifier,
23+
key.offset: 105,
24+
key.length: 3
25+
},
26+
{
27+
key.kind: source.lang.swift.syntaxtype.keyword,
28+
key.offset: 111,
29+
key.length: 5
30+
},
31+
{
32+
key.kind: source.lang.swift.syntaxtype.keyword,
33+
key.offset: 120,
34+
key.length: 4
35+
},
36+
{
37+
key.kind: source.lang.swift.syntaxtype.identifier,
38+
key.offset: 125,
39+
key.length: 4
40+
},
41+
{
42+
key.kind: source.lang.swift.syntaxtype.keyword,
43+
key.offset: 132,
44+
key.length: 5
45+
},
46+
{
47+
key.kind: source.lang.swift.syntaxtype.keyword,
48+
key.offset: 142,
49+
key.length: 5
50+
},
51+
{
52+
key.kind: source.lang.swift.syntaxtype.identifier,
53+
key.offset: 148,
54+
key.length: 3
55+
}
56+
]
57+
}

utils/gyb_syntax_support/ExprNodes.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@
4949
# await foo()
5050
Node('AwaitExpr', kind='Expr',
5151
children=[
52-
Child('AwaitKeyword', kind='IdentifierToken',
53-
classification='Keyword',
52+
Child('AwaitKeyword', kind='ContextualKeywordToken',
5453
text_choices=['await']),
5554
Child('Expression', kind='Expr'),
5655
]),

0 commit comments

Comments
 (0)