diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage
index 36fa5547..018cd663 100644
--- a/TypeScript.YAML-tmLanguage
+++ b/TypeScript.YAML-tmLanguage
@@ -140,7 +140,7 @@ variables:
{{functionLikeType}} |
(:\s*(=>|{{matchingParenthesis}}|(<[^<>]*>)|[^<>(),=])+={{functionOrArrowLookup}})
arrowFunctionEnd: (?==>|\{|(^\s*(export|function|class|interface|let|var|{{usingKeyword}}|{{awaitUsingKeyword}}|const|import|enum|namespace|module|type|abstract|declare)\s+))
- regexpTail: ([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$])
+ regexpTail: (?!\*)([dgimsuvy]*)(?:(?=\s+(?:as|satisfies)\s)|(?!\s*/(?![/*])|\s*[a-zA-Z0-9_$]))
completeRegexp: \/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/{{regexpTail}})
patterns:
@@ -2796,7 +2796,7 @@ repository:
begin: (?|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/{{regexpTail}})
beginCaptures:
'1': { name: punctuation.definition.string.begin.ts }
- end: (/)([dgimsuvy]*)
+ end: (/)([dgimsuvy]*)|$
endCaptures:
'1': { name: punctuation.definition.string.end.ts }
'2': { name: keyword.other.ts}
@@ -2807,7 +2807,7 @@ repository:
begin: ((?name
string.regexp.ts
begin
- (?<=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))
+ (?<=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/(?!\*)([dgimsuvy]*)(?:(?=\s+(?:as|satisfies)\s)|(?!\s*/(?![/*])|\s*[a-zA-Z0-9_$])))
beginCaptures
0
@@ -8485,7 +8485,7 @@
name
string.regexp.ts
begin
- (?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))
+ (?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/(?!\*)([dgimsuvy]*)(?:(?=\s+(?:as|satisfies)\s)|(?!\s*/(?![/*])|\s*[a-zA-Z0-9_$])))
beginCaptures
1
@@ -8495,7 +8495,7 @@
end
- (/)([dgimsuvy]*)
+ (/)([dgimsuvy]*)|$
endCaptures
1
@@ -8521,7 +8521,7 @@
name
string.regexp.ts
begin
- ((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))
+ ((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/(?!\*)([dgimsuvy]*)(?:(?=\s+(?:as|satisfies)\s)|(?!\s*/(?![/*])|\s*[a-zA-Z0-9_$])))
beginCaptures
0
@@ -8531,7 +8531,7 @@
end
- (/)([dgimsuvy]*)
+ (/)([dgimsuvy]*)|$
endCaptures
1
diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage
index a7aec5da..94b83c52 100644
--- a/TypeScriptReact.tmLanguage
+++ b/TypeScriptReact.tmLanguage
@@ -4402,7 +4402,7 @@
name
string.regexp.tsx
begin
- (?<=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))
+ (?<=\))\s*\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/(?!\*)([dgimsuvy]*)(?:(?=\s+(?:as|satisfies)\s)|(?!\s*/(?![/*])|\s*[a-zA-Z0-9_$])))
beginCaptures
0
@@ -8433,7 +8433,7 @@
name
string.regexp.tsx
begin
- (?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))
+ (?<!\+\+|--|})(?<=[=(:,\[?+!]|^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case|=>|&&|\|\||\*\/)\s*(\/)(?![\/*])(?=(?:[^\/\\\[\()]|\\.|\[([^\]\\]|\\.)+\]|\(([^\)\\]|\\.)+\))+\/(?!\*)([dgimsuvy]*)(?:(?=\s+(?:as|satisfies)\s)|(?!\s*/(?![/*])|\s*[a-zA-Z0-9_$])))
beginCaptures
1
@@ -8443,7 +8443,7 @@
end
- (/)([dgimsuvy]*)
+ (/)([dgimsuvy]*)|$
endCaptures
1
@@ -8469,7 +8469,7 @@
name
string.regexp.tsx
begin
- ((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/([dgimsuvy]+|(?![\/\*])|(?=\/\*))(?!\s*[a-zA-Z0-9_$]))
+ ((?<![_$[:alnum:])\]]|\+\+|--|}|\*\/)|((?<=^return|[^\._$[:alnum:]]return|^case|[^\._$[:alnum:]]case))\s*)\/(?![\/*])(?=(?:[^\/\\\[]|\\.|\[([^\]\\]|\\.)*\])+\/(?!\*)([dgimsuvy]*)(?:(?=\s+(?:as|satisfies)\s)|(?!\s*/(?![/*])|\s*[a-zA-Z0-9_$])))
beginCaptures
0
@@ -8479,7 +8479,7 @@
end
- (/)([dgimsuvy]*)
+ (/)([dgimsuvy]*)|$
endCaptures
1
diff --git a/tests/baselines/Issue1024.baseline.txt b/tests/baselines/Issue1024.baseline.txt
new file mode 100644
index 00000000..86c4176f
--- /dev/null
+++ b/tests/baselines/Issue1024.baseline.txt
@@ -0,0 +1,76 @@
+original file
+-----------------------------------
+1
+ / f(/u/g)
+function f(_: RegExp) {
+ return 1;
+}
+
+-----------------------------------
+
+Grammar: TypeScript.tmLanguage
+-----------------------------------
+>1
+ ^
+ source.ts constant.numeric.decimal.ts
+> / f(/u/g)
+ ^
+ source.ts
+ ^
+ source.ts keyword.operator.arithmetic.ts
+ ^
+ source.ts
+ ^
+ source.ts meta.function-call.ts entity.name.function.ts
+ ^
+ source.ts meta.brace.round.ts
+ ^
+ source.ts string.regexp.ts punctuation.definition.string.begin.ts
+ ^
+ source.ts string.regexp.ts
+ ^
+ source.ts string.regexp.ts punctuation.definition.string.end.ts
+ ^
+ source.ts string.regexp.ts keyword.other.ts
+ ^
+ source.ts meta.brace.round.ts
+>function f(_: RegExp) {
+ ^^^^^^^^
+ source.ts meta.function.ts storage.type.function.ts
+ ^
+ source.ts meta.function.ts
+ ^
+ source.ts meta.function.ts meta.definition.function.ts entity.name.function.ts
+ ^
+ source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.begin.ts
+ ^
+ source.ts meta.function.ts meta.parameters.ts variable.parameter.ts
+ ^
+ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
+ ^
+ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts
+ ^^^^^^
+ source.ts meta.function.ts meta.parameters.ts meta.type.annotation.ts entity.name.type.ts
+ ^
+ source.ts meta.function.ts meta.parameters.ts punctuation.definition.parameters.end.ts
+ ^
+ source.ts meta.function.ts
+ ^
+ source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
+> return 1;
+ ^
+ source.ts meta.function.ts meta.block.ts
+ ^^^^^^
+ source.ts meta.function.ts meta.block.ts keyword.control.flow.ts
+ ^
+ source.ts meta.function.ts meta.block.ts
+ ^
+ source.ts meta.function.ts meta.block.ts constant.numeric.decimal.ts
+ ^
+ source.ts meta.function.ts meta.block.ts punctuation.terminator.statement.ts
+>}
+ ^
+ source.ts meta.function.ts meta.block.ts punctuation.definition.block.ts
+>
+ ^
+ source.ts
\ No newline at end of file
diff --git a/tests/cases/Issue1024.ts b/tests/cases/Issue1024.ts
new file mode 100644
index 00000000..8f792a99
--- /dev/null
+++ b/tests/cases/Issue1024.ts
@@ -0,0 +1,5 @@
+1
+ / f(/u/g);
+function f(_: RegExp) {
+ return 1;
+}