From f076dd327658ff823c2203d7fe47093a3c598ebe Mon Sep 17 00:00:00 2001 From: so1ve Date: Fri, 26 Sep 2025 11:08:37 +0800 Subject: [PATCH 1/3] test: add tests --- test-workspace/tsc/passedFixtures/vue3/#5592/child.vue | 8 ++++++++ test-workspace/tsc/passedFixtures/vue3/#5592/main.vue | 9 +++++++++ 2 files changed, 17 insertions(+) create mode 100644 test-workspace/tsc/passedFixtures/vue3/#5592/child.vue create mode 100644 test-workspace/tsc/passedFixtures/vue3/#5592/main.vue diff --git a/test-workspace/tsc/passedFixtures/vue3/#5592/child.vue b/test-workspace/tsc/passedFixtures/vue3/#5592/child.vue new file mode 100644 index 0000000000..748369e89e --- /dev/null +++ b/test-workspace/tsc/passedFixtures/vue3/#5592/child.vue @@ -0,0 +1,8 @@ + + + diff --git a/test-workspace/tsc/passedFixtures/vue3/#5592/main.vue b/test-workspace/tsc/passedFixtures/vue3/#5592/main.vue new file mode 100644 index 0000000000..4e7c74e34c --- /dev/null +++ b/test-workspace/tsc/passedFixtures/vue3/#5592/main.vue @@ -0,0 +1,9 @@ + + + From f40eccfdfddf9f9ecf8e9d748064ddcaf8a5e63e Mon Sep 17 00:00:00 2001 From: so1ve Date: Fri, 26 Sep 2025 11:10:17 +0800 Subject: [PATCH 2/3] Revert "fix(language-core): `Prettify` breaks generics inferencing (#5424)" This reverts commit 7c5371548279b126a5d003cd0b6bc7bb296367c5. --- packages/language-core/lib/codegen/globalTypes.ts | 2 +- packages/language-core/lib/codegen/localTypes.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/language-core/lib/codegen/globalTypes.ts b/packages/language-core/lib/codegen/globalTypes.ts index 93134095e0..df60a90882 100644 --- a/packages/language-core/lib/codegen/globalTypes.ts +++ b/packages/language-core/lib/codegen/globalTypes.ts @@ -134,7 +134,7 @@ export function generateGlobalTypes(options: VueCompilerOptions) { type __VLS_ResolveDirectives = { [K in keyof T & string as \`v\${Capitalize}\`]: T[K]; }; - type __VLS_PrettifyGlobal = { [K in keyof T as K]: T[K]; } & {}; + type __VLS_PrettifyGlobal = { [K in keyof T]: T[K]; } & {}; type __VLS_WithDefaultsGlobal = { [K in keyof P as K extends keyof D ? K : never]-?: P[K]; } & { diff --git a/packages/language-core/lib/codegen/localTypes.ts b/packages/language-core/lib/codegen/localTypes.ts index 84e65d4aec..dc1b2e2fc7 100644 --- a/packages/language-core/lib/codegen/localTypes.ts +++ b/packages/language-core/lib/codegen/localTypes.ts @@ -17,7 +17,7 @@ type __VLS_WithDefaultsLocal = { ); const PrettifyLocal = defineHelper( `__VLS_PrettifyLocal`, - () => `type __VLS_PrettifyLocal = { [K in keyof T as K]: T[K]; } & {}${endOfLine}`, + () => `type __VLS_PrettifyLocal = { [K in keyof T]: T[K]; } & {}${endOfLine}`, ); const WithSlots = defineHelper( `__VLS_WithSlots`, From 98364996dfaccfd1f863a08d0acf441812edc666 Mon Sep 17 00:00:00 2001 From: so1ve Date: Fri, 26 Sep 2025 11:19:39 +0800 Subject: [PATCH 3/3] fix --- packages/language-core/lib/codegen/globalTypes.ts | 2 +- packages/language-core/lib/codegen/localTypes.ts | 3 ++- packages/tsc/tests/__snapshots__/dts.spec.ts.snap | 12 ++++++++---- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/language-core/lib/codegen/globalTypes.ts b/packages/language-core/lib/codegen/globalTypes.ts index df60a90882..7dd3b48c6b 100644 --- a/packages/language-core/lib/codegen/globalTypes.ts +++ b/packages/language-core/lib/codegen/globalTypes.ts @@ -134,7 +134,7 @@ export function generateGlobalTypes(options: VueCompilerOptions) { type __VLS_ResolveDirectives = { [K in keyof T & string as \`v\${Capitalize}\`]: T[K]; }; - type __VLS_PrettifyGlobal = { [K in keyof T]: T[K]; } & {}; + type __VLS_PrettifyGlobal = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {}; type __VLS_WithDefaultsGlobal = { [K in keyof P as K extends keyof D ? K : never]-?: P[K]; } & { diff --git a/packages/language-core/lib/codegen/localTypes.ts b/packages/language-core/lib/codegen/localTypes.ts index dc1b2e2fc7..8e212cd2c7 100644 --- a/packages/language-core/lib/codegen/localTypes.ts +++ b/packages/language-core/lib/codegen/localTypes.ts @@ -17,7 +17,8 @@ type __VLS_WithDefaultsLocal = { ); const PrettifyLocal = defineHelper( `__VLS_PrettifyLocal`, - () => `type __VLS_PrettifyLocal = { [K in keyof T]: T[K]; } & {}${endOfLine}`, + () => + `type __VLS_PrettifyLocal = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {}${endOfLine}`, ); const WithSlots = defineHelper( `__VLS_WithSlots`, diff --git a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap index 3061be7155..9e66bd021a 100644 --- a/packages/tsc/tests/__snapshots__/dts.spec.ts.snap +++ b/packages/tsc/tests/__snapshots__/dts.spec.ts.snap @@ -79,9 +79,11 @@ exports[`vue-tsc-dts > Input: generic/component.vue, Output: generic/component.v }; declare const _default: typeof __VLS_export; export default _default; -type __VLS_PrettifyLocal = { +type __VLS_PrettifyLocal = (T extends any ? { + [K in keyof T]: T[K]; +} : { [K in keyof T as K]: T[K]; -} & {}; +}) & {}; " `; @@ -110,9 +112,11 @@ exports[`vue-tsc-dts > Input: generic/custom-extension-component.cext, Output: g }; declare const _default: typeof __VLS_export; export default _default; -type __VLS_PrettifyLocal = { +type __VLS_PrettifyLocal = (T extends any ? { + [K in keyof T]: T[K]; +} : { [K in keyof T as K]: T[K]; -} & {}; +}) & {}; " `;