diff --git a/.eslintignore b/.eslintignore index 80fd57da22c0..13716c22a82e 100644 --- a/.eslintignore +++ b/.eslintignore @@ -12,3 +12,4 @@ docs/.vitepress/cache/deps/*.* test/core/src/self test/workspaces/results.json test/reporters/fixtures/with-syntax-error.test.js +using-feature.test.ts \ No newline at end of file diff --git a/test/core/test/using-feature.test.ts b/test/core/test/using-feature.test.ts new file mode 100644 index 000000000000..9fd070f739bd --- /dev/null +++ b/test/core/test/using-feature.test.ts @@ -0,0 +1,27 @@ +import { test, expect } from 'vitest' + +// @ts-expect-error - readonly symbol, but might not be assigned +Symbol.dispose ??= Symbol('dispose') + +const resourceful = (resourceDefault: string) => { + let resource: string | null = resourceDefault + return { + get resource() { + return resource + }, + [Symbol.dispose]: () => { + resource = null + }, + } +} + +test('new "using" feature', () => { + let getResource = (): any => { + throw new Error('don\'t call me') + } + { + using resource = resourceful('foo') + getResource = () => resource.resource + } + expect(getResource()).toBe(null) +})