Skip to content

Commit 06edc77

Browse files
committed
Fix incorrect export declaration detection when export is not ending the word
Fixes #662
1 parent ca3cb4a commit 06edc77

File tree

5 files changed

+198
-3
lines changed

5 files changed

+198
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1107,7 +1107,7 @@ repository:
11071107
- include: '#interface-declaration'
11081108
- include: '#expression'
11091109
- name: meta.export.ts
1110-
begin: '{{startOfIdentifier}}(export)(?!\s*:)((?=\s*[\{*])|((?=\s*{{identifier}}(\s|,))(?!\s*{{constructsAndModifiers}})))'
1110+
begin: '{{startOfIdentifier}}(export)\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*{{identifier}}(\s|,))(?!\s*{{constructsAndModifiers}})))'
11111111
beginCaptures:
11121112
'0': { name: keyword.control.export.ts }
11131113
end: (?=$|{{endOfStatement}})

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3581,7 +3581,7 @@
35813581
<key>name</key>
35823582
<string>meta.export.ts</string>
35833583
<key>begin</key>
3584-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?!\s*:)((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
3584+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
35853585
<key>beginCaptures</key>
35863586
<dict>
35873587
<key>0</key>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3585,7 +3585,7 @@
35853585
<key>name</key>
35863586
<string>meta.export.tsx</string>
35873587
<key>begin</key>
3588-
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)(?!\s*:)((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
3588+
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
35893589
<key>beginCaptures</key>
35903590
<dict>
35913591
<key>0</key>

tests/baselines/Issue662.baseline.txt

Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
original file
2+
-----------------------------------
3+
const a = (() => {
4+
let exports;
5+
exports = {
6+
x: {},
7+
};
8+
if (exports.x) {
9+
console.log("");
10+
}
11+
});
12+
13+
// no highlighting
14+
class C {}
15+
function f() {}
16+
-----------------------------------
17+
18+
Grammar: TypeScript.tmLanguage
19+
-----------------------------------
20+
>const a = (() => {
21+
^^^^^
22+
source.ts meta.var.expr.ts storage.type.ts
23+
^
24+
source.ts meta.var.expr.ts
25+
^
26+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.constant.ts
27+
^
28+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
29+
^
30+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
31+
^
32+
source.ts meta.var.expr.ts
33+
^
34+
source.ts meta.var.expr.ts meta.brace.round.ts
35+
^
36+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
37+
^
38+
source.ts meta.var.expr.ts meta.arrow.ts meta.parameters.ts punctuation.definition.parameters.end.ts
39+
^
40+
source.ts meta.var.expr.ts meta.arrow.ts
41+
^^
42+
source.ts meta.var.expr.ts meta.arrow.ts storage.type.function.arrow.ts
43+
^
44+
source.ts meta.var.expr.ts meta.arrow.ts
45+
^
46+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
47+
> let exports;
48+
^
49+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
50+
^^^
51+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts storage.type.ts
52+
^
53+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts
54+
^^^^^^^
55+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
56+
^
57+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.terminator.statement.ts
58+
> exports = {
59+
^
60+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
61+
^^^^^^^
62+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts support.type.object.module.ts
63+
^
64+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
65+
^
66+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts keyword.operator.assignment.ts
67+
^
68+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts
69+
^
70+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
71+
> x: {},
72+
^^
73+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts
74+
^
75+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts
76+
^
77+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.object-literal.key.ts punctuation.separator.key-value.ts
78+
^
79+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts
80+
^
81+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.objectliteral.ts punctuation.definition.block.ts
82+
^
83+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts meta.object.member.ts meta.objectliteral.ts punctuation.definition.block.ts
84+
^
85+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts punctuation.separator.comma.ts
86+
> };
87+
^
88+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts
89+
^
90+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.objectliteral.ts punctuation.definition.block.ts
91+
^
92+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.terminator.statement.ts
93+
> if (exports.x) {
94+
^
95+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
96+
^^
97+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts keyword.control.conditional.ts
98+
^
99+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
100+
^
101+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.brace.round.ts
102+
^^^^^^^
103+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts support.type.object.module.ts
104+
^
105+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.accessor.ts
106+
^
107+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts support.variable.property.dom.ts
108+
^
109+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.brace.round.ts
110+
^
111+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts
112+
^
113+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
114+
> console.log("");
115+
^^
116+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts
117+
^^^^^^^
118+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts meta.function-call.ts support.class.console.ts
119+
^
120+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts meta.function-call.ts punctuation.accessor.ts
121+
^^^
122+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts meta.function-call.ts support.function.console.ts
123+
^
124+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts meta.brace.round.ts
125+
^
126+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.begin.ts
127+
^
128+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts string.quoted.double.ts punctuation.definition.string.end.ts
129+
^
130+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts meta.brace.round.ts
131+
^
132+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts punctuation.terminator.statement.ts
133+
> }
134+
^
135+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts
136+
^
137+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts meta.block.ts punctuation.definition.block.ts
138+
>});
139+
^
140+
source.ts meta.var.expr.ts meta.arrow.ts meta.block.ts punctuation.definition.block.ts
141+
^
142+
source.ts meta.var.expr.ts meta.brace.round.ts
143+
^
144+
source.ts punctuation.terminator.statement.ts
145+
>
146+
^
147+
source.ts
148+
>// no highlighting
149+
^^
150+
source.ts comment.line.double-slash.ts punctuation.definition.comment.ts
151+
^^^^^^^^^^^^^^^^
152+
source.ts comment.line.double-slash.ts
153+
>class C {}
154+
^^^^^
155+
source.ts meta.class.ts storage.type.class.ts
156+
^
157+
source.ts meta.class.ts
158+
^
159+
source.ts meta.class.ts entity.name.type.class.ts
160+
^
161+
source.ts meta.class.ts
162+
^
163+
source.ts meta.class.ts punctuation.definition.block.ts
164+
^
165+
source.ts meta.class.ts punctuation.definition.block.ts
166+
>function f() {}
167+
^^^^^^^^
168+
source.ts meta.function.ts storage.type.function.ts
169+
^
170+
source.ts meta.function.ts
171+
^
172+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
173+
^
174+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
175+
^
176+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
177+
^
178+
source.ts meta.function.ts
179+
^
180+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
181+
^
182+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts

tests/cases/Issue662.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
const a = (() => {
2+
let exports;
3+
exports = {
4+
x: {},
5+
};
6+
if (exports.x) {
7+
console.log("");
8+
}
9+
});
10+
11+
// no highlighting
12+
class C {}
13+
function f() {}

0 commit comments

Comments
 (0)