From 7efc16054b5cb23ae954e02aeb59c9fc0ad2a179 Mon Sep 17 00:00:00 2001 From: RedCMD Date: Wed, 28 Jan 2026 20:12:39 +1300 Subject: [PATCH] fix: `preserve` inside `triple-slash.directive` #1066 --- TypeScript.YAML-tmLanguage | 4 +-- TypeScript.tmLanguage | 4 +-- TypeScriptReact.tmLanguage | 4 +-- tests/baselines/Issue1066.baseline.txt | 44 ++++++++++++++++++++++++++ tests/cases/Issue1066.ts | 1 + 5 files changed, 51 insertions(+), 6 deletions(-) create mode 100644 tests/baselines/Issue1066.baseline.txt create mode 100644 tests/cases/Issue1066.ts diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage index 36fa5547..f04e137e 100644 --- a/TypeScript.YAML-tmLanguage +++ b/TypeScript.YAML-tmLanguage @@ -2927,7 +2927,7 @@ repository: directives: name: comment.line.triple-slash.directive.ts - begin: ^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode)\s*=\s*({{quotedStrings}}))+\s*/>\s*$) + begin: ^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode|preserve)\s*=\s*({{quotedStrings}}))+\s*/>\s*$) beginCaptures: '1': { name: punctuation.definition.comment.ts } end: (?=$) @@ -2942,7 +2942,7 @@ repository: '0': { name: punctuation.definition.tag.directive.ts } patterns: - name: entity.other.attribute-name.directive.ts - match: 'path|types|no-default-lib|lib|name|resolution-mode' + match: 'path|types|no-default-lib|lib|name|resolution-mode|preserve' - name: keyword.operator.assignment.ts match: '=' - include: '#string' diff --git a/TypeScript.tmLanguage b/TypeScript.tmLanguage index 4d91f6ad..d89ecc08 100644 --- a/TypeScript.tmLanguage +++ b/TypeScript.tmLanguage @@ -8951,7 +8951,7 @@ name comment.line.triple-slash.directive.ts begin - ^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode)\s*=\s*((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/>\s*$) + ^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode|preserve)\s*=\s*((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/>\s*$) beginCaptures 1 @@ -8998,7 +8998,7 @@ name entity.other.attribute-name.directive.ts match - path|types|no-default-lib|lib|name|resolution-mode + path|types|no-default-lib|lib|name|resolution-mode|preserve name diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage index a7aec5da..ff57281f 100644 --- a/TypeScriptReact.tmLanguage +++ b/TypeScriptReact.tmLanguage @@ -8899,7 +8899,7 @@ name comment.line.triple-slash.directive.tsx begin - ^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode)\s*=\s*((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/>\s*$) + ^(///)\s*(?=<(reference|amd-dependency|amd-module)(\s+(path|types|no-default-lib|lib|name|resolution-mode|preserve)\s*=\s*((\'([^\'\\]|\\.)*\')|(\"([^\"\\]|\\.)*\")|(\`([^\`\\]|\\.)*\`)))+\s*/>\s*$) beginCaptures 1 @@ -8946,7 +8946,7 @@ name entity.other.attribute-name.directive.tsx match - path|types|no-default-lib|lib|name|resolution-mode + path|types|no-default-lib|lib|name|resolution-mode|preserve name diff --git a/tests/baselines/Issue1066.baseline.txt b/tests/baselines/Issue1066.baseline.txt new file mode 100644 index 00000000..a99fae61 --- /dev/null +++ b/tests/baselines/Issue1066.baseline.txt @@ -0,0 +1,44 @@ +original file +----------------------------------- +/// +----------------------------------- + +Grammar: TypeScript.tmLanguage +----------------------------------- +>/// + ^^^ + source.ts comment.line.triple-slash.directive.ts punctuation.definition.comment.ts + ^ + source.ts comment.line.triple-slash.directive.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts punctuation.definition.tag.directive.ts + ^^^^^^^^^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts entity.name.tag.directive.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts + ^^^^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts entity.other.attribute-name.directive.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts keyword.operator.assignment.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^^^^^^^^^^^^^^^^^^^^^^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts string.quoted.double.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts + ^^^^^^^^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts entity.other.attribute-name.directive.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts keyword.operator.assignment.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts string.quoted.double.ts punctuation.definition.string.begin.ts + ^^^^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts string.quoted.double.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts string.quoted.double.ts punctuation.definition.string.end.ts + ^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts + ^^ + source.ts comment.line.triple-slash.directive.ts meta.tag.ts punctuation.definition.tag.directive.ts \ No newline at end of file diff --git a/tests/cases/Issue1066.ts b/tests/cases/Issue1066.ts new file mode 100644 index 00000000..660bed57 --- /dev/null +++ b/tests/cases/Issue1066.ts @@ -0,0 +1 @@ +/// \ No newline at end of file