Skip to content

Commit d472fd3

Browse files
committed
Handle inline comments
Fixes #572
1 parent e953e51 commit d472fd3

File tree

5 files changed

+215
-0
lines changed

5 files changed

+215
-0
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ variables:
2929
matchingParenthesis: (\(([^\(\)]|(\([^\(\)]*\)))*\))
3030
matchingBraces: (\{([^\{\}]|(\{[^\{\}]*\}))*\})
3131
matchingBrackets: (\[([^\[\]]|(\[[^\[\]]*\]))*\])
32+
inlineComment: \/\*([^\*]|(\*[^\/]))*\*\/
3233
# Identifier start | matching braces | matching parenthesis | matching square brackets
3334
typeParamersStart: ([_$[:alpha:]]|{{matchingBraces}}|{{matchingParenthesis}}|{{matchingBrackets}})
3435
typeParameters: (<\s*{{typeParamersStart}}([^=<>]|=[^<]|\<\s*{{typeParamersStart}}([^=<>]|=[^<])*\>)*>\s*)
@@ -462,6 +463,7 @@ repository:
462463
'5': { name: meta.definition.function.ts entity.name.function.ts }
463464
end: (?=$|^|;)|(?<=\})
464465
patterns:
466+
- include: '#function-name'
465467
- include: '#function-body'
466468

467469
function-expression:
@@ -474,15 +476,22 @@ repository:
474476
'4': { name: meta.definition.function.ts entity.name.function.ts }
475477
end: (?<=\})
476478
patterns:
479+
- include: '#function-name'
477480
- include: '#function-body'
478481

482+
function-name:
483+
name: meta.definition.function.ts entity.name.function.ts
484+
match: '{{identifier}}'
485+
479486
function-body:
480487
patterns:
481488
- include: '#comment'
482489
- include: '#type-parameters'
483490
- include: '#function-parameters'
484491
- include: '#return-type'
485492
- include: '#decl-block'
493+
- name: keyword.generator.asterisk.ts
494+
match: \*
486495

487496
method-declaration:
488497
patterns:
@@ -721,6 +730,7 @@ repository:
721730
- include: '#variable-initializer'
722731
- include: '#access-modifier'
723732
- include: '#property-accessor'
733+
- include: '#async-modifier'
724734
- include: '#after-operator-block-as-object-literal'
725735
- include: '#decl-block'
726736
- include: '#expression'
@@ -735,6 +745,10 @@ repository:
735745
name: storage.type.property.ts
736746
match: '{{startOfIdentifier}}(get|set){{endOfIdentifier}}'
737747

748+
async-modifier:
749+
name: storage.modifier.async.ts
750+
match: '{{startOfIdentifier}}(async){{endOfIdentifier}}'
751+
738752
#enum
739753
enum-declaration:
740754
name: meta.enum.declaration.ts
@@ -1159,6 +1173,14 @@ repository:
11591173
patterns:
11601174
- name: keyword.control.flow.ts
11611175
match: '{{startOfIdentifier}}(await){{endOfIdentifier}}'
1176+
- begin: '{{startOfIdentifier}}(yield){{endOfIdentifier}}(?=\s*{{inlineComment}}\s*\*)'
1177+
beginCaptures:
1178+
'1': { name: keyword.control.flow.ts }
1179+
end: \*
1180+
endCaptures:
1181+
'0': { name: keyword.generator.asterisk.ts }
1182+
patterns:
1183+
- include: '#comment'
11621184
- match: '{{startOfIdentifier}}(yield){{endOfIdentifier}}(?:\s*(\*))?'
11631185
captures:
11641186
'1': { name: keyword.control.flow.ts }

TypeScript.tmLanguage

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1404,6 +1404,10 @@
14041404
<string>(?=$|^|;)|(?&lt;=\})</string>
14051405
<key>patterns</key>
14061406
<array>
1407+
<dict>
1408+
<key>include</key>
1409+
<string>#function-name</string>
1410+
</dict>
14071411
<dict>
14081412
<key>include</key>
14091413
<string>#function-body</string>
@@ -1443,12 +1447,23 @@
14431447
<string>(?&lt;=\})</string>
14441448
<key>patterns</key>
14451449
<array>
1450+
<dict>
1451+
<key>include</key>
1452+
<string>#function-name</string>
1453+
</dict>
14461454
<dict>
14471455
<key>include</key>
14481456
<string>#function-body</string>
14491457
</dict>
14501458
</array>
14511459
</dict>
1460+
<key>function-name</key>
1461+
<dict>
1462+
<key>name</key>
1463+
<string>meta.definition.function.ts entity.name.function.ts</string>
1464+
<key>match</key>
1465+
<string>[_$[:alpha:]][_$[:alnum:]]*</string>
1466+
</dict>
14521467
<key>function-body</key>
14531468
<dict>
14541469
<key>patterns</key>
@@ -1473,6 +1488,12 @@
14731488
<key>include</key>
14741489
<string>#decl-block</string>
14751490
</dict>
1491+
<dict>
1492+
<key>name</key>
1493+
<string>keyword.generator.asterisk.ts</string>
1494+
<key>match</key>
1495+
<string>\*</string>
1496+
</dict>
14761497
</array>
14771498
</dict>
14781499
<key>method-declaration</key>
@@ -2232,6 +2253,10 @@
22322253
<key>include</key>
22332254
<string>#property-accessor</string>
22342255
</dict>
2256+
<dict>
2257+
<key>include</key>
2258+
<string>#async-modifier</string>
2259+
</dict>
22352260
<dict>
22362261
<key>include</key>
22372262
<string>#after-operator-block-as-object-literal</string>
@@ -2268,6 +2293,13 @@
22682293
<key>match</key>
22692294
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(get|set)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
22702295
</dict>
2296+
<key>async-modifier</key>
2297+
<dict>
2298+
<key>name</key>
2299+
<string>storage.modifier.async.ts</string>
2300+
<key>match</key>
2301+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(async)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
2302+
</dict>
22712303
<key>enum-declaration</key>
22722304
<dict>
22732305
<key>name</key>
@@ -3612,6 +3644,35 @@
36123644
<key>match</key>
36133645
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(await)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
36143646
</dict>
3647+
<dict>
3648+
<key>begin</key>
3649+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?=\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*\*)</string>
3650+
<key>beginCaptures</key>
3651+
<dict>
3652+
<key>1</key>
3653+
<dict>
3654+
<key>name</key>
3655+
<string>keyword.control.flow.ts</string>
3656+
</dict>
3657+
</dict>
3658+
<key>end</key>
3659+
<string>\*</string>
3660+
<key>endCaptures</key>
3661+
<dict>
3662+
<key>0</key>
3663+
<dict>
3664+
<key>name</key>
3665+
<string>keyword.generator.asterisk.ts</string>
3666+
</dict>
3667+
</dict>
3668+
<key>patterns</key>
3669+
<array>
3670+
<dict>
3671+
<key>include</key>
3672+
<string>#comment</string>
3673+
</dict>
3674+
</array>
3675+
</dict>
36153676
<dict>
36163677
<key>match</key>
36173678
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s*(\*))?</string>

TypeScriptReact.tmLanguage

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1408,6 +1408,10 @@
14081408
<string>(?=$|^|;)|(?&lt;=\})</string>
14091409
<key>patterns</key>
14101410
<array>
1411+
<dict>
1412+
<key>include</key>
1413+
<string>#function-name</string>
1414+
</dict>
14111415
<dict>
14121416
<key>include</key>
14131417
<string>#function-body</string>
@@ -1447,12 +1451,23 @@
14471451
<string>(?&lt;=\})</string>
14481452
<key>patterns</key>
14491453
<array>
1454+
<dict>
1455+
<key>include</key>
1456+
<string>#function-name</string>
1457+
</dict>
14501458
<dict>
14511459
<key>include</key>
14521460
<string>#function-body</string>
14531461
</dict>
14541462
</array>
14551463
</dict>
1464+
<key>function-name</key>
1465+
<dict>
1466+
<key>name</key>
1467+
<string>meta.definition.function.tsx entity.name.function.tsx</string>
1468+
<key>match</key>
1469+
<string>[_$[:alpha:]][_$[:alnum:]]*</string>
1470+
</dict>
14561471
<key>function-body</key>
14571472
<dict>
14581473
<key>patterns</key>
@@ -1477,6 +1492,12 @@
14771492
<key>include</key>
14781493
<string>#decl-block</string>
14791494
</dict>
1495+
<dict>
1496+
<key>name</key>
1497+
<string>keyword.generator.asterisk.tsx</string>
1498+
<key>match</key>
1499+
<string>\*</string>
1500+
</dict>
14801501
</array>
14811502
</dict>
14821503
<key>method-declaration</key>
@@ -2236,6 +2257,10 @@
22362257
<key>include</key>
22372258
<string>#property-accessor</string>
22382259
</dict>
2260+
<dict>
2261+
<key>include</key>
2262+
<string>#async-modifier</string>
2263+
</dict>
22392264
<dict>
22402265
<key>include</key>
22412266
<string>#after-operator-block-as-object-literal</string>
@@ -2272,6 +2297,13 @@
22722297
<key>match</key>
22732298
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(get|set)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
22742299
</dict>
2300+
<key>async-modifier</key>
2301+
<dict>
2302+
<key>name</key>
2303+
<string>storage.modifier.async.tsx</string>
2304+
<key>match</key>
2305+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(async)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
2306+
</dict>
22752307
<key>enum-declaration</key>
22762308
<dict>
22772309
<key>name</key>
@@ -3558,6 +3590,35 @@
35583590
<key>match</key>
35593591
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(await)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))</string>
35603592
</dict>
3593+
<dict>
3594+
<key>begin</key>
3595+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?=\s*\/\*([^\*]|(\*[^\/]))*\*\/\s*\*)</string>
3596+
<key>beginCaptures</key>
3597+
<dict>
3598+
<key>1</key>
3599+
<dict>
3600+
<key>name</key>
3601+
<string>keyword.control.flow.tsx</string>
3602+
</dict>
3603+
</dict>
3604+
<key>end</key>
3605+
<string>\*</string>
3606+
<key>endCaptures</key>
3607+
<dict>
3608+
<key>0</key>
3609+
<dict>
3610+
<key>name</key>
3611+
<string>keyword.generator.asterisk.tsx</string>
3612+
</dict>
3613+
</dict>
3614+
<key>patterns</key>
3615+
<array>
3616+
<dict>
3617+
<key>include</key>
3618+
<string>#comment</string>
3619+
</dict>
3620+
</array>
3621+
</dict>
35613622
<dict>
35623623
<key>match</key>
35633624
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(yield)(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.))(?:\s*(\*))?</string>

tests/baselines/Issue572.baseline.txt

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
original file
2+
-----------------------------------
3+
function /*like here*/ * foo() {
4+
yield /*or here*/* [42];
5+
}
6+
-----------------------------------
7+
8+
Grammar: TypeScript.tmLanguage
9+
-----------------------------------
10+
>function /*like here*/ * foo() {
11+
^^^^^^^^
12+
source.ts meta.function.ts storage.type.function.ts
13+
^
14+
source.ts meta.function.ts
15+
^^
16+
source.ts meta.function.ts comment.block.ts punctuation.definition.comment.ts
17+
^^^^^^^^^
18+
source.ts meta.function.ts comment.block.ts
19+
^^
20+
source.ts meta.function.ts comment.block.ts punctuation.definition.comment.ts
21+
^
22+
source.ts meta.function.ts
23+
^
24+
source.ts meta.function.ts keyword.generator.asterisk.ts
25+
^
26+
source.ts meta.function.ts
27+
^^^
28+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
29+
^
30+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
31+
^
32+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
33+
^
34+
source.ts meta.function.ts
35+
^
36+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
37+
^^
38+
source.ts meta.function.ts meta.block.ts
39+
> yield /*or here*/* [42];
40+
^^^^
41+
source.ts meta.function.ts meta.block.ts
42+
^^^^^
43+
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
44+
^
45+
source.ts meta.function.ts meta.block.ts
46+
^^
47+
source.ts meta.function.ts meta.block.ts comment.block.ts punctuation.definition.comment.ts
48+
^^^^^^^
49+
source.ts meta.function.ts meta.block.ts comment.block.ts
50+
^^
51+
source.ts meta.function.ts meta.block.ts comment.block.ts punctuation.definition.comment.ts
52+
^
53+
source.ts meta.function.ts meta.block.ts keyword.generator.asterisk.ts
54+
^
55+
source.ts meta.function.ts meta.block.ts
56+
^
57+
source.ts meta.function.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts
58+
^^
59+
source.ts meta.function.ts meta.block.ts meta.array.literal.ts constant.numeric.decimal.ts
60+
^
61+
source.ts meta.function.ts meta.block.ts meta.array.literal.ts meta.brace.square.ts
62+
^
63+
source.ts meta.function.ts meta.block.ts punctuation.terminator.statement.ts
64+
^^
65+
source.ts meta.function.ts meta.block.ts
66+
>}
67+
^
68+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts

tests/cases/Issue572.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
function /*like here*/ * foo() {
2+
yield /*or here*/* [42];
3+
}

0 commit comments

Comments
 (0)