diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 48bcc9664..a5094a2c3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -32,16 +32,17 @@ jobs:
- run: pnpm lint
- uses: wyvox/action-setup-pnpm@v3
- # type-tests:
- # name: "Type Tests"
- # runs-on: ubuntu-latest
- # steps:
- # - uses: actions/checkout@v4
- # - uses: pnpm/action-setup@v2
- # - uses: actions/setup-node@v4
- # with:
- # cache: pnpm
- # - run: pnpm reset
+ type-tests:
+ name: "Type Tests"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: pnpm/action-setup@v2
+ - uses: actions/setup-node@v4
+ with:
+ cache: pnpm
+ - run: pnpm reset
+ - run: pnpm --filter './test-packages/ts-template-imports-app' test:typecheck
# - run: "pnpm --filter '*' run test:typecheck"
# - run: "pnpm --filter '*' run test:tsc"
diff --git a/test-packages/package-test-core/__tests__/language-server/diagnostics.test.ts b/test-packages/package-test-core/__tests__/language-server/diagnostics.test.ts
index aba4ddbff..c7c5d7c66 100644
--- a/test-packages/package-test-core/__tests__/language-server/diagnostics.test.ts
+++ b/test-packages/package-test-core/__tests__/language-server/diagnostics.test.ts
@@ -636,4 +636,37 @@ describe('Language Server: Diagnostics (ts plugin)', () => {
]
`);
});
+
+ test('MathML context is retained and popped', async () => {
+ let componentA = stripIndent`
+ export const MathMLExample =
+ x
+
+
+
+ x
+
+ `;
+
+ const diagnostics = await requestDiagnostics(
+ 'ts-template-imports-app/src/ephemeral-index.gts',
+ 'glimmer-ts',
+ componentA,
+ );
+
+ expect(diagnostics).toMatchInlineSnapshot(`[]`);
+ });
});
diff --git a/test-packages/package-test-core/__tests__/language-server/hover.test.ts b/test-packages/package-test-core/__tests__/language-server/hover.test.ts
index c1eeda5a8..d7cf9cefc 100644
--- a/test-packages/package-test-core/__tests__/language-server/hover.test.ts
+++ b/test-packages/package-test-core/__tests__/language-server/hover.test.ts
@@ -130,6 +130,25 @@ describe('Language Server: Hover (ts plugin)', () => {
`);
});
+ describe('MathML', () => {
+ test('empty
+
+ `);
+
+ const doc = await prepareDocument(
+ 'ts-template-imports-app/src/ephemeral.gts',
+ 'glimmer-ts',
+ content,
+ );
+
+ expect(await performHoverRequest(doc, offset)).toMatchInlineSnapshot();
+ });
+ });
+
describe.skip('JS in a TS project', () => {
test('with allowJs: true', async () => {
const [offset, content] = extractCursor(stripIndent`
diff --git a/test-packages/ts-template-imports-app/package.json b/test-packages/ts-template-imports-app/package.json
index d5aa9057d..05b1b701a 100644
--- a/test-packages/ts-template-imports-app/package.json
+++ b/test-packages/ts-template-imports-app/package.json
@@ -30,6 +30,7 @@
"@glint/environment-ember-loose": "workspace:*",
"@glint/environment-ember-template-imports": "workspace:*",
"@glint/template": "workspace:*",
+ "@glint/tsserver-plugin": "workspace:*",
"@glint/core": "workspace:*",
"@types/rsvp": "^4.0.9",
"@glint/tsserver-plugin": "workspace:*",
diff --git a/test-packages/ts-template-imports-app/src/Greeting.gts b/test-packages/ts-template-imports-app/src/Greeting.gts
index 0fbbf1152..ef0d6a34a 100644
--- a/test-packages/ts-template-imports-app/src/Greeting.gts
+++ b/test-packages/ts-template-imports-app/src/Greeting.gts
@@ -1,5 +1,5 @@
import Component from '@glimmer/component';
-import { TOC } from '@ember/component/template-only';
+import type { TOC } from '@ember/component/template-only';
export interface GreetingSignature {
Args: { target: string };
diff --git a/test-packages/ts-template-imports-app/src/GreetingAutoImportTest.gts b/test-packages/ts-template-imports-app/src/GreetingAutoImportTest.gts
index 15e01abec..1b8870944 100644
--- a/test-packages/ts-template-imports-app/src/GreetingAutoImportTest.gts
+++ b/test-packages/ts-template-imports-app/src/GreetingAutoImportTest.gts
@@ -1,3 +1,4 @@
// This test used for testing auto-imports
+// @ts-expect-error
let C = Greeting;
diff --git a/test-packages/ts-template-imports-app/src/NoTemplate.gts b/test-packages/ts-template-imports-app/src/NoTemplate.gts
index e2352cbcb..f5cfa5dd8 100644
--- a/test-packages/ts-template-imports-app/src/NoTemplate.gts
+++ b/test-packages/ts-template-imports-app/src/NoTemplate.gts
@@ -1,8 +1,8 @@
/*NoTemplate*/
import Component from '@glimmer/component';
-import { TOC } from '@ember/component/template-only';
+import type { TOC } from '@ember/component/template-only';
import { Other } from './other';
export class Foo {}
-let o: Other
\ No newline at end of file
+let o: Other
diff --git a/test-packages/ts-template-imports-app/src/Playground.gts b/test-packages/ts-template-imports-app/src/Playground.gts
index 5c24d91eb..39aa27ad3 100644
--- a/test-packages/ts-template-imports-app/src/Playground.gts
+++ b/test-packages/ts-template-imports-app/src/Playground.gts
@@ -1,7 +1,7 @@
import Component from '@glimmer/component';
-import { TOC } from '@ember/component/template-only';
+import type { TOC } from '@ember/component/template-only';
import { hash } from '@ember/helper';
-import { ComponentLike, ModifierLike, HelperLike } from '@glint/template';
+import type { ComponentLike, ModifierLike, HelperLike } from '@glint/template';
const lib = {
MaybeComponent: undefined as TOC<{ Args: { arg: string } }> | undefined
diff --git a/test-packages/ts-template-imports-app/src/math-ml.gts b/test-packages/ts-template-imports-app/src/math-ml.gts
new file mode 100644
index 000000000..28e3b88e5
--- /dev/null
+++ b/test-packages/ts-template-imports-app/src/math-ml.gts
@@ -0,0 +1,16 @@
+export const MathMLExample =
+
+
diff --git a/test-packages/ts-template-imports-app/src/normal.ts b/test-packages/ts-template-imports-app/src/normal.ts
deleted file mode 100644
index 8add40d79..000000000
--- a/test-packages/ts-template-imports-app/src/normal.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import Component from '@glimmer/component';
-import { TOC } from '@ember/component/template-only';
-import { Other } from './other';
-
-export class Foo {}
-
-let b: C;
-f;
-f;
-let a: O;