Skip to content

Commit 15b157d

Browse files
committed
Fix recognition of regexp class
Fixes #832
1 parent 7e4ccfd commit 15b157d

File tree

5 files changed

+71
-5
lines changed

5 files changed

+71
-5
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ variables:
136136
(:\s*(=>|{{matchingParenthesis}}|(<[^<>]*>)|[^<>(),=])+={{functionOrArrowLookup}})
137137
arrowFunctionEnd: (?==>|\{|(^\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\s+))
138138
regexpTail: ([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$])
139-
completeRegexp: \/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/{{regexpTail}})
139+
completeRegexp: \/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/{{regexpTail}})
140140

141141
patterns:
142142
- include: '#directives'

TypeScript.tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4115,7 +4115,7 @@
41154115
<key>name</key>
41164116
<string>string.regexp.ts</string>
41174117
<key>begin</key>
4118-
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
4118+
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
41194119
<key>beginCaptures</key>
41204120
<dict>
41214121
<key>0</key>
@@ -8076,7 +8076,7 @@
80768076
<key>name</key>
80778077
<string>string.regexp.ts</string>
80788078
<key>begin</key>
8079-
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8079+
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
80808080
<key>beginCaptures</key>
80818081
<dict>
80828082
<key>0</key>

TypeScriptReact.tmLanguage

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4137,7 +4137,7 @@
41374137
<key>name</key>
41384138
<string>string.regexp.tsx</string>
41394139
<key>begin</key>
4140-
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
4140+
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
41414141
<key>beginCaptures</key>
41424142
<dict>
41434143
<key>0</key>
@@ -8024,7 +8024,7 @@
80248024
<key>name</key>
80258025
<string>string.regexp.tsx</string>
80268026
<key>begin</key>
8027-
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)+\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8027+
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([gimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
80288028
<key>beginCaptures</key>
80298029
<dict>
80308030
<key>0</key>

tests/baselines/Issue832.baseline.txt

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
original file
2+
-----------------------------------
3+
let a = /foo[]bar/;
4+
let b = /foo[^]bar/;
5+
-----------------------------------
6+
7+
Grammar: TypeScript.tmLanguage
8+
-----------------------------------
9+
>let a = /foo[]bar/;
10+
^^^
11+
source.ts meta.var.expr.ts storage.type.ts
12+
^
13+
source.ts meta.var.expr.ts
14+
^
15+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
16+
^
17+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
18+
^
19+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
20+
^
21+
source.ts meta.var.expr.ts
22+
^
23+
source.ts meta.var.expr.ts string.regexp.ts punctuation.definition.string.begin.ts
24+
^^^
25+
source.ts meta.var.expr.ts string.regexp.ts
26+
^
27+
source.ts meta.var.expr.ts string.regexp.ts constant.other.character-class.set.regexp punctuation.definition.character-class.regexp
28+
^
29+
source.ts meta.var.expr.ts string.regexp.ts constant.other.character-class.set.regexp punctuation.definition.character-class.regexp
30+
^^^
31+
source.ts meta.var.expr.ts string.regexp.ts
32+
^
33+
source.ts meta.var.expr.ts string.regexp.ts punctuation.definition.string.end.ts
34+
^
35+
source.ts punctuation.terminator.statement.ts
36+
>let b = /foo[^]bar/;
37+
^^^
38+
source.ts meta.var.expr.ts storage.type.ts
39+
^
40+
source.ts meta.var.expr.ts
41+
^
42+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts meta.definition.variable.ts variable.other.readwrite.ts
43+
^
44+
source.ts meta.var.expr.ts meta.var-single-variable.expr.ts
45+
^
46+
source.ts meta.var.expr.ts keyword.operator.assignment.ts
47+
^
48+
source.ts meta.var.expr.ts string.regexp.ts
49+
^
50+
source.ts meta.var.expr.ts string.regexp.ts punctuation.definition.string.begin.ts
51+
^^^
52+
source.ts meta.var.expr.ts string.regexp.ts
53+
^
54+
source.ts meta.var.expr.ts string.regexp.ts constant.other.character-class.set.regexp punctuation.definition.character-class.regexp
55+
^
56+
source.ts meta.var.expr.ts string.regexp.ts constant.other.character-class.set.regexp keyword.operator.negation.regexp
57+
^
58+
source.ts meta.var.expr.ts string.regexp.ts constant.other.character-class.set.regexp punctuation.definition.character-class.regexp
59+
^^^
60+
source.ts meta.var.expr.ts string.regexp.ts
61+
^
62+
source.ts meta.var.expr.ts string.regexp.ts punctuation.definition.string.end.ts
63+
^
64+
source.ts punctuation.terminator.statement.ts

tests/cases/Issue832.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
let a = /foo[]bar/;
2+
let b = /foo[^]bar/;

0 commit comments

Comments
 (0)