microsoft / microsoft/TypeScript-TmLanguage
Regular expressions aren't properly highlighted in certain scenarios
Open
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 471
- Forks
- 149
- PR merge metrics
- No merged PRs in 30d
Description
in vscode 1.53.1
/foo/;
return /foo/;
throw /foo/;
yield* /foo/;
yield /foo/;
await /foo/;
export default /foo/;
if(_) /foo/;
else /foo/;
while(_) /foo/;
for(;;) /foo/;
for(_ in /foo/) /foo/;
with(_) /foo/;
do /foo/;
while(_);
void /foo/;
typeof /foo/;
/foo/ in /foo/;
/foo/ instanceof /foo/;
new /foo/;
!class extends /foo/ {};
/foo/[/foo/];
!/foo/;
~/foo/;
+/foo/;
-/foo/;
++/foo/;
--/foo/;
/foo/++;
/foo/--;
looks like this:

as can be seen, regular expressions aren't properly highlighted:
- after
throw/export default - after
await/yield(but notyield*) - after
while(),for(),with(),do,else(but notif()) - after
in/of(infor..in/for..of) - after
void/typeof/new - as either operand of
in/instanceof - after
extends(inclass) - after unary
++/--
worse yet, this can break the highlighting of surrounding code:
yield /[[]/;
if(1) {
foo["bar"]();
a: { break a; }
} else return 123;

Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the supplied JavaScript snippets in VS Code, then locate the TypeScript TextMate grammar rules responsible for regular-expression literals. Compare highlighting in each listed context and in the nested example; done means the regexes and surrounding code are highlighted correctly without breaking later constructs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, typescript
- Domain
- tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100