From cdf00e6f19971260607ea2347924b94126a254fc Mon Sep 17 00:00:00 2001 From: KazariEX <1364035137@qq.com> Date: Sun, 2 Mar 2025 18:17:26 +0800 Subject: [PATCH 1/2] revert: #5214 --- .../lib/codegen/template/elementEvents.ts | 64 ++++--------------- .../tsc/passedFixtures/vue3/#4646/parent.vue | 2 +- .../tsc/passedFixtures/vue3/#4822/main.vue | 2 +- 3 files changed, 16 insertions(+), 52 deletions(-) diff --git a/packages/language-core/lib/codegen/template/elementEvents.ts b/packages/language-core/lib/codegen/template/elementEvents.ts index 32175ae2a5..9b7f72a6c5 100644 --- a/packages/language-core/lib/codegen/template/elementEvents.ts +++ b/packages/language-core/lib/codegen/template/elementEvents.ts @@ -24,10 +24,9 @@ export function* generateElementEvents( for (const prop of node.props) { if ( prop.type === CompilerDOM.NodeTypes.DIRECTIVE - && ( - prop.name === 'on' && (prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && prop.arg.isStatic) - || prop.name === 'model' && (!prop.arg || prop.arg.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION && prop.arg.isStatic) - ) + && prop.name === 'on' + && prop.arg?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION + && prop.arg.isStatic ) { ctx.currentComponent!.used = true; if (!emitVar) { @@ -38,33 +37,21 @@ export function* generateElementEvents( yield `let ${eventsVar}!: __VLS_NormalizeEmits${endOfLine}`; yield `let ${propsVar}!: __VLS_FunctionalComponentProps${endOfLine}`; } - - let source = prop.arg?.loc.source ?? 'model-value'; - let start = prop.arg?.loc.start.offset; - let propPrefix = 'on-'; + let source = prop.arg.loc.source; + let start = prop.arg.loc.start.offset; + let propPrefix = 'on'; let emitPrefix = ''; - if (prop.name === 'model') { - propPrefix = 'onUpdate:'; - emitPrefix = 'update:'; - } - else if (source.startsWith('vue:')) { + if (source.startsWith('vue:')) { source = source.slice('vue:'.length); - start = start! + 'vue:'.length; - propPrefix = 'onVnode-'; + start = start + 'vue:'.length; + propPrefix = 'onVnode'; emitPrefix = 'vnode-'; } - - yield `(): __VLS_NormalizeComponentEvent => ({${newLine}`; - if (prop.name === 'on') { - yield* generateEventArg(ctx, source, start!, propPrefix.slice(0, -1)); - yield `: `; - yield* generateEventExpression(options, ctx, prop); - } - else { - yield `'${camelize(propPrefix + source)}': `; - yield* generateModelEventExpression(options, ctx, prop); - } - yield `})${endOfLine}`; + yield `const ${ctx.getInternalVariable()}: __VLS_NormalizeComponentEvent = {${newLine}`; + yield* generateEventArg(ctx, source, start, propPrefix); + yield `: `; + yield* generateEventExpression(options, ctx, prop); + yield `}${endOfLine}`; } } } @@ -172,29 +159,6 @@ export function* generateEventExpression( } } -export function* generateModelEventExpression( - options: TemplateCodegenOptions, - ctx: TemplateCodegenContext, - prop: CompilerDOM.DirectiveNode -): Generator { - if (prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION) { - yield `(...[$event]) => (`; - yield* generateInterpolation( - options, - ctx, - 'template', - ctx.codeFeatures.verification, - prop.exp.content, - prop.exp.loc.start.offset, - prop.exp.loc - ); - yield ` = $event)`; - } - else { - yield `() => {}`; - } -} - export function isCompoundExpression(ts: typeof import('typescript'), ast: ts.SourceFile) { let result = true; if (ast.statements.length === 0) { diff --git a/test-workspace/tsc/passedFixtures/vue3/#4646/parent.vue b/test-workspace/tsc/passedFixtures/vue3/#4646/parent.vue index 38b59cfc7d..f42054647f 100644 --- a/test-workspace/tsc/passedFixtures/vue3/#4646/parent.vue +++ b/test-workspace/tsc/passedFixtures/vue3/#4646/parent.vue @@ -5,7 +5,7 @@ import child from './child.vue'; import child2 from './child2.vue'; const msg = ref('test'); -const other = ref('test2'); +const other = ref('test2');