Skip to content

Commit 3508c88

Browse files
committed
Fix regexp detection when followed by return keyword
Fixes #737
1 parent 135f598 commit 3508c88

File tree

5 files changed

+82
-3
lines changed

5 files changed

+82
-3
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2582,7 +2582,7 @@ repository:
25822582
- include: '#regexp'
25832583
# Check if complete regexp syntax
25842584
- name: string.regexp.ts
2585-
begin: (?<![_$[:alnum:])\]]|\+\+|--|}|\*\/){{completeRegexp}}
2585+
begin: ((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<={{lookBehindReturn}}|{{lookBehindCase}}))\s*){{completeRegexp}}
25862586
beginCaptures:
25872587
'0': { name: punctuation.definition.string.begin.ts }
25882588
end: (/)([gimsuy]*)

TypeScript.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7801,7 +7801,7 @@
78017801
<key>name</key>
78027802
<string>string.regexp.ts</string>
78037803
<key>begin</key>
7804-
<string>(?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))</string>
7804+
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))</string>
78057805
<key>beginCaptures</key>
78067806
<dict>
78077807
<key>0</key>

TypeScriptReact.tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7723,7 +7723,7 @@
77237723
<key>name</key>
77247724
<string>string.regexp.tsx</string>
77257725
<key>begin</key>
7726-
<string>(?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))</string>
7726+
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/[gimsuy]*(?!\s*[a-zA-Z0-9_$]))</string>
77277727
<key>beginCaptures</key>
77287728
<dict>
77297729
<key>0</key>

tests/baselines/Issue737.baseline.txt

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
original file
2+
-----------------------------------
3+
function foo() {
4+
return /(?:(Z))?/
5+
}
6+
7+
export const bar = true
8+
-----------------------------------
9+
10+
Grammar: TypeScript.tmLanguage
11+
-----------------------------------
12+
>function foo() {
13+
^^^^^^^^
14+
source.ts meta.function.ts storage.type.function.ts
15+
^
16+
source.ts meta.function.ts
17+
^^^
18+
source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
19+
^
20+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
21+
^
22+
source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
23+
^
24+
source.ts meta.function.ts
25+
^
26+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
27+
> return /(?:(Z))?/
28+
^^^^
29+
source.ts meta.function.ts meta.block.ts
30+
^^^^^^
31+
source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
32+
^^
33+
source.ts meta.function.ts meta.block.ts string.regexp.ts punctuation.definition.string.begin.ts
34+
^
35+
source.ts meta.function.ts meta.block.ts string.regexp.ts meta.group.regexp punctuation.definition.group.regexp
36+
^^
37+
source.ts meta.function.ts meta.block.ts string.regexp.ts meta.group.regexp punctuation.definition.group.regexp punctuation.definition.group.no-capture.regexp
38+
^
39+
source.ts meta.function.ts meta.block.ts string.regexp.ts meta.group.regexp meta.group.regexp punctuation.definition.group.regexp
40+
^
41+
source.ts meta.function.ts meta.block.ts string.regexp.ts meta.group.regexp meta.group.regexp
42+
^
43+
source.ts meta.function.ts meta.block.ts string.regexp.ts meta.group.regexp meta.group.regexp punctuation.definition.group.regexp
44+
^
45+
source.ts meta.function.ts meta.block.ts string.regexp.ts meta.group.regexp punctuation.definition.group.regexp
46+
^
47+
source.ts meta.function.ts meta.block.ts string.regexp.ts keyword.operator.quantifier.regexp
48+
^
49+
source.ts meta.function.ts meta.block.ts string.regexp.ts punctuation.definition.string.end.ts
50+
>}
51+
^
52+
source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
53+
>
54+
^
55+
source.ts
56+
>export const bar = true
57+
^^^^^^
58+
source.ts meta.var.expr.ts keyword.control.export.ts
59+
^
60+
source.ts meta.var.expr.ts
61+
^^^^^
62+
source.ts meta.var.expr.ts storage.type.ts
63+
^
64+
source.ts meta.var.expr.ts
65+
^^^
66+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.constant.ts
67+
^
68+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
69+
^
70+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
71+
^
72+
source.ts meta.var.expr.ts
73+
^^^^
74+
source.ts meta.var.expr.ts constant.language.boolean.true.ts

tests/cases/Issue737.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function foo() {
2+
return /(?:(Z))?/
3+
}
4+
5+
export const bar = true

0 commit comments

Comments
 (0)