Skip to content

Commit feb8c6f

Browse files
committed
[SourceKit] Highlight consuming and borrowing as keywords
1 parent c95d3e2 commit feb8c6f

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

lib/Parse/ParseDecl.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4573,6 +4573,7 @@ Parser::parseTypeAttributeListPresent(ParamDecl::Specifier &Specifier,
45734573
}
45744574

45754575
if (Tok.isContextualKeyword("_const")) {
4576+
Tok.setKind(tok::contextual_keyword);
45764577
ConstLoc = consumeToken();
45774578
continue;
45784579
}
@@ -4595,6 +4596,7 @@ Parser::parseTypeAttributeListPresent(ParamDecl::Specifier &Specifier,
45954596
}
45964597
}
45974598
}
4599+
Tok.setKind(tok::contextual_keyword);
45984600
SpecifierLoc = consumeToken();
45994601
}
46004602

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
func foo(a: consuming Int, b: borrowing Int, c: _const Int) {}
2+
3+
// RUN: %sourcekitd-test -req=syntax-map %s | %FileCheck %s
4+
5+
// CHECK: key.syntaxmap: [
6+
// CHECK-NEXT: {
7+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.keyword,
8+
// CHECK-NEXT: key.offset: 0,
9+
// CHECK-NEXT: key.length: 4
10+
// CHECK-NEXT: },
11+
// CHECK-NEXT: {
12+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.identifier,
13+
// CHECK-NEXT: key.offset: 5,
14+
// CHECK-NEXT: key.length: 3
15+
// CHECK-NEXT: },
16+
// CHECK-NEXT: {
17+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.identifier,
18+
// CHECK-NEXT: key.offset: 9,
19+
// CHECK-NEXT: key.length: 1
20+
// CHECK-NEXT: },
21+
// CHECK-NEXT: {
22+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.keyword,
23+
// CHECK-NEXT: key.offset: 12,
24+
// CHECK-NEXT: key.length: 9
25+
// CHECK-NEXT: },
26+
// CHECK-NEXT: {
27+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.typeidentifier,
28+
// CHECK-NEXT: key.offset: 22,
29+
// CHECK-NEXT: key.length: 3
30+
// CHECK-NEXT: },
31+
// CHECK-NEXT: {
32+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.identifier,
33+
// CHECK-NEXT: key.offset: 27,
34+
// CHECK-NEXT: key.length: 1
35+
// CHECK-NEXT: },
36+
// CHECK-NEXT: {
37+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.keyword,
38+
// CHECK-NEXT: key.offset: 30,
39+
// CHECK-NEXT: key.length: 9
40+
// CHECK-NEXT: },
41+
// CHECK-NEXT: {
42+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.typeidentifier,
43+
// CHECK-NEXT: key.offset: 40,
44+
// CHECK-NEXT: key.length: 3
45+
// CHECK-NEXT: },
46+
// CHECK-NEXT: {
47+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.identifier,
48+
// CHECK-NEXT: key.offset: 45,
49+
// CHECK-NEXT: key.length: 1
50+
// CHECK-NEXT: },
51+
// CHECK-NEXT: {
52+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.keyword,
53+
// CHECK-NEXT: key.offset: 48,
54+
// CHECK-NEXT: key.length: 6
55+
// CHECK-NEXT: },
56+
// CHECK-NEXT: {
57+
// CHECK-NEXT: key.kind: source.lang.swift.syntaxtype.typeidentifier,
58+
// CHECK-NEXT: key.offset: 55,
59+
// CHECK-NEXT: key.length: 3
60+
// CHECK-NEXT: },

0 commit comments

Comments
 (0)