Skip to content

Commit b28aa0c

Browse files
authored
Add support for regexp v flag (#1032)
1 parent c7aa520 commit b28aa0c

File tree

5 files changed

+53
-16
lines changed

5 files changed

+53
-16
lines changed

TypeScript.YAML-tmLanguage

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ variables:
140140
{{functionLikeType}} |
141141
(:\s*(=>|{{matchingParenthesis}}|(<[^<>]*>)|[^<>(),=])+={{functionOrArrowLookup}})
142142
arrowFunctionEnd: (?==>|\{|(^\s*(export|function|class|interface|let|var|{{usingKeyword}}|{{awaitUsingKeyword}}|const|import|enum|namespace|module|type|abstract|declare)\s+))
143-
regexpTail: ([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$])
143+
regexpTail: ([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$])
144144
completeRegexp: \/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/{{regexpTail}})
145145

146146
patterns:
@@ -1365,7 +1365,7 @@ repository:
13651365
begin: (?<=\))\s*{{completeRegexp}}
13661366
beginCaptures:
13671367
'0': { name: punctuation.definition.string.begin.ts }
1368-
end: (/)([dgimsuy]*)
1368+
end: (/)([dgimsuvy]*)
13691369
endCaptures:
13701370
'1': { name: punctuation.definition.string.end.ts }
13711371
'2': { name: keyword.other.ts }
@@ -2793,7 +2793,7 @@ repository:
27932793
begin: (?<!\+\+|--|})(?<=[=(:,\[?+!]|{{lookBehindReturn}}|{{lookBehindCase}}|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/{{regexpTail}})
27942794
beginCaptures:
27952795
'1': { name: punctuation.definition.string.begin.ts }
2796-
end: (/)([dgimsuy]*)
2796+
end: (/)([dgimsuvy]*)
27972797
endCaptures:
27982798
'1': { name: punctuation.definition.string.end.ts }
27992799
'2': { name: keyword.other.ts}
@@ -2804,7 +2804,7 @@ repository:
28042804
begin: ((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<={{lookBehindReturn}}|{{lookBehindCase}}))\s*){{completeRegexp}}
28052805
beginCaptures:
28062806
'0': { name: punctuation.definition.string.begin.ts }
2807-
end: (/)([dgimsuy]*)
2807+
end: (/)([dgimsuvy]*)
28082808
endCaptures:
28092809
'1': { name: punctuation.definition.string.end.ts }
28102810
'2': { name: keyword.other.ts }

TypeScript.tmLanguage

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4365,7 +4365,7 @@
43654365
<key>name</key>
43664366
<string>string.regexp.ts</string>
43674367
<key>begin</key>
4368-
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
4368+
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
43694369
<key>beginCaptures</key>
43704370
<dict>
43714371
<key>0</key>
@@ -4375,7 +4375,7 @@
43754375
</dict>
43764376
</dict>
43774377
<key>end</key>
4378-
<string>(/)([dgimsuy]*)</string>
4378+
<string>(/)([dgimsuvy]*)</string>
43794379
<key>endCaptures</key>
43804380
<dict>
43814381
<key>1</key>
@@ -8470,7 +8470,7 @@
84708470
<key>name</key>
84718471
<string>string.regexp.ts</string>
84728472
<key>begin</key>
8473-
<string>(?&lt;!\+\+|--|})(?&lt;=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=&gt;|&amp;&amp;|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8473+
<string>(?&lt;!\+\+|--|})(?&lt;=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=&gt;|&amp;&amp;|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
84748474
<key>beginCaptures</key>
84758475
<dict>
84768476
<key>1</key>
@@ -8480,7 +8480,7 @@
84808480
</dict>
84818481
</dict>
84828482
<key>end</key>
8483-
<string>(/)([dgimsuy]*)</string>
8483+
<string>(/)([dgimsuvy]*)</string>
84848484
<key>endCaptures</key>
84858485
<dict>
84868486
<key>1</key>
@@ -8506,7 +8506,7 @@
85068506
<key>name</key>
85078507
<string>string.regexp.ts</string>
85088508
<key>begin</key>
8509-
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8509+
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
85108510
<key>beginCaptures</key>
85118511
<dict>
85128512
<key>0</key>
@@ -8516,7 +8516,7 @@
85168516
</dict>
85178517
</dict>
85188518
<key>end</key>
8519-
<string>(/)([dgimsuy]*)</string>
8519+
<string>(/)([dgimsuvy]*)</string>
85208520
<key>endCaptures</key>
85218521
<dict>
85228522
<key>1</key>

TypeScriptReact.tmLanguage

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4387,7 +4387,7 @@
43874387
<key>name</key>
43884388
<string>string.regexp.tsx</string>
43894389
<key>begin</key>
4390-
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
4390+
<string>(?&lt;=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
43914391
<key>beginCaptures</key>
43924392
<dict>
43934393
<key>0</key>
@@ -4397,7 +4397,7 @@
43974397
</dict>
43984398
</dict>
43994399
<key>end</key>
4400-
<string>(/)([dgimsuy]*)</string>
4400+
<string>(/)([dgimsuvy]*)</string>
44014401
<key>endCaptures</key>
44024402
<dict>
44034403
<key>1</key>
@@ -8418,7 +8418,7 @@
84188418
<key>name</key>
84198419
<string>string.regexp.tsx</string>
84208420
<key>begin</key>
8421-
<string>(?&lt;!\+\+|--|})(?&lt;=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=&gt;|&amp;&amp;|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8421+
<string>(?&lt;!\+\+|--|})(?&lt;=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=&gt;|&amp;&amp;|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
84228422
<key>beginCaptures</key>
84238423
<dict>
84248424
<key>1</key>
@@ -8428,7 +8428,7 @@
84288428
</dict>
84298429
</dict>
84308430
<key>end</key>
8431-
<string>(/)([dgimsuy]*)</string>
8431+
<string>(/)([dgimsuvy]*)</string>
84328432
<key>endCaptures</key>
84338433
<dict>
84348434
<key>1</key>
@@ -8454,7 +8454,7 @@
84548454
<key>name</key>
84558455
<string>string.regexp.tsx</string>
84568456
<key>begin</key>
8457-
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
8457+
<string>((?&lt;![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?&lt;=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))</string>
84588458
<key>beginCaptures</key>
84598459
<dict>
84608460
<key>0</key>
@@ -8464,7 +8464,7 @@
84648464
</dict>
84658465
</dict>
84668466
<key>end</key>
8467-
<string>(/)([dgimsuy]*)</string>
8467+
<string>(/)([dgimsuvy]*)</string>
84688468
<key>endCaptures</key>
84698469
<dict>
84708470
<key>1</key>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
original file
2+
-----------------------------------
3+
const a = /.*/v;
4+
5+
-----------------------------------
6+
7+
Grammar: TypeScript.tmLanguage
8+
-----------------------------------
9+
>const a = /.*/v;
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.constant.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 string.regexp.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 constant.other.character-class.regexp
26+
^
27+
source.ts meta.var.expr.ts string.regexp.ts keyword.operator.quantifier.regexp
28+
^
29+
source.ts meta.var.expr.ts string.regexp.ts punctuation.definition.string.end.ts
30+
^
31+
source.ts meta.var.expr.ts string.regexp.ts keyword.other.ts
32+
^
33+
source.ts punctuation.terminator.statement.ts
34+
>
35+
^
36+
source.ts

tests/cases/Issue1006.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
const a = /.*/v;

0 commit comments

Comments
 (0)