diff --git a/TypeScript.YAML-tmLanguage b/TypeScript.YAML-tmLanguage
index 4bc3eb49..dea780a1 100644
--- a/TypeScript.YAML-tmLanguage
+++ b/TypeScript.YAML-tmLanguage
@@ -1092,6 +1092,7 @@ repository:
'3': { name: keyword.control.default.ts }
end: (?=$|{{endOfStatement}})
patterns:
+ - include: '#interface-declaration'
- include: '#expression'
- name: meta.export.ts
begin: '{{startOfIdentifier}}(export)(?!\s*:){{endOfIdentifier}}'
diff --git a/TypeScript.tmLanguage b/TypeScript.tmLanguage
index ce37a3da..50de6106 100644
--- a/TypeScript.tmLanguage
+++ b/TypeScript.tmLanguage
@@ -3533,6 +3533,10 @@
(?=$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)
patterns
+
+ include
+ #interface-declaration
+
include
#expression
diff --git a/TypeScriptReact.tmLanguage b/TypeScriptReact.tmLanguage
index 73640638..fc21a5eb 100644
--- a/TypeScriptReact.tmLanguage
+++ b/TypeScriptReact.tmLanguage
@@ -3537,6 +3537,10 @@
(?=$|;|^\s*abstract\b|^\s*async\b|^\s*class\b|^\s*const\b|^\s*declare\b|^\s*enum\b|^\s*export\b|^\s*function\b|^\s*import\b|^\s*interface\b|^\s*let\b|^\s*module\b|^\s*namespace\b|^\s*return\b|^\s*type\b|^\s*var\b)
patterns
+
+ include
+ #interface-declaration
+
include
#expression
diff --git a/tests/baselines/Issue653.baseline.txt b/tests/baselines/Issue653.baseline.txt
new file mode 100644
index 00000000..fdd60792
--- /dev/null
+++ b/tests/baselines/Issue653.baseline.txt
@@ -0,0 +1,44 @@
+original file
+-----------------------------------
+export default interface IFoo {
+ x: string;
+}
+-----------------------------------
+
+Grammar: TypeScript.tmLanguage
+-----------------------------------
+>export default interface IFoo {
+ ^^^^^^
+ source.ts meta.export.default.ts keyword.control.export.ts
+ ^
+ source.ts meta.export.default.ts
+ ^^^^^^^
+ source.ts meta.export.default.ts keyword.control.default.ts
+ ^
+ source.ts meta.export.default.ts
+ ^^^^^^^^^
+ source.ts meta.export.default.ts meta.interface.ts storage.type.interface.ts
+ ^
+ source.ts meta.export.default.ts meta.interface.ts
+ ^^^^
+ source.ts meta.export.default.ts meta.interface.ts entity.name.type.interface.ts
+ ^
+ source.ts meta.export.default.ts meta.interface.ts
+ ^
+ source.ts meta.export.default.ts meta.interface.ts punctuation.definition.block.ts
+> x: string;
+ ^^^^
+ source.ts meta.export.default.ts meta.interface.ts meta.field.declaration.ts
+ ^
+ source.ts meta.export.default.ts meta.interface.ts meta.field.declaration.ts meta.definition.property.ts variable.object.property.ts
+ ^
+ source.ts meta.export.default.ts meta.interface.ts meta.field.declaration.ts meta.type.annotation.ts keyword.operator.type.annotation.ts
+ ^
+ source.ts meta.export.default.ts meta.interface.ts meta.field.declaration.ts meta.type.annotation.ts
+ ^^^^^^
+ source.ts meta.export.default.ts meta.interface.ts meta.field.declaration.ts meta.type.annotation.ts support.type.primitive.ts
+ ^
+ source.ts meta.export.default.ts meta.interface.ts punctuation.terminator.statement.ts
+>}
+ ^
+ source.ts meta.export.default.ts meta.interface.ts punctuation.definition.block.ts
\ No newline at end of file
diff --git a/tests/cases/Issue653.ts b/tests/cases/Issue653.ts
new file mode 100644
index 00000000..e86712ee
--- /dev/null
+++ b/tests/cases/Issue653.ts
@@ -0,0 +1,3 @@
+export default interface IFoo {
+ x: string;
+}
\ No newline at end of file