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 = + `; + + 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 ', async () => { + const [offset, content] = extractCursor(stripIndent` + + + `); + + 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;