From 4062c6805a0dbdb585bdc4ea0cc05e92b6c92e85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E6=99=BA=E5=AD=90=20Kevin=20Deng?= Date: Wed, 31 Jan 2024 17:37:54 +0800 Subject: [PATCH] refactor(compiler-vapor): remove loc in IR --- packages/compiler-vapor/src/ir.ts | 2 -- packages/compiler-vapor/src/transform.ts | 32 ++++++++----------- .../src/transforms/transformElement.ts | 3 +- .../src/transforms/transformInterpolation.ts | 3 -- .../src/transforms/transformRef.ts | 1 - .../compiler-vapor/src/transforms/vBind.ts | 1 - .../compiler-vapor/src/transforms/vFor.ts | 2 -- .../compiler-vapor/src/transforms/vHtml.ts | 1 - packages/compiler-vapor/src/transforms/vIf.ts | 3 -- .../compiler-vapor/src/transforms/vModel.ts | 4 +-- packages/compiler-vapor/src/transforms/vOn.ts | 1 - .../compiler-vapor/src/transforms/vShow.ts | 1 - .../compiler-vapor/src/transforms/vText.ts | 1 - 13 files changed, 15 insertions(+), 40 deletions(-) diff --git a/packages/compiler-vapor/src/ir.ts b/packages/compiler-vapor/src/ir.ts index 6962a1fff..a2f2f2f7c 100644 --- a/packages/compiler-vapor/src/ir.ts +++ b/packages/compiler-vapor/src/ir.ts @@ -4,7 +4,6 @@ import type { DirectiveNode, RootNode, SimpleExpressionNode, - SourceLocation, TemplateChildNode, } from '@vue/compiler-dom' import type { Prettify } from '@vue/shared' @@ -37,7 +36,6 @@ export enum IRNodeTypes { export interface BaseIRNode { type: IRNodeTypes - loc: SourceLocation } export type VaporHelper = keyof typeof import('@vue/runtime-vapor') diff --git a/packages/compiler-vapor/src/transform.ts b/packages/compiler-vapor/src/transform.ts index 00078f57c..3bd7ada2b 100644 --- a/packages/compiler-vapor/src/transform.ts +++ b/packages/compiler-vapor/src/transform.ts @@ -197,12 +197,10 @@ function createRootContext( templateNode = { type: IRNodeTypes.TEMPLATE_FACTORY, template: this.template, - loc: node.loc, } } else { templateNode = { type: IRNodeTypes.FRAGMENT_FACTORY, - loc: node.loc, } } root.template.push(templateNode) @@ -243,7 +241,6 @@ export function transform( type: IRNodeTypes.ROOT, node: root, source: root.source, - loc: root.loc, template: [], templateIndex: -1, dynamic: extend(genDefaultDynamic(), { @@ -327,34 +324,32 @@ function transformChildren(ctx: TransformContext) { processDynamicChildren(ctx) } -function processDynamicChildren(ctx: TransformContext) { - const { node } = ctx - +function processDynamicChildren( + context: TransformContext, +) { let prevChildren: IRDynamicInfo[] = [] let hasStatic = false - for (const [index, child] of ctx.dynamic.children.entries()) { + for (const [index, child] of context.dynamic.children.entries()) { if (!child || !(child.flags & DynamicFlag.INSERT)) { if (prevChildren.length) { if (hasStatic) { - ctx.childrenTemplate[index - prevChildren.length] = `` + context.childrenTemplate[index - prevChildren.length] = `` prevChildren[0].flags -= DynamicFlag.NON_TEMPLATE - const anchor = (prevChildren[0].anchor = ctx.increaseId()) + const anchor = (prevChildren[0].anchor = context.increaseId()) - ctx.registerOperation({ + context.registerOperation({ type: IRNodeTypes.INSERT_NODE, - loc: node.loc, element: prevChildren.map(child => child.id!), - parent: ctx.reference(), + parent: context.reference(), anchor, }) } else { - ctx.registerOperation({ + context.registerOperation({ type: IRNodeTypes.PREPEND_NODE, - loc: node.loc, elements: prevChildren.map(child => child.id!), - parent: ctx.reference(), + parent: context.reference(), }) } } @@ -365,12 +360,11 @@ function processDynamicChildren(ctx: TransformContext) { prevChildren.push(child) - if (index === ctx.dynamic.children.length - 1) { - ctx.registerOperation({ + if (index === context.dynamic.children.length - 1) { + context.registerOperation({ type: IRNodeTypes.APPEND_NODE, - loc: node.loc, elements: prevChildren.map(child => child.id!), - parent: ctx.reference(), + parent: context.reference(), }) } } diff --git a/packages/compiler-vapor/src/transforms/transformElement.ts b/packages/compiler-vapor/src/transforms/transformElement.ts index 1e519935c..aafda3735 100644 --- a/packages/compiler-vapor/src/transforms/transformElement.ts +++ b/packages/compiler-vapor/src/transforms/transformElement.ts @@ -59,7 +59,7 @@ function transformProp( node: ElementNode, context: TransformContext, ): void { - const { name, loc } = prop + const { name } = prop if (isReservedProp(name)) return if (prop.type === NodeTypes.ATTRIBUTE) { @@ -76,7 +76,6 @@ function transformProp( type: IRNodeTypes.WITH_DIRECTIVE, element: context.reference(), dir: prop, - loc, }) } } diff --git a/packages/compiler-vapor/src/transforms/transformInterpolation.ts b/packages/compiler-vapor/src/transforms/transformInterpolation.ts index 56a870ac1..255ff6763 100644 --- a/packages/compiler-vapor/src/transforms/transformInterpolation.ts +++ b/packages/compiler-vapor/src/transforms/transformInterpolation.ts @@ -19,7 +19,6 @@ export const transformInterpolation: NodeTransform = (node, ctx) => { [ { type: IRNodeTypes.SET_TEXT, - loc: node.loc, element: parentId, value: expr, }, @@ -30,7 +29,6 @@ export const transformInterpolation: NodeTransform = (node, ctx) => { ctx.dynamic.flags |= DynamicFlag.INSERT | DynamicFlag.NON_TEMPLATE ctx.registerOperation({ type: IRNodeTypes.CREATE_TEXT_NODE, - loc: node.loc, id, }) ctx.registerEffect( @@ -38,7 +36,6 @@ export const transformInterpolation: NodeTransform = (node, ctx) => { [ { type: IRNodeTypes.SET_TEXT, - loc: node.loc, element: id, value: expr, }, diff --git a/packages/compiler-vapor/src/transforms/transformRef.ts b/packages/compiler-vapor/src/transforms/transformRef.ts index 141b01fbb..d3e1976af 100644 --- a/packages/compiler-vapor/src/transforms/transformRef.ts +++ b/packages/compiler-vapor/src/transforms/transformRef.ts @@ -26,6 +26,5 @@ export const transformRef: NodeTransform = (node, context) => { type: IRNodeTypes.SET_REF, element: context.reference(), value, - loc: dir.loc, }) } diff --git a/packages/compiler-vapor/src/transforms/vBind.ts b/packages/compiler-vapor/src/transforms/vBind.ts index 344324721..128a67d80 100644 --- a/packages/compiler-vapor/src/transforms/vBind.ts +++ b/packages/compiler-vapor/src/transforms/vBind.ts @@ -51,7 +51,6 @@ export const transformVBind: DirectiveTransform = (dir, node, context) => { [ { type: IRNodeTypes.SET_PROP, - loc: dir.loc, element: context.reference(), key: arg, value: exp, diff --git a/packages/compiler-vapor/src/transforms/vFor.ts b/packages/compiler-vapor/src/transforms/vFor.ts index dd61405e3..a70f1ec81 100644 --- a/packages/compiler-vapor/src/transforms/vFor.ts +++ b/packages/compiler-vapor/src/transforms/vFor.ts @@ -50,7 +50,6 @@ export function processFor( const id = context.reference() const render: BlockFunctionIRNode = { type: IRNodeTypes.BLOCK_FUNCTION, - loc: node.loc, node, templateIndex: -1, dynamic: extend(genDefaultDynamic(), { @@ -69,7 +68,6 @@ export function processFor( context.registerOperation({ type: IRNodeTypes.FOR, id, - loc: dir.loc, source: source as SimpleExpressionNode, value: value as SimpleExpressionNode | undefined, key: key as SimpleExpressionNode | undefined, diff --git a/packages/compiler-vapor/src/transforms/vHtml.ts b/packages/compiler-vapor/src/transforms/vHtml.ts index f509c7196..8b851b498 100644 --- a/packages/compiler-vapor/src/transforms/vHtml.ts +++ b/packages/compiler-vapor/src/transforms/vHtml.ts @@ -21,7 +21,6 @@ export const transformVHtml: DirectiveTransform = (dir, node, context) => { [ { type: IRNodeTypes.SET_HTML, - loc: dir.loc, element: context.reference(), value: exp || '""', }, diff --git a/packages/compiler-vapor/src/transforms/vIf.ts b/packages/compiler-vapor/src/transforms/vIf.ts index 9c9731a81..ed70d8b7d 100644 --- a/packages/compiler-vapor/src/transforms/vIf.ts +++ b/packages/compiler-vapor/src/transforms/vIf.ts @@ -51,7 +51,6 @@ export function processIf( context.registerOperation({ type: IRNodeTypes.IF, id, - loc: dir.loc, condition: dir.exp!, positive: branch, }) @@ -130,7 +129,6 @@ export function processIf( lastIfNode.negative = { type: IRNodeTypes.IF, id: -1, - loc: dir.loc, condition: dir.exp!, positive: branch, } @@ -148,7 +146,6 @@ export function createIfBranch( const branch: BlockFunctionIRNode = { type: IRNodeTypes.BLOCK_FUNCTION, - loc: node.loc, node, templateIndex: -1, dynamic: extend(genDefaultDynamic(), { diff --git a/packages/compiler-vapor/src/transforms/vModel.ts b/packages/compiler-vapor/src/transforms/vModel.ts index a4fe26f9a..29bccaa32 100644 --- a/packages/compiler-vapor/src/transforms/vModel.ts +++ b/packages/compiler-vapor/src/transforms/vModel.ts @@ -16,7 +16,7 @@ import type { DirectiveTransform } from '../transform' import { IRNodeTypes, type VaporHelper } from '../ir' export const transformVModel: DirectiveTransform = (dir, node, context) => { - const { exp, arg, loc } = dir + const { exp, arg } = dir if (!exp) { context.options.onError( createCompilerError(ErrorCodes.X_V_MODEL_NO_EXPRESSION, dir.loc), @@ -140,7 +140,6 @@ export const transformVModel: DirectiveTransform = (dir, node, context) => { key: (arg && arg.isStatic ? arg.content : arg) || 'modelValue', value: exp, isComponent, - loc: loc, }) if (runtimeDirective) @@ -148,7 +147,6 @@ export const transformVModel: DirectiveTransform = (dir, node, context) => { type: IRNodeTypes.WITH_DIRECTIVE, element: context.reference(), dir, - loc, builtin: runtimeDirective, }) diff --git a/packages/compiler-vapor/src/transforms/vOn.ts b/packages/compiler-vapor/src/transforms/vOn.ts index f2545c602..c4017e27c 100644 --- a/packages/compiler-vapor/src/transforms/vOn.ts +++ b/packages/compiler-vapor/src/transforms/vOn.ts @@ -72,7 +72,6 @@ export const transformVOn: DirectiveTransform = (dir, node, context) => { const operation: SetEventIRNode = { type: IRNodeTypes.SET_EVENT, - loc, element: context.reference(), key: arg, value: exp, diff --git a/packages/compiler-vapor/src/transforms/vShow.ts b/packages/compiler-vapor/src/transforms/vShow.ts index 1604b27e7..7be355396 100644 --- a/packages/compiler-vapor/src/transforms/vShow.ts +++ b/packages/compiler-vapor/src/transforms/vShow.ts @@ -14,6 +14,5 @@ export const transformVShow: DirectiveTransform = (dir, node, context) => { type: IRNodeTypes.WITH_DIRECTIVE, element: context.reference(), dir, - loc, }) } diff --git a/packages/compiler-vapor/src/transforms/vText.ts b/packages/compiler-vapor/src/transforms/vText.ts index fbeb5cd5d..dfd2af392 100644 --- a/packages/compiler-vapor/src/transforms/vText.ts +++ b/packages/compiler-vapor/src/transforms/vText.ts @@ -21,7 +21,6 @@ export const transformVText: DirectiveTransform = (dir, node, context) => { [ { type: IRNodeTypes.SET_TEXT, - loc: dir.loc, element: context.reference(), value: exp || '""', },