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; +}