From 5b7567b4fc20a19a33e42e2364d7ee09a817af84 Mon Sep 17 00:00:00 2001 From: SerKo Date: Wed, 12 Nov 2025 02:22:18 +0800 Subject: [PATCH 01/11] chore: add failure fixture for #4972 --- test-workspace/tsc/failureFixtures/#4972/Comp.vue | 3 +++ .../tsc/failureFixtures/#4972/GenericComp.vue | 3 +++ test-workspace/tsc/failureFixtures/#4972/main.vue | 10 ++++++++++ test-workspace/tsc/failureFixtures/#4972/tsconfig.json | 4 ++++ test-workspace/tsc/tsconfig.json | 1 + 5 files changed, 21 insertions(+) create mode 100644 test-workspace/tsc/failureFixtures/#4972/Comp.vue create mode 100644 test-workspace/tsc/failureFixtures/#4972/GenericComp.vue create mode 100644 test-workspace/tsc/failureFixtures/#4972/main.vue create mode 100644 test-workspace/tsc/failureFixtures/#4972/tsconfig.json diff --git a/test-workspace/tsc/failureFixtures/#4972/Comp.vue b/test-workspace/tsc/failureFixtures/#4972/Comp.vue new file mode 100644 index 0000000000..0dce31ad69 --- /dev/null +++ b/test-workspace/tsc/failureFixtures/#4972/Comp.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/test-workspace/tsc/failureFixtures/#4972/GenericComp.vue b/test-workspace/tsc/failureFixtures/#4972/GenericComp.vue new file mode 100644 index 0000000000..89e8a932ce --- /dev/null +++ b/test-workspace/tsc/failureFixtures/#4972/GenericComp.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/test-workspace/tsc/failureFixtures/#4972/main.vue b/test-workspace/tsc/failureFixtures/#4972/main.vue new file mode 100644 index 0000000000..e412417b42 --- /dev/null +++ b/test-workspace/tsc/failureFixtures/#4972/main.vue @@ -0,0 +1,10 @@ + + + diff --git a/test-workspace/tsc/failureFixtures/#4972/tsconfig.json b/test-workspace/tsc/failureFixtures/#4972/tsconfig.json new file mode 100644 index 0000000000..6aaecd7c51 --- /dev/null +++ b/test-workspace/tsc/failureFixtures/#4972/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../../tsconfig.base.json", + "include": ["**/*"] +} diff --git a/test-workspace/tsc/tsconfig.json b/test-workspace/tsc/tsconfig.json index ab58c0bcb4..69f4a12552 100644 --- a/test-workspace/tsc/tsconfig.json +++ b/test-workspace/tsc/tsconfig.json @@ -3,6 +3,7 @@ "references": [ { "path": "./failureFixtures/#3632" }, { "path": "./failureFixtures/#4569" }, + { "path": "./failureFixtures/#4972" }, { "path": "./failureFixtures/#5071" }, { "path": "./failureFixtures/directives" }, From 51ed320694b05d1f90f84ccfeb4459464ac53306 Mon Sep 17 00:00:00 2001 From: SerKo Date: Thu, 13 Nov 2025 21:11:48 +0800 Subject: [PATCH 02/11] fix: codegen generic component props type for `checkUnknownProps` option --- packages/language-core/lib/codegen/script/scriptSetup.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/language-core/lib/codegen/script/scriptSetup.ts b/packages/language-core/lib/codegen/script/scriptSetup.ts index 0567ef4983..d9d63040cb 100644 --- a/packages/language-core/lib/codegen/script/scriptSetup.ts +++ b/packages/language-core/lib/codegen/script/scriptSetup.ts @@ -97,7 +97,7 @@ export function* generateScriptSetup( + ` & import('${options.vueCompilerOptions.lib}').AllowedComponentProps` + ` & import('${options.vueCompilerOptions.lib}').ComponentCustomProps` : `globalThis.JSX.IntrinsicAttributes` - }${endOfLine}` + }${options.vueCompilerOptions.checkUnknownProps ? '' : ' & Record'}${endOfLine}` + ` expose: (exposed: ${ scriptSetupRanges.defineExpose ? `import('${options.vueCompilerOptions.lib}').ShallowUnwrapRef` From 73142a9d56d91408c9e4f80777d691492d9c066c Mon Sep 17 00:00:00 2001 From: SerKo Date: Thu, 13 Nov 2025 21:12:28 +0800 Subject: [PATCH 03/11] test: update test units --- packages/tsc/tests/typecheck.spec.ts | 6 ++++++ .../tsc/passedFixtures/vue3.4/components/main.vue | 2 +- test-workspace/tsc/passedFixtures/vue3/components/main.vue | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/tsc/tests/typecheck.spec.ts b/packages/tsc/tests/typecheck.spec.ts index 198591bac1..65898cb1ee 100644 --- a/packages/tsc/tests/typecheck.spec.ts +++ b/packages/tsc/tests/typecheck.spec.ts @@ -13,6 +13,12 @@ describe(`vue-tsc`, () => { "test-workspace/tsc/failureFixtures/#3632/script.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#3632/scriptSetup.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#4569/main.vue(1,41): error TS4025: Exported variable '__VLS_export' has or is using private name 'Props'.", + "test-workspace/tsc/failureFixtures/#4972/main.vue(7,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ readonly modelValue: string; readonly "onUpdate:modelValue"?: ((value: string) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. + Property 'modelValue' is missing in type '{}' but required in type '{ readonly modelValue: string; readonly "onUpdate:modelValue"?: ((value: string) => any) | undefined; }'.", + "test-workspace/tsc/failureFixtures/#4972/main.vue(8,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. + Property 'modelValue' is missing in type '{}' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", + "test-workspace/tsc/failureFixtures/#4972/main.vue(9,3): error TS2345: Argument of type '{ whatever: string; }' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. + Property 'modelValue' is missing in type '{ whatever: string; }' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", "test-workspace/tsc/failureFixtures/#5071/withScript.vue(1,19): error TS1005: ';' expected.", "test-workspace/tsc/failureFixtures/#5071/withoutScript.vue(2,26): error TS1005: ';' expected.", "test-workspace/tsc/failureFixtures/directives/main.vue(12,2): error TS2578: Unused '@ts-expect-error' directive.", diff --git a/test-workspace/tsc/passedFixtures/vue3.4/components/main.vue b/test-workspace/tsc/passedFixtures/vue3.4/components/main.vue index 28dc5426ec..75b522940e 100644 --- a/test-workspace/tsc/passedFixtures/vue3.4/components/main.vue +++ b/test-workspace/tsc/passedFixtures/vue3.4/components/main.vue @@ -64,7 +64,7 @@ declare const ScriptSetupGenericExact: ( props: { onBar?: ((data: T) => any) | undefined; foo: T; - } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, + } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & Record, attrs: any, slots: { default?: (props: T) => any; }, emit: { (e: 'bar', data: T): void; }, diff --git a/test-workspace/tsc/passedFixtures/vue3/components/main.vue b/test-workspace/tsc/passedFixtures/vue3/components/main.vue index 9da3e4898b..476d1ad224 100644 --- a/test-workspace/tsc/passedFixtures/vue3/components/main.vue +++ b/test-workspace/tsc/passedFixtures/vue3/components/main.vue @@ -59,7 +59,7 @@ declare const ScriptSetupGenericExact: ( props: { onBar?: ((data: T) => any) | undefined; foo: T; - } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps, + } & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & Record, attrs: any, slots: { default?: (props: T) => any; }, emit: { (e: 'bar', data: T): void; }, From 613e64eeb953449d47e9a31a443d7314e54d9335 Mon Sep 17 00:00:00 2001 From: SerKo Date: Thu, 13 Nov 2025 21:16:17 +0800 Subject: [PATCH 04/11] test: update dts test unit --- packages/tsc/tests/__snapshots__/dts.spec.ts.snap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap index 3061be7155..c431434919 100644 --- a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap +++ b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap @@ -63,7 +63,7 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v }) & { "onUpdate:title"?: (value: string) => any; onBar?: (data: number) => any; - }> & import("vue").PublicProps; + }> & import("vue").PublicProps & Record; expose: (exposed: import("vue").ShallowUnwrapRef<{ baz: number; }>) => void; @@ -94,7 +94,7 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g }) & { "onUpdate:title"?: (value: string) => any; onBar?: (data: number) => any; - }> & import("vue").PublicProps; + }> & import("vue").PublicProps & Record; expose: (exposed: import("vue").ShallowUnwrapRef<{ baz: number; }>) => void; From a562398be0b074b90cbcf71d7a4e946694ff7b0a Mon Sep 17 00:00:00 2001 From: SerKo Date: Thu, 13 Nov 2025 21:21:56 +0800 Subject: [PATCH 05/11] chore: clean fixture --- packages/tsc/tests/typecheck.spec.ts | 6 ++---- test-workspace/tsc/failureFixtures/#4972/Comp.vue | 3 --- test-workspace/tsc/failureFixtures/#4972/main.vue | 2 -- 3 files changed, 2 insertions(+), 9 deletions(-) delete mode 100644 test-workspace/tsc/failureFixtures/#4972/Comp.vue diff --git a/packages/tsc/tests/typecheck.spec.ts b/packages/tsc/tests/typecheck.spec.ts index 65898cb1ee..87890fc3c7 100644 --- a/packages/tsc/tests/typecheck.spec.ts +++ b/packages/tsc/tests/typecheck.spec.ts @@ -13,11 +13,9 @@ describe(`vue-tsc`, () => { "test-workspace/tsc/failureFixtures/#3632/script.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#3632/scriptSetup.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#4569/main.vue(1,41): error TS4025: Exported variable '__VLS_export' has or is using private name 'Props'.", - "test-workspace/tsc/failureFixtures/#4972/main.vue(7,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ readonly modelValue: string; readonly "onUpdate:modelValue"?: ((value: string) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. - Property 'modelValue' is missing in type '{}' but required in type '{ readonly modelValue: string; readonly "onUpdate:modelValue"?: ((value: string) => any) | undefined; }'.", - "test-workspace/tsc/failureFixtures/#4972/main.vue(8,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. + "test-workspace/tsc/failureFixtures/#4972/main.vue(6,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. Property 'modelValue' is missing in type '{}' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", - "test-workspace/tsc/failureFixtures/#4972/main.vue(9,3): error TS2345: Argument of type '{ whatever: string; }' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. + "test-workspace/tsc/failureFixtures/#4972/main.vue(7,3): error TS2345: Argument of type '{ whatever: string; }' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. Property 'modelValue' is missing in type '{ whatever: string; }' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", "test-workspace/tsc/failureFixtures/#5071/withScript.vue(1,19): error TS1005: ';' expected.", "test-workspace/tsc/failureFixtures/#5071/withoutScript.vue(2,26): error TS1005: ';' expected.", diff --git a/test-workspace/tsc/failureFixtures/#4972/Comp.vue b/test-workspace/tsc/failureFixtures/#4972/Comp.vue deleted file mode 100644 index 0dce31ad69..0000000000 --- a/test-workspace/tsc/failureFixtures/#4972/Comp.vue +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/test-workspace/tsc/failureFixtures/#4972/main.vue b/test-workspace/tsc/failureFixtures/#4972/main.vue index e412417b42..8b392e0cb7 100644 --- a/test-workspace/tsc/failureFixtures/#4972/main.vue +++ b/test-workspace/tsc/failureFixtures/#4972/main.vue @@ -1,10 +1,8 @@ From 1d82efb2b06fa5c9ed0686cde230d4c44d70c3b9 Mon Sep 17 00:00:00 2001 From: SerKo Date: Thu, 13 Nov 2025 21:23:50 +0800 Subject: [PATCH 06/11] chore: update fixture --- packages/tsc/tests/typecheck.spec.ts | 6 +++--- test-workspace/tsc/failureFixtures/#4972/main.vue | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/tsc/tests/typecheck.spec.ts b/packages/tsc/tests/typecheck.spec.ts index 87890fc3c7..b504f87f3c 100644 --- a/packages/tsc/tests/typecheck.spec.ts +++ b/packages/tsc/tests/typecheck.spec.ts @@ -13,10 +13,10 @@ describe(`vue-tsc`, () => { "test-workspace/tsc/failureFixtures/#3632/script.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#3632/scriptSetup.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#4569/main.vue(1,41): error TS4025: Exported variable '__VLS_export' has or is using private name 'Props'.", - "test-workspace/tsc/failureFixtures/#4972/main.vue(6,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. - Property 'modelValue' is missing in type '{}' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", - "test-workspace/tsc/failureFixtures/#4972/main.vue(7,3): error TS2345: Argument of type '{ whatever: string; }' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. + "test-workspace/tsc/failureFixtures/#4972/main.vue(10,3): error TS2345: Argument of type '{ whatever: string; }' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. Property 'modelValue' is missing in type '{ whatever: string; }' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", + "test-workspace/tsc/failureFixtures/#4972/main.vue(9,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. + Property 'modelValue' is missing in type '{}' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", "test-workspace/tsc/failureFixtures/#5071/withScript.vue(1,19): error TS1005: ';' expected.", "test-workspace/tsc/failureFixtures/#5071/withoutScript.vue(2,26): error TS1005: ';' expected.", "test-workspace/tsc/failureFixtures/directives/main.vue(12,2): error TS2578: Unused '@ts-expect-error' directive.", diff --git a/test-workspace/tsc/failureFixtures/#4972/main.vue b/test-workspace/tsc/failureFixtures/#4972/main.vue index 8b392e0cb7..1f67b5f58d 100644 --- a/test-workspace/tsc/failureFixtures/#4972/main.vue +++ b/test-workspace/tsc/failureFixtures/#4972/main.vue @@ -1,8 +1,11 @@ From dab443be7c53a78254e81ebcd8266e652499f7ae Mon Sep 17 00:00:00 2001 From: SerKo Date: Fri, 14 Nov 2025 21:08:13 +0800 Subject: [PATCH 07/11] fix: use global `__VLS_CheckUnknownProps` from script setup --- packages/language-core/lib/codegen/globalTypes.ts | 2 +- packages/language-core/lib/codegen/script/scriptSetup.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/language-core/lib/codegen/globalTypes.ts b/packages/language-core/lib/codegen/globalTypes.ts index 1d63ae4b7b..089529bd95 100644 --- a/packages/language-core/lib/codegen/globalTypes.ts +++ b/packages/language-core/lib/codegen/globalTypes.ts @@ -32,7 +32,7 @@ export function generateGlobalTypes(options: VueCompilerOptions) { ? `import('${lib}/jsx-runtime').JSX.IntrinsicElements` : `globalThis.JSX.IntrinsicElements` }; - + var __VLS_CheckUnknownProps: ${checkUnknownProps ? '{}' : 'Record'}; type __VLS_Elements = __VLS_SpreadMerge; type __VLS_GlobalComponents = ${ target >= 3.5 diff --git a/packages/language-core/lib/codegen/script/scriptSetup.ts b/packages/language-core/lib/codegen/script/scriptSetup.ts index d9d63040cb..343ac6884d 100644 --- a/packages/language-core/lib/codegen/script/scriptSetup.ts +++ b/packages/language-core/lib/codegen/script/scriptSetup.ts @@ -97,7 +97,9 @@ export function* generateScriptSetup( + ` & import('${options.vueCompilerOptions.lib}').AllowedComponentProps` + ` & import('${options.vueCompilerOptions.lib}').ComponentCustomProps` : `globalThis.JSX.IntrinsicAttributes` - }${options.vueCompilerOptions.checkUnknownProps ? '' : ' & Record'}${endOfLine}` + }${newLine}` + + ` // @ts-ignore${newLine}` + + ` & (typeof globalThis extends { __VLS_CheckUnknownProps: any } ? typeof globalThis.__VLS_CheckUnknownProps : {})${endOfLine}` + ` expose: (exposed: ${ scriptSetupRanges.defineExpose ? `import('${options.vueCompilerOptions.lib}').ShallowUnwrapRef` From aa8e6ea6f02b70daac28f3bbc4c317869ceddf6c Mon Sep 17 00:00:00 2001 From: SerKo Date: Fri, 14 Nov 2025 21:09:38 +0800 Subject: [PATCH 08/11] test: update dts test snapshot --- packages/tsc/tests/__snapshots__/dts.spec.ts.snap | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap index c431434919..62a5bce3d6 100644 --- a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap +++ b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap @@ -63,7 +63,9 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v }) & { "onUpdate:title"?: (value: string) => any; onBar?: (data: number) => any; - }> & import("vue").PublicProps & Record; + }> & import("vue").PublicProps & (typeof globalThis extends { + __VLS_CheckUnknownProps: any; + } ? typeof globalThis.__VLS_CheckUnknownProps : {}); expose: (exposed: import("vue").ShallowUnwrapRef<{ baz: number; }>) => void; @@ -94,7 +96,9 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g }) & { "onUpdate:title"?: (value: string) => any; onBar?: (data: number) => any; - }> & import("vue").PublicProps & Record; + }> & import("vue").PublicProps & (typeof globalThis extends { + __VLS_CheckUnknownProps: any; + } ? typeof globalThis.__VLS_CheckUnknownProps : {}); expose: (exposed: import("vue").ShallowUnwrapRef<{ baz: number; }>) => void; From 199b77a720d8f1c22a0b402f3a7b690dbe6c7548 Mon Sep 17 00:00:00 2001 From: SerKo Date: Fri, 14 Nov 2025 21:47:37 +0800 Subject: [PATCH 09/11] refactor: refine type for `__VLS_CheckUnknownProps` --- packages/language-core/lib/codegen/script/scriptSetup.ts | 3 +-- packages/tsc/tests/__snapshots__/dts.spec.ts.snap | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/language-core/lib/codegen/script/scriptSetup.ts b/packages/language-core/lib/codegen/script/scriptSetup.ts index 343ac6884d..6cd90c4eb4 100644 --- a/packages/language-core/lib/codegen/script/scriptSetup.ts +++ b/packages/language-core/lib/codegen/script/scriptSetup.ts @@ -98,8 +98,7 @@ export function* generateScriptSetup( + ` & import('${options.vueCompilerOptions.lib}').ComponentCustomProps` : `globalThis.JSX.IntrinsicAttributes` }${newLine}` - + ` // @ts-ignore${newLine}` - + ` & (typeof globalThis extends { __VLS_CheckUnknownProps: any } ? typeof globalThis.__VLS_CheckUnknownProps : {})${endOfLine}` + + ` & (typeof globalThis extends { __VLS_CheckUnknownProps: infer P } ? P : {})${endOfLine}` + ` expose: (exposed: ${ scriptSetupRanges.defineExpose ? `import('${options.vueCompilerOptions.lib}').ShallowUnwrapRef` diff --git a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap index 62a5bce3d6..cb77552ee8 100644 --- a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap +++ b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap @@ -64,8 +64,8 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v "onUpdate:title"?: (value: string) => any; onBar?: (data: number) => any; }> & import("vue").PublicProps & (typeof globalThis extends { - __VLS_CheckUnknownProps: any; - } ? typeof globalThis.__VLS_CheckUnknownProps : {}); + __VLS_CheckUnknownProps: infer P; + } ? P : {}); expose: (exposed: import("vue").ShallowUnwrapRef<{ baz: number; }>) => void; @@ -97,8 +97,8 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g "onUpdate:title"?: (value: string) => any; onBar?: (data: number) => any; }> & import("vue").PublicProps & (typeof globalThis extends { - __VLS_CheckUnknownProps: any; - } ? typeof globalThis.__VLS_CheckUnknownProps : {}); + __VLS_CheckUnknownProps: infer P; + } ? P : {}); expose: (exposed: import("vue").ShallowUnwrapRef<{ baz: number; }>) => void; From e88f0240e880ab41703d3c9ff5c7fadc627de81a Mon Sep 17 00:00:00 2001 From: SerKo Date: Sat, 15 Nov 2025 00:14:47 +0800 Subject: [PATCH 10/11] test: move to passed fixtures --- packages/tsc/tests/typecheck.spec.ts | 4 ---- .../{failureFixtures => passedFixtures}/#4972/GenericComp.vue | 0 .../tsc/{failureFixtures => passedFixtures}/#4972/main.vue | 2 ++ .../{failureFixtures => passedFixtures}/#4972/tsconfig.json | 0 test-workspace/tsc/tsconfig.json | 2 +- 5 files changed, 3 insertions(+), 5 deletions(-) rename test-workspace/tsc/{failureFixtures => passedFixtures}/#4972/GenericComp.vue (100%) rename test-workspace/tsc/{failureFixtures => passedFixtures}/#4972/main.vue (80%) rename test-workspace/tsc/{failureFixtures => passedFixtures}/#4972/tsconfig.json (100%) diff --git a/packages/tsc/tests/typecheck.spec.ts b/packages/tsc/tests/typecheck.spec.ts index b504f87f3c..198591bac1 100644 --- a/packages/tsc/tests/typecheck.spec.ts +++ b/packages/tsc/tests/typecheck.spec.ts @@ -13,10 +13,6 @@ describe(`vue-tsc`, () => { "test-workspace/tsc/failureFixtures/#3632/script.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#3632/scriptSetup.vue(3,1): error TS1109: Expression expected.", "test-workspace/tsc/failureFixtures/#4569/main.vue(1,41): error TS4025: Exported variable '__VLS_export' has or is using private name 'Props'.", - "test-workspace/tsc/failureFixtures/#4972/main.vue(10,3): error TS2345: Argument of type '{ whatever: string; }' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. - Property 'modelValue' is missing in type '{ whatever: string; }' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", - "test-workspace/tsc/failureFixtures/#4972/main.vue(9,3): error TS2345: Argument of type '{}' is not assignable to parameter of type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; } & VNodeProps & AllowedComponentProps & ComponentCustomProps & Record<...>'. - Property 'modelValue' is missing in type '{}' but required in type '{ modelValue: unknown; "onUpdate:modelValue"?: ((value: unknown) => any) | undefined; }'.", "test-workspace/tsc/failureFixtures/#5071/withScript.vue(1,19): error TS1005: ';' expected.", "test-workspace/tsc/failureFixtures/#5071/withoutScript.vue(2,26): error TS1005: ';' expected.", "test-workspace/tsc/failureFixtures/directives/main.vue(12,2): error TS2578: Unused '@ts-expect-error' directive.", diff --git a/test-workspace/tsc/failureFixtures/#4972/GenericComp.vue b/test-workspace/tsc/passedFixtures/#4972/GenericComp.vue similarity index 100% rename from test-workspace/tsc/failureFixtures/#4972/GenericComp.vue rename to test-workspace/tsc/passedFixtures/#4972/GenericComp.vue diff --git a/test-workspace/tsc/failureFixtures/#4972/main.vue b/test-workspace/tsc/passedFixtures/#4972/main.vue similarity index 80% rename from test-workspace/tsc/failureFixtures/#4972/main.vue rename to test-workspace/tsc/passedFixtures/#4972/main.vue index 1f67b5f58d..85f97bb31b 100644 --- a/test-workspace/tsc/failureFixtures/#4972/main.vue +++ b/test-workspace/tsc/passedFixtures/#4972/main.vue @@ -6,6 +6,8 @@ const n = ref(0) diff --git a/test-workspace/tsc/failureFixtures/#4972/tsconfig.json b/test-workspace/tsc/passedFixtures/#4972/tsconfig.json similarity index 100% rename from test-workspace/tsc/failureFixtures/#4972/tsconfig.json rename to test-workspace/tsc/passedFixtures/#4972/tsconfig.json diff --git a/test-workspace/tsc/tsconfig.json b/test-workspace/tsc/tsconfig.json index 69f4a12552..fce626bd51 100644 --- a/test-workspace/tsc/tsconfig.json +++ b/test-workspace/tsc/tsconfig.json @@ -3,7 +3,6 @@ "references": [ { "path": "./failureFixtures/#3632" }, { "path": "./failureFixtures/#4569" }, - { "path": "./failureFixtures/#4972" }, { "path": "./failureFixtures/#5071" }, { "path": "./failureFixtures/directives" }, @@ -15,6 +14,7 @@ { "path": "./passedFixtures/#3592" }, { "path": "./passedFixtures/#3819" }, { "path": "./passedFixtures/#4503" }, + { "path": "./passedFixtures/#4972" }, { "path": "./passedFixtures/#5106" }, { "path": "./passedFixtures/#5111" }, { "path": "./passedFixtures/#5136" }, From 874dc9d0c01a24172c38540ccbc04072159f89ba Mon Sep 17 00:00:00 2001 From: SerKo Date: Sun, 16 Nov 2025 03:24:44 +0800 Subject: [PATCH 11/11] chore: move fixture --- test-workspace/tsc/passedFixtures/#4972/tsconfig.json | 4 ---- .../tsc/passedFixtures/{ => vue3}/#4972/GenericComp.vue | 0 test-workspace/tsc/passedFixtures/{ => vue3}/#4972/main.vue | 0 test-workspace/tsc/tsconfig.json | 1 - 4 files changed, 5 deletions(-) delete mode 100644 test-workspace/tsc/passedFixtures/#4972/tsconfig.json rename test-workspace/tsc/passedFixtures/{ => vue3}/#4972/GenericComp.vue (100%) rename test-workspace/tsc/passedFixtures/{ => vue3}/#4972/main.vue (100%) diff --git a/test-workspace/tsc/passedFixtures/#4972/tsconfig.json b/test-workspace/tsc/passedFixtures/#4972/tsconfig.json deleted file mode 100644 index 6aaecd7c51..0000000000 --- a/test-workspace/tsc/passedFixtures/#4972/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "include": ["**/*"] -} diff --git a/test-workspace/tsc/passedFixtures/#4972/GenericComp.vue b/test-workspace/tsc/passedFixtures/vue3/#4972/GenericComp.vue similarity index 100% rename from test-workspace/tsc/passedFixtures/#4972/GenericComp.vue rename to test-workspace/tsc/passedFixtures/vue3/#4972/GenericComp.vue diff --git a/test-workspace/tsc/passedFixtures/#4972/main.vue b/test-workspace/tsc/passedFixtures/vue3/#4972/main.vue similarity index 100% rename from test-workspace/tsc/passedFixtures/#4972/main.vue rename to test-workspace/tsc/passedFixtures/vue3/#4972/main.vue diff --git a/test-workspace/tsc/tsconfig.json b/test-workspace/tsc/tsconfig.json index fce626bd51..ab58c0bcb4 100644 --- a/test-workspace/tsc/tsconfig.json +++ b/test-workspace/tsc/tsconfig.json @@ -14,7 +14,6 @@ { "path": "./passedFixtures/#3592" }, { "path": "./passedFixtures/#3819" }, { "path": "./passedFixtures/#4503" }, - { "path": "./passedFixtures/#4972" }, { "path": "./passedFixtures/#5106" }, { "path": "./passedFixtures/#5111" }, { "path": "./passedFixtures/#5136" },