diff --git a/packages/language-core/lib/codegen/template/context.ts b/packages/language-core/lib/codegen/template/context.ts index e332a1f8cb..9eafb8f00f 100644 --- a/packages/language-core/lib/codegen/template/context.ts +++ b/packages/language-core/lib/codegen/template/context.ts @@ -135,7 +135,6 @@ export function createTemplateCodegenContext( }[] = []; const emptyClassOffsets: number[] = []; const inlayHints: InlayHintInfo[] = []; - const bindingAttrLocs: CompilerDOM.SourceLocation[] = []; const inheritedAttrVars = new Set(); const templateRefs = new Map { const tagOffsets = getElementTagOffsets(node, options.template); - const failedPropExps: FailedPropExpression[] = []; + const failGeneratedExpressions: FailGeneratedExpression[] = []; const possibleOriginalNames = getPossibleOriginalComponentNames(node.tag, true); const matchImportName = possibleOriginalNames.find(name => options.scriptSetupImportComponentNames.has(name)); const componentOriginalVar = matchImportName ?? ctx.getInternalVariable(); @@ -204,7 +204,7 @@ export function* generateComponent( node, props, options.vueCompilerOptions.checkUnknownProps, - failedPropExps, + failGeneratedExpressions, )]; yield `// @ts-ignore${newLine}`; @@ -226,7 +226,7 @@ export function* generateComponent( yield endBoundary(token2, tagOffsets[0] + node.tag.length); yield `, ...__VLS_functionalComponentArgsRest(${componentFunctionalVar}))${endOfLine}`; - yield* generateFailedPropExps(options, ctx, failedPropExps); + yield* generateFailedExpressions(options, ctx, failGeneratedExpressions); yield* generateElementEvents( options, ctx, @@ -286,7 +286,7 @@ export function* generateElement( node: CompilerDOM.ElementNode, ): Generator { const [startTagOffset, endTagOffset] = getElementTagOffsets(node, options.template); - const failedPropExps: FailedPropExpression[] = []; + const failedPropExps: FailGeneratedExpression[] = []; yield `__VLS_asFunctionalElement(__VLS_intrinsics`; yield* generatePropertyAccess( @@ -321,7 +321,7 @@ export function* generateElement( yield endBoundary(token, startTagOffset + node.tag.length); yield `)${endOfLine}`; - yield* generateFailedPropExps(options, ctx, failedPropExps); + yield* generateFailedExpressions(options, ctx, failedPropExps); yield* generateElementDirectives(options, ctx, node); const reference = yield* generateElementReference(options, ctx, node); @@ -350,12 +350,12 @@ export function* generateElement( ctx.currentComponent = currentComponent; } -function* generateFailedPropExps( +function* generateFailedExpressions( options: TemplateCodegenOptions, ctx: TemplateCodegenContext, - failedPropExps: FailedPropExpression[], + failGeneratedExpressions: FailGeneratedExpression[], ): Generator { - for (const failedExp of failedPropExps) { + for (const failedExp of failGeneratedExpressions) { yield* generateInterpolation( options, ctx, diff --git a/packages/language-core/lib/codegen/template/elementProps.ts b/packages/language-core/lib/codegen/template/elementProps.ts index bc47d2eae0..607fea79c5 100644 --- a/packages/language-core/lib/codegen/template/elementProps.ts +++ b/packages/language-core/lib/codegen/template/elementProps.ts @@ -16,7 +16,7 @@ import type { TemplateCodegenOptions } from './index'; import { generateInterpolation } from './interpolation'; import { generateObjectProperty } from './objectProperty'; -export interface FailedPropExpression { +export interface FailGeneratedExpression { node: CompilerDOM.SimpleExpressionNode; prefix: string; suffix: string; @@ -28,7 +28,7 @@ export function* generateElementProps( node: CompilerDOM.ElementNode, props: CompilerDOM.ElementNode['props'], strictPropsCheck: boolean, - failedPropExps?: FailedPropExpression[], + failGeneratedExpressions?: FailGeneratedExpression[], ): Generator { const isComponent = node.tagType === CompilerDOM.ElementTypes.COMPONENT; @@ -60,14 +60,14 @@ export function* generateElementProps( && prop.arg.loc.source.startsWith('[') && prop.arg.loc.source.endsWith(']') ) { - failedPropExps?.push({ node: prop.arg, prefix: `(`, suffix: `)` }); - failedPropExps?.push({ node: prop.exp, prefix: `() => {`, suffix: `}` }); + failGeneratedExpressions?.push({ node: prop.arg, prefix: `(`, suffix: `)` }); + failGeneratedExpressions?.push({ node: prop.exp, prefix: `() => {`, suffix: `}` }); } else if ( !prop.arg && prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION ) { - failedPropExps?.push({ node: prop.exp, prefix: `(`, suffix: `)` }); + failGeneratedExpressions?.push({ node: prop.exp, prefix: `(`, suffix: `)` }); } } } @@ -97,7 +97,7 @@ export function* generateElementProps( || options.vueCompilerOptions.dataAttributes.some(pattern => isMatch(propName!, pattern)) ) { if (prop.exp && prop.exp.constType !== CompilerDOM.ConstantTypes.CAN_STRINGIFY) { - failedPropExps?.push({ node: prop.exp, prefix: `(`, suffix: `)` }); + failGeneratedExpressions?.push({ node: prop.exp, prefix: `(`, suffix: `)` }); } continue; } @@ -204,7 +204,7 @@ export function* generateElementProps( && prop.exp?.type === CompilerDOM.NodeTypes.SIMPLE_EXPRESSION ) { if (prop.exp.loc.source === '$attrs') { - ctx.bindingAttrLocs.push(prop.exp.loc); + failGeneratedExpressions?.push({ node: prop.exp, prefix: `(`, suffix: `)` }); } else { const token = yield* startBoundary('template', prop.exp.loc.start.offset, codeFeatures.verification); diff --git a/packages/language-core/lib/codegen/template/index.ts b/packages/language-core/lib/codegen/template/index.ts index 92d2dc8da8..d34145f4f7 100644 --- a/packages/language-core/lib/codegen/template/index.ts +++ b/packages/language-core/lib/codegen/template/index.ts @@ -141,20 +141,6 @@ function* generateInheritedAttrs( : `{}` }`; yield endOfLine; - if (ctx.bindingAttrLocs.length) { - yield `[`; - for (const loc of ctx.bindingAttrLocs) { - yield `__VLS_dollars.`; - yield [ - loc.source, - 'template', - loc.start.offset, - codeFeatures.all, - ]; - yield `,`; - } - yield `]${endOfLine}`; - } return `import('${options.vueCompilerOptions.lib}').ComponentPublicInstance['$attrs'] & __VLS_InheritedAttrs`; }