Skip to content

Commit 94b95df

Browse files
committed
Handle optional fields followed by , and no type
Fixes #651
1 parent 5cfc64b commit 94b95df

File tree

5 files changed

+67
-6
lines changed

5 files changed

+67
-6
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -588,10 +588,10 @@ repository:
588588

589589
field-declaration:
590590
name: meta.field.declaration.ts
591-
begin: (?x)(?<!\()(?:{{startOfIdentifier}}(readonly)\s+)?(?=\s*{{propertyName}}\s*(\?\s*)?(=|:|;|$))
591+
begin: (?x)(?<!\()(?:{{startOfIdentifier}}(readonly)\s+)?(?=\s*{{propertyName}}\s*(\?\s*)?(=|:|;|,|$))
592592
beginCaptures:
593593
'1': { name: storage.modifier.ts }
594-
end: (?x)(?=\}|;|,|$|(^(?!\s*{{propertyName}}\s*(\?\s*)?(=|:|;|$))))|(?<=\})
594+
end: (?x)(?=\}|;|,|$|(^(?!\s*{{propertyName}}\s*(\?\s*)?(=|:|;|,|$))))|(?<=\})
595595
patterns:
596596
- include: '#variable-initializer'
597597
- include: '#type-annotation'

TypeScript.tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,7 +1791,7 @@
17911791
(?:\b[0-9][0-9_]*(\.)\B)| # 1.
17921792
(?:\B(\.)[0-9][0-9_]*\b)| # .1
17931793
(?:\b[0-9][0-9_]*\b(?!\.)) # 1
1794-
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|$))</string>
1794+
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|,|$))</string>
17951795
<key>beginCaptures</key>
17961796
<dict>
17971797
<key>1</key>
@@ -1810,7 +1810,7 @@
18101810
(?:\b[0-9][0-9_]*(\.)\B)| # 1.
18111811
(?:\B(\.)[0-9][0-9_]*\b)| # .1
18121812
(?:\b[0-9][0-9_]*\b(?!\.)) # 1
1813-
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|$))))|(?&lt;=\})</string>
1813+
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|,|$))))|(?&lt;=\})</string>
18141814
<key>patterns</key>
18151815
<array>
18161816
<dict>

TypeScriptReact.tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1795,7 +1795,7 @@
17951795
(?:\b[0-9][0-9_]*(\.)\B)| # 1.
17961796
(?:\B(\.)[0-9][0-9_]*\b)| # .1
17971797
(?:\b[0-9][0-9_]*\b(?!\.)) # 1
1798-
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|$))</string>
1798+
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|,|$))</string>
17991799
<key>beginCaptures</key>
18001800
<dict>
18011801
<key>1</key>
@@ -1814,7 +1814,7 @@
18141814
(?:\b[0-9][0-9_]*(\.)\B)| # 1.
18151815
(?:\B(\.)[0-9][0-9_]*\b)| # .1
18161816
(?:\b[0-9][0-9_]*\b(?!\.)) # 1
1817-
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|$))))|(?&lt;=\})</string>
1817+
)(?!\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\'([^\'\\]|\\\'|\\)*\')|(\"([^\"\\]|\\\"|\\)*\")|(\[([^\[\]]|\[[^\[\]]*\])+\]))\s*(\?\s*)?(=|:|;|,|$))))|(?&lt;=\})</string>
18181818
<key>patterns</key>
18191819
<array>
18201820
<dict>

tests/baselines/Issue651.baseline.txt

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
original file
2+
-----------------------------------
3+
interface DagEdge {
4+
a?,
5+
b
6+
}
7+
var a = 1;
8+
-----------------------------------
9+
10+
Grammar: TypeScript.tmLanguage
11+
-----------------------------------
12+
>interface DagEdge {
13+
^^^^^^^^^
14+
source.ts meta.interface.ts storage.type.interface.ts
15+
^
16+
source.ts meta.interface.ts
17+
^^^^^^^
18+
source.ts meta.interface.ts entity.name.type.interface.ts
19+
^
20+
source.ts meta.interface.ts
21+
^
22+
source.ts meta.interface.ts punctuation.definition.block.ts
23+
> a?,
24+
^^^^
25+
source.ts meta.interface.ts meta.field.declaration.ts
26+
^
27+
source.ts meta.interface.ts meta.field.declaration.ts meta.definition.property.ts variable.object.property.ts
28+
^
29+
source.ts meta.interface.ts meta.field.declaration.ts keyword.operator.optional.ts
30+
^
31+
source.ts meta.interface.ts punctuation.separator.comma.ts
32+
> b
33+
^^^^
34+
source.ts meta.interface.ts meta.field.declaration.ts
35+
^
36+
source.ts meta.interface.ts meta.field.declaration.ts meta.definition.property.ts variable.object.property.ts
37+
>}
38+
^
39+
source.ts meta.interface.ts punctuation.definition.block.ts
40+
>var a = 1;
41+
^^^
42+
source.ts meta.var.expr.ts storage.type.ts
43+
^
44+
source.ts meta.var.expr.ts
45+
^
46+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
47+
^
48+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
49+
^
50+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
51+
^
52+
source.ts meta.var.expr.ts
53+
^
54+
source.ts meta.var.expr.ts constant.numeric.decimal.ts
55+
^
56+
source.ts punctuation.terminator.statement.ts

tests/cases/Issue651.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
interface DagEdge {
2+
a?,
3+
b
4+
}
5+
var a = 1;

0 commit comments

Comments
 (0)