From e0c95d5f07e0558849331e1387d85b2bc94f48a3 Mon Sep 17 00:00:00 2001 From: Evan Wallace Date: Fri, 24 May 2024 01:31:07 -0400 Subject: [PATCH 1/2] Support "Arbitrary Module Namespace Identifiers" --- TypeScript.YAML-tmLanguage | 14 +- TypeScript.tmLanguage | 23 +- TypeScriptReact.tmLanguage | 23 +- ...aryModuleNamespaceIdentifiers.baseline.txt | 412 ++++++++++++++++++ .../arbitraryModuleNamespaceIdentifiers.ts | 14 + 5 files changed, 473 insertions(+), 13 deletions(-) create mode 100644 tests/baselines/arbitraryModuleNamespaceIdentifiers.baseline.txt create mode 100644 tests/cases/arbitraryModuleNamespaceIdentifiers.ts diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage index 7a61c3df..d11d32c1 100644 --- a/TypeScript.YAML-tmLanguage +++ b/TypeScript.YAML-tmLanguage @@ -15,6 +15,7 @@ variables: propertyIdentifier: '\#?{{identifier}}' constantPropertyIdentifier: '\#?{{constantIdentifier}}' quotedStrings: (\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`) + aliasString: \'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\" nonIdentifierPropertyName: '{{quotedStrings}}|(\[([^\[\]]|\[[^\[\]]*\])+\])' label: ({{identifier}})\s*(:) hexNumber: \b(? match - (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)) + (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) captures 1 @@ -4044,18 +4044,28 @@ 5 name - keyword.control.as.ts + string.quoted.alias.ts 6 name - keyword.control.default.ts + keyword.control.as.ts 7 + + name + keyword.control.default.ts + + 8 name variable.other.readwrite.alias.ts + 9 + + name + string.quoted.alias.ts + @@ -4076,7 +4086,7 @@ match - (?:(\btype)\s+)?([_$[:alpha:]][_$[:alnum:]]*) + (?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) captures 1 @@ -4089,6 +4099,11 @@ name variable.other.readwrite.alias.ts + 3 + + name + string.quoted.alias.ts + diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage index dcdd118b..0e59fcfe 100644 --- a/TypeScriptReact.tmLanguage +++ b/TypeScriptReact.tmLanguage @@ -4040,7 +4040,7 @@ match - (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)) + (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) captures 1 @@ -4066,18 +4066,28 @@ 5 name - keyword.control.as.tsx + string.quoted.alias.tsx 6 name - keyword.control.default.tsx + keyword.control.as.tsx 7 + + name + keyword.control.default.tsx + + 8 name variable.other.readwrite.alias.tsx + 9 + + name + string.quoted.alias.tsx + @@ -4098,7 +4108,7 @@ match - (?:(\btype)\s+)?([_$[:alpha:]][_$[:alnum:]]*) + (?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) captures 1 @@ -4111,6 +4121,11 @@ name variable.other.readwrite.alias.tsx + 3 + + name + string.quoted.alias.tsx + diff --git a/tests/baselines/arbitraryModuleNamespaceIdentifiers.baseline.txt b/tests/baselines/arbitraryModuleNamespaceIdentifiers.baseline.txt new file mode 100644 index 00000000..dd196afc --- /dev/null +++ b/tests/baselines/arbitraryModuleNamespaceIdentifiers.baseline.txt @@ -0,0 +1,412 @@ +original file +----------------------------------- +import { "a..." as a } from "./foo"; +import { type "b..." as b } from "./foo"; + +export { a as "a..." }; +export { "b..." } from "./foo"; +export { "c..." as c } from "./foo"; +export { "d..." as "d..." } from "./foo"; + +export { type a as "a..." }; +export { type "b..." } from "./foo"; +export { type "c..." as c } from "./foo"; +export { type "d..." as "d..." } from "./foo"; + +export * as "a..." from "./foo"; + +----------------------------------- + +Grammar: TypeScript.tmLanguage +----------------------------------- +>import { "a..." as a } from "./foo"; + ^^^^^^ + source.ts meta.import.ts keyword.control.import.ts + ^ + source.ts meta.import.ts + ^ + source.ts meta.import.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.import.ts meta.block.ts + ^^^^^^ + source.ts meta.import.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.import.ts meta.block.ts + ^^ + source.ts meta.import.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.import.ts meta.block.ts + ^ + source.ts meta.import.ts meta.block.ts variable.other.readwrite.alias.ts + ^ + source.ts meta.import.ts meta.block.ts + ^ + source.ts meta.import.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.import.ts + ^^^^ + source.ts meta.import.ts keyword.control.from.ts + ^ + source.ts meta.import.ts + ^ + source.ts meta.import.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.import.ts string.quoted.double.ts + ^ + source.ts meta.import.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +>import { type "b..." as b } from "./foo"; + ^^^^^^ + source.ts meta.import.ts keyword.control.import.ts + ^ + source.ts meta.import.ts + ^ + source.ts meta.import.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.import.ts meta.block.ts + ^^^^ + source.ts meta.import.ts meta.block.ts keyword.control.type.ts + ^ + source.ts meta.import.ts meta.block.ts + ^^^^^^ + source.ts meta.import.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.import.ts meta.block.ts + ^^ + source.ts meta.import.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.import.ts meta.block.ts + ^ + source.ts meta.import.ts meta.block.ts variable.other.readwrite.alias.ts + ^ + source.ts meta.import.ts meta.block.ts + ^ + source.ts meta.import.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.import.ts + ^^^^ + source.ts meta.import.ts keyword.control.from.ts + ^ + source.ts meta.import.ts + ^ + source.ts meta.import.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.import.ts string.quoted.double.ts + ^ + source.ts meta.import.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +> + ^ + source.ts +>export { a as "a..." }; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts variable.other.readwrite.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^ + source.ts meta.export.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts punctuation.terminator.statement.ts +>export { "b..." } from "./foo"; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts + ^^^^ + source.ts meta.export.ts keyword.control.from.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.export.ts string.quoted.double.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +>export { "c..." as c } from "./foo"; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^ + source.ts meta.export.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts variable.other.readwrite.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts + ^^^^ + source.ts meta.export.ts keyword.control.from.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.export.ts string.quoted.double.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +>export { "d..." as "d..." } from "./foo"; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^ + source.ts meta.export.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts + ^^^^ + source.ts meta.export.ts keyword.control.from.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.export.ts string.quoted.double.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +> + ^ + source.ts +>export { type a as "a..." }; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^ + source.ts meta.export.ts meta.block.ts keyword.control.type.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts variable.other.readwrite.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^ + source.ts meta.export.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts punctuation.terminator.statement.ts +>export { type "b..." } from "./foo"; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^ + source.ts meta.export.ts meta.block.ts keyword.control.type.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts + ^^^^ + source.ts meta.export.ts keyword.control.from.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.export.ts string.quoted.double.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +>export { type "c..." as c } from "./foo"; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^ + source.ts meta.export.ts meta.block.ts keyword.control.type.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^ + source.ts meta.export.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts variable.other.readwrite.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts + ^^^^ + source.ts meta.export.ts keyword.control.from.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.export.ts string.quoted.double.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +>export { type "d..." as "d..." } from "./foo"; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^ + source.ts meta.export.ts meta.block.ts keyword.control.type.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^ + source.ts meta.export.ts meta.block.ts keyword.control.as.ts + ^ + source.ts meta.export.ts meta.block.ts + ^^^^^^ + source.ts meta.export.ts meta.block.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts meta.block.ts + ^ + source.ts meta.export.ts meta.block.ts punctuation.definition.block.ts + ^ + source.ts meta.export.ts + ^^^^ + source.ts meta.export.ts keyword.control.from.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.export.ts string.quoted.double.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +> + ^ + source.ts +>export * as "a..." from "./foo"; + ^^^^^^ + source.ts meta.export.ts keyword.control.export.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts constant.language.import-export-all.ts + ^ + source.ts meta.export.ts + ^^ + source.ts meta.export.ts keyword.control.as.ts + ^ + source.ts meta.export.ts + ^^^^^^ + source.ts meta.export.ts string.quoted.alias.ts + ^ + source.ts meta.export.ts + ^^^^ + source.ts meta.export.ts keyword.control.from.ts + ^ + source.ts meta.export.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^ + source.ts meta.export.ts string.quoted.double.ts + ^ + source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts punctuation.terminator.statement.ts +> + ^ + source.ts \ No newline at end of file diff --git a/tests/cases/arbitraryModuleNamespaceIdentifiers.ts b/tests/cases/arbitraryModuleNamespaceIdentifiers.ts new file mode 100644 index 00000000..d928097d --- /dev/null +++ b/tests/cases/arbitraryModuleNamespaceIdentifiers.ts @@ -0,0 +1,14 @@ +import { "a..." as a } from "./foo"; +import { type "b..." as b } from "./foo"; + +export { a as "a..." }; +export { "b..." } from "./foo"; +export { "c..." as c } from "./foo"; +export { "d..." as "d..." } from "./foo"; + +export { type a as "a..." }; +export { type "b..." } from "./foo"; +export { type "c..." as c } from "./foo"; +export { type "d..." as "d..." } from "./foo"; + +export * as "a..." from "./foo"; From 093a6516523c8b997b5b3f9affcd248436485fbb Mon Sep 17 00:00:00 2001 From: Evan Wallace Date: Sun, 13 Oct 2024 11:57:42 -0400 Subject: [PATCH 2/2] Use `quotedStrings` instead of `aliasString` --- TypeScript.YAML-tmLanguage | 13 ++++++------- TypeScript.tmLanguage | 12 ++++++------ TypeScriptReact.tmLanguage | 12 ++++++------ 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage index d11d32c1..e93fd2d8 100644 --- a/TypeScript.YAML-tmLanguage +++ b/TypeScript.YAML-tmLanguage @@ -15,7 +15,6 @@ variables: propertyIdentifier: '\#?{{identifier}}' constantPropertyIdentifier: '\#?{{constantIdentifier}}' quotedStrings: (\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`) - aliasString: \'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\" nonIdentifierPropertyName: '{{quotedStrings}}|(\[([^\[\]]|\[[^\[\]]*\])+\])' label: ({{identifier}})\s*(:) hexNumber: \b(? match - (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) + (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))) captures 1 @@ -4046,22 +4046,22 @@ name string.quoted.alias.ts - 6 + 12 name keyword.control.as.ts - 7 + 13 name keyword.control.default.ts - 8 + 14 name variable.other.readwrite.alias.ts - 9 + 15 name string.quoted.alias.ts @@ -4086,7 +4086,7 @@ match - (?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) + (?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))) captures 1 diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage index 0e59fcfe..20598e4f 100644 --- a/TypeScriptReact.tmLanguage +++ b/TypeScriptReact.tmLanguage @@ -4040,7 +4040,7 @@ match - (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) + (?<![_$[:alnum:]])(?:(?<=\.\.\.)|(?<!\.))(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b[_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))))\s+(as)\s+(?:(default(?![_$[:alnum:]])(?:(?=\.\.\.)|(?!\.)))|([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))) captures 1 @@ -4068,22 +4068,22 @@ name string.quoted.alias.tsx - 6 + 12 name keyword.control.as.tsx - 7 + 13 name keyword.control.default.tsx - 8 + 14 name variable.other.readwrite.alias.tsx - 9 + 15 name string.quoted.alias.tsx @@ -4108,7 +4108,7 @@ match - (?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|(\'(?:[^\'\\]|\\.)*\'|\"(?:[^\"\\]|\\.)*\")) + (?:(\btype)\s+)?(?:([_$[:alpha:]][_$[:alnum:]]*)|((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`))) captures 1