Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion TypeScript.YAML-tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ variables:
lookBehindTypeof: '^typeof|{{nonPropertyLookBehind}}typeof'
lookBehindCase: '^case|{{nonPropertyLookBehind}}case'
lookBehindImport: '^import|{{nonPropertyLookBehind}}import'
lookBehindExport: '^export|{{nonPropertyLookBehind}}export'
matchingParenthesis: (\(([^\(\)]|(\([^\(\)]*\)))*\))
matchingBraces: (\{([^\{\}]|(\{[^\{\}]*\}))*\})
matchingBrackets: (\[([^\[\]]|(\[[^\[\]]*\]))*\])
Expand Down Expand Up @@ -1140,7 +1141,7 @@ repository:
- include: '#interface-declaration'
- include: '#expression'
- name: meta.export.ts
begin: '{{startOfIdentifier}}(export)\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*{{identifier}}(\s|,))(?!\s*{{constructsAndModifiers}})))'
begin: '{{startOfIdentifier}}(export)\b(?!(\$)|(\s*:))((?=\s*(?:(?:type\s*)??\{|\*))|((?=\s*{{identifier}}(\s|,))(?!\s*{{constructsAndModifiers}})))'
beginCaptures:
'0': { name: keyword.control.export.ts }
end: (?=$|{{endOfStatement}})
Expand All @@ -1155,6 +1156,9 @@ repository:
- name: keyword.control.from.ts
match: \bfrom\b
- include: '#import-export-clause'
- match: '(?<={{lookBehindImport}}|{{lookBehindExport}})\s+(type)(?!\s*from)'
captures:
'1': { name: keyword.control.type.ts }

import-export-block:
name: meta.block.ts
Expand Down
14 changes: 13 additions & 1 deletion TypeScript.tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -3659,7 +3659,7 @@
<key>name</key>
<string>meta.export.ts</string>
<key>begin</key>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\b(?!(\$)|(\s*:))((?=\s*(?:(?:type\s*)??\{|\*))|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
Expand Down Expand Up @@ -3706,6 +3706,18 @@
<key>include</key>
<string>#import-export-clause</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=^import|[^\._$[:alnum:]]import|^export|[^\._$[:alnum:]]export)\s+(type)(?!\s*from)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.type.ts</string>
</dict>
</dict>
</dict>
</array>
</dict>
<key>import-export-block</key>
Expand Down
14 changes: 13 additions & 1 deletion TypeScriptReact.tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -3681,7 +3681,7 @@
<key>name</key>
<string>meta.export.tsx</string>
<key>begin</key>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\b(?!(\$)|(\s*:))((?=\s*[\{*])|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
<string>(?&lt;![_$[:alnum:]])(?:(?&lt;=\.\.\.)|(?&lt;!\.))(export)\b(?!(\$)|(\s*:))((?=\s*(?:(?:type\s*)??\{|\*))|((?=\s*[_$[:alpha:]][_$[:alnum:]]*(\s|,))(?!\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|type|var)\b)))</string>
<key>beginCaptures</key>
<dict>
<key>0</key>
Expand Down Expand Up @@ -3728,6 +3728,18 @@
<key>include</key>
<string>#import-export-clause</string>
</dict>
<dict>
<key>match</key>
<string>(?&lt;=^import|[^\._$[:alnum:]]import|^export|[^\._$[:alnum:]]export)\s+(type)(?!\s*from)</string>
<key>captures</key>
<dict>
<key>1</key>
<dict>
<key>name</key>
<string>keyword.control.type.tsx</string>
</dict>
</dict>
</dict>
</array>
</dict>
<key>import-export-block</key>
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"pretest": "npm run build",
"test": "mocha --full-trace tests/test.js --reporter mocha-multi-reporters",
"diff": "cross-env-shell $DIFF tests/baselines tests/generated",
"accept": "copyfiles \"tests/generated/*\" tests/baselines"
"accept": "copyfiles -u 2 \"tests/generated/*\" tests/baselines"
},
"dependencies": {
"@types/chai": "latest",
Expand Down
80 changes: 70 additions & 10 deletions tests/baselines/exportDeclarations.baseline.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ original file
export { a as b, x };
export * from "AnotherModule";
export { k as m, l } from "AnotherModule";
export type { T };
export type { U } from "AnotherModule";

-----------------------------------

Grammar: TypeScript.tmLanguage
Expand Down Expand Up @@ -40,23 +43,23 @@ Grammar: TypeScript.tmLanguage
source.ts punctuation.terminator.statement.ts
>export * from "AnotherModule";
^^^^^^
source.ts meta.export.ts keyword.control.export.ts
source.ts storage.modifier.ts
^
source.ts meta.export.ts
source.ts
^
source.ts meta.export.ts constant.language.import-export-all.ts
source.ts keyword.operator.arithmetic.ts
^
source.ts meta.export.ts
source.ts
^^^^
source.ts meta.export.ts keyword.control.from.ts
source.ts variable.other.readwrite.ts
^
source.ts meta.export.ts
source.ts
^
source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.begin.ts
source.ts string.quoted.double.ts punctuation.definition.string.begin.ts
^^^^^^^^^^^^^
source.ts meta.export.ts string.quoted.double.ts
source.ts string.quoted.double.ts
^
source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts
source.ts string.quoted.double.ts punctuation.definition.string.end.ts
^
source.ts punctuation.terminator.statement.ts
>export { k as m, l } from "AnotherModule";
Expand Down Expand Up @@ -101,4 +104,61 @@ Grammar: TypeScript.tmLanguage
^
source.ts meta.export.ts string.quoted.double.ts punctuation.definition.string.end.ts
^
source.ts punctuation.terminator.statement.ts
source.ts punctuation.terminator.statement.ts
>export type { T };
^^^^^^
source.ts meta.export.ts keyword.control.export.ts
^
source.ts meta.export.ts
^^^^
source.ts meta.export.ts keyword.control.type.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.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 { U } from "AnotherModule";
^^^^^^
source.ts meta.export.ts keyword.control.export.ts
^
source.ts meta.export.ts
^^^^
source.ts meta.export.ts keyword.control.type.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.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
186 changes: 186 additions & 0 deletions tests/baselines/importTypeOnly.baseline.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
original file
-----------------------------------
import type T from "mod";
import type { U, V } from "mod";
import type * as types from "mod";
import type from "mod";
import type = require("mod");
import type T = require("mod");

-----------------------------------

Grammar: TypeScript.tmLanguage
-----------------------------------
>import type T from "mod";
^^^^^^
source.ts meta.import.ts keyword.control.import.ts
^
source.ts meta.import.ts
^^^^
source.ts meta.import.ts keyword.control.type.ts
^
source.ts meta.import.ts
^
source.ts meta.import.ts variable.other.readwrite.alias.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 { U, V } from "mod";
^^^^^^
source.ts meta.import.ts keyword.control.import.ts
^
source.ts meta.import.ts
^^^^
source.ts meta.import.ts keyword.control.type.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 variable.other.readwrite.alias.ts
^
source.ts meta.import.ts meta.block.ts punctuation.separator.comma.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 * as types from "mod";
^^^^^^
source.ts meta.import.ts keyword.control.import.ts
^
source.ts meta.import.ts
^^^^
source.ts meta.import.ts keyword.control.type.ts
^
source.ts meta.import.ts
^
source.ts meta.import.ts constant.language.import-export-all.ts
^
source.ts meta.import.ts
^^
source.ts meta.import.ts keyword.control.as.ts
^
source.ts meta.import.ts
^^^^^
source.ts meta.import.ts variable.other.readwrite.alias.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 from "mod";
^^^^^^
source.ts meta.import.ts keyword.control.import.ts
^
source.ts meta.import.ts
^^^^
source.ts meta.import.ts variable.other.readwrite.alias.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 = require("mod");
^^^^^^
source.ts meta.import-equals.external.ts keyword.control.import.ts
^
source.ts meta.import-equals.external.ts
^^^^
source.ts meta.import-equals.external.ts variable.other.readwrite.alias.ts
^
source.ts meta.import-equals.external.ts
^
source.ts meta.import-equals.external.ts keyword.operator.assignment.ts
^
source.ts meta.import-equals.external.ts
^^^^^^^
source.ts meta.import-equals.external.ts keyword.control.require.ts
^
source.ts meta.import-equals.external.ts meta.brace.round.ts
^
source.ts meta.import-equals.external.ts string.quoted.double.ts punctuation.definition.string.begin.ts
^^^
source.ts meta.import-equals.external.ts string.quoted.double.ts
^
source.ts meta.import-equals.external.ts string.quoted.double.ts punctuation.definition.string.end.ts
^
source.ts meta.import-equals.external.ts meta.brace.round.ts
^
source.ts punctuation.terminator.statement.ts
>import type T = require("mod");
^^^^^^
source.ts meta.import.ts keyword.control.import.ts
^
source.ts meta.import.ts
^^^^
source.ts meta.import.ts keyword.control.type.ts
^
source.ts meta.import.ts
^
source.ts meta.import.ts variable.other.readwrite.alias.ts
^^^
source.ts meta.import.ts
^^^^^^^
source.ts meta.import.ts variable.other.readwrite.alias.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 meta.import.ts
>
^
source.ts meta.import.ts
4 changes: 3 additions & 1 deletion tests/cases/exportDeclarations.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
export { a as b, x };
export * from "AnotherModule";
export { k as m, l } from "AnotherModule";
export { k as m, l } from "AnotherModule";
export type { T };
export type { U } from "AnotherModule";
Loading