diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage index 7a61c3df..e93fd2d8 100644 --- a/TypeScript.YAML-tmLanguage +++ b/TypeScript.YAML-tmLanguage @@ -1257,24 +1257,27 @@ repository: patterns: - include: '#comment' #(default|*|name) as alias - - match: '{{startOfIdentifier}}(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b{{identifier}})))\s+(as)\s+(?:(default{{endOfIdentifier}})|({{identifier}}))' + - match: '{{startOfIdentifier}}(?:(?:(\btype)\s+)?(?:(\bdefault)|(\*)|(\b{{identifier}})|({{quotedStrings}})))\s+(as)\s+(?:(default{{endOfIdentifier}})|({{identifier}})|({{quotedStrings}}))' captures: '1': { name: keyword.control.type.ts } '2': { name: keyword.control.default.ts } '3': { name: constant.language.import-export-all.ts } '4': { name: variable.other.readwrite.ts } - '5': { name: keyword.control.as.ts } - '6': { name: keyword.control.default.ts } - '7': { name: variable.other.readwrite.alias.ts } + '5': { name: string.quoted.alias.ts } + '12': { name: keyword.control.as.ts } + '13': { name: keyword.control.default.ts } + '14': { name: variable.other.readwrite.alias.ts } + '15': { name: string.quoted.alias.ts } - include: '#punctuation-comma' - name: constant.language.import-export-all.ts match: \* - name: keyword.control.default.ts match: \b(default)\b - - match: '(?:(\btype)\s+)?({{identifier}})' + - match: '(?:(\btype)\s+)?(?:({{identifier}})|({{quotedStrings}}))' captures: '1': { name: keyword.control.type.ts } '2': { name: variable.other.readwrite.alias.ts } + '3': { name: string.quoted.alias.ts } #control statements and loops diff --git a/TypeScript.tmLanguage b/TypeScript.tmLanguage index 1a3f668b..90915f58 100644 --- a/TypeScript.tmLanguage +++ b/TypeScript.tmLanguage @@ -4018,7 +4018,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 @@ -4042,20 +4042,30 @@ variable.other.readwrite.ts 5 + + name + string.quoted.alias.ts + + 12 name keyword.control.as.ts - 6 + 13 name keyword.control.default.ts - 7 + 14 name variable.other.readwrite.alias.ts + 15 + + 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..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 @@ -4064,20 +4064,30 @@ variable.other.readwrite.tsx 5 + + name + string.quoted.alias.tsx + + 12 name keyword.control.as.tsx - 6 + 13 name keyword.control.default.tsx - 7 + 14 name variable.other.readwrite.alias.tsx + 15 + + 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";