diff --git a/packages/compiler-core/__tests__/__snapshots__/parse.spec.ts.snap b/packages/compiler-core/__tests__/__snapshots__/parse.spec.ts.snap index d7ac9888a59..000cedaf86f 100644 --- a/packages/compiler-core/__tests__/__snapshots__/parse.spec.ts.snap +++ b/packages/compiler-core/__tests__/__snapshots__/parse.spec.ts.snap @@ -49,7 +49,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -119,7 +119,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -189,7 +189,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -259,7 +259,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -353,7 +353,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -498,7 +498,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -574,7 +574,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -650,7 +650,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -720,7 +720,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -790,7 +790,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -866,7 +866,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -960,7 +960,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1030,7 +1030,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1100,7 +1100,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1170,7 +1170,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1240,7 +1240,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1310,7 +1310,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1380,7 +1380,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1450,7 +1450,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1502,7 +1502,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1578,7 +1578,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1654,7 +1654,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1749,7 +1749,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1844,7 +1844,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -1939,7 +1939,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2050,7 +2050,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2161,7 +2161,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2272,7 +2272,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2383,7 +2383,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2494,7 +2494,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2605,7 +2605,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2716,7 +2716,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2827,7 +2827,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2897,7 +2897,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -2943,7 +2943,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3013,7 +3013,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3083,7 +3083,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3153,7 +3153,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3223,7 +3223,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3293,7 +3293,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3381,7 +3381,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3451,7 +3451,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3538,7 +3538,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3649,7 +3649,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3744,7 +3744,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3839,7 +3839,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -3891,7 +3891,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4038,7 +4038,7 @@ class=\\"bar\\">", "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4184,7 +4184,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4254,7 +4254,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4324,7 +4324,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4394,7 +4394,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4464,7 +4464,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4534,7 +4534,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4645,7 +4645,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4756,7 +4756,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4867,7 +4867,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -4978,7 +4978,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5089,7 +5089,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5200,7 +5200,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5311,7 +5311,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5422,7 +5422,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5517,7 +5517,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5628,7 +5628,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5698,7 +5698,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5811,7 +5811,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5881,7 +5881,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -5951,7 +5951,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6003,7 +6003,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6055,7 +6055,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6143,7 +6143,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6213,7 +6213,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6322,7 +6322,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6398,7 +6398,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6474,7 +6474,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6520,7 +6520,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6566,7 +6566,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6630,7 +6630,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6709,7 +6709,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -6901,7 +6901,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { @@ -7112,7 +7112,7 @@ Object { "codegenNode": undefined, "components": Array [], "directives": Array [], - "helpers": Array [], + "helpers": Set {}, "hoists": Array [], "imports": Array [], "loc": Object { diff --git a/packages/compiler-core/__tests__/codegen.spec.ts b/packages/compiler-core/__tests__/codegen.spec.ts index b51ca132836..e300580c045 100644 --- a/packages/compiler-core/__tests__/codegen.spec.ts +++ b/packages/compiler-core/__tests__/codegen.spec.ts @@ -41,7 +41,7 @@ function createRoot(options: Partial = {}): RootNode { return { type: NodeTypes.ROOT, children: [], - helpers: [], + helpers: new Set(), components: [], directives: [], imports: [], @@ -57,7 +57,7 @@ function createRoot(options: Partial = {}): RootNode { describe('compiler: codegen', () => { test('module mode preamble', () => { const root = createRoot({ - helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE] + helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE]) }) const { code } = generate(root, { mode: 'module' }) expect(code).toMatch( @@ -68,7 +68,7 @@ describe('compiler: codegen', () => { test('module mode preamble w/ optimizeImports: true', () => { const root = createRoot({ - helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE] + helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE]) }) const { code } = generate(root, { mode: 'module', optimizeImports: true }) expect(code).toMatch( @@ -82,7 +82,7 @@ describe('compiler: codegen', () => { test('function mode preamble', () => { const root = createRoot({ - helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE] + helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE]) }) const { code } = generate(root, { mode: 'function' }) expect(code).toMatch(`const _Vue = Vue`) @@ -94,7 +94,7 @@ describe('compiler: codegen', () => { test('function mode preamble w/ prefixIdentifiers: true', () => { const root = createRoot({ - helpers: [CREATE_VNODE, RESOLVE_DIRECTIVE] + helpers: new Set([CREATE_VNODE, RESOLVE_DIRECTIVE]) }) const { code } = generate(root, { mode: 'function', diff --git a/packages/compiler-core/src/ast.ts b/packages/compiler-core/src/ast.ts index d6eda73bbbe..457a9057633 100644 --- a/packages/compiler-core/src/ast.ts +++ b/packages/compiler-core/src/ast.ts @@ -100,7 +100,7 @@ export type TemplateChildNode = export interface RootNode extends Node { type: NodeTypes.ROOT children: TemplateChildNode[] - helpers: symbol[] + helpers: Set components: string[] directives: string[] hoists: (JSChildNode | null)[] @@ -556,7 +556,7 @@ export function createRoot( return { type: NodeTypes.ROOT, children, - helpers: [], + helpers: new Set(), components: [], directives: [], hoists: [], diff --git a/packages/compiler-core/src/codegen.ts b/packages/compiler-core/src/codegen.ts index 9d715149b99..dce58737735 100644 --- a/packages/compiler-core/src/codegen.ts +++ b/packages/compiler-core/src/codegen.ts @@ -208,7 +208,8 @@ export function generate( ssr } = context - const hasHelpers = ast.helpers.length > 0 + const helpers = Array.from(ast.helpers) + const hasHelpers = helpers.length > 0 const useWithBlock = !prefixIdentifiers && mode !== 'module' const genScopeId = !__BROWSER__ && scopeId != null && mode === 'module' const isSetupInlined = !__BROWSER__ && !!options.inline @@ -249,7 +250,7 @@ export function generate( // function mode const declarations should be inside with block // also they should be renamed to avoid collision with user properties if (hasHelpers) { - push(`const { ${ast.helpers.map(aliasHelper).join(', ')} } = _Vue`) + push(`const { ${helpers.map(aliasHelper).join(', ')} } = _Vue`) push(`\n`) newline() } @@ -330,11 +331,10 @@ function genFunctionPreamble(ast: RootNode, context: CodegenContext) { // In prefix mode, we place the const declaration at top so it's done // only once; But if we not prefixing, we place the declaration inside the // with block so it doesn't incur the `in` check cost for every helper access. - if (ast.helpers.length > 0) { + const helpers = Array.from(ast.helpers) + if (helpers.length > 0) { if (!__BROWSER__ && prefixIdentifiers) { - push( - `const { ${ast.helpers.map(aliasHelper).join(', ')} } = ${VueBinding}\n` - ) + push(`const { ${helpers.map(aliasHelper).join(', ')} } = ${VueBinding}\n`) } else { // "with" mode. // save Vue in a separate variable to avoid collision @@ -350,7 +350,7 @@ function genFunctionPreamble(ast: RootNode, context: CodegenContext) { CREATE_TEXT, CREATE_STATIC ] - .filter(helper => ast.helpers.includes(helper)) + .filter(helper => helpers.includes(helper)) .map(aliasHelper) .join(', ') push(`const { ${staticHelpers} } = _Vue\n`) @@ -386,11 +386,13 @@ function genModulePreamble( } = context if (genScopeId && ast.hoists.length) { - ast.helpers.push(PUSH_SCOPE_ID, POP_SCOPE_ID) + ast.helpers.add(PUSH_SCOPE_ID) + ast.helpers.add(POP_SCOPE_ID) } // generate import statements for helpers - if (ast.helpers.length) { + if (ast.helpers.size) { + const helpers = Array.from(ast.helpers) if (optimizeImports) { // when bundled with webpack with code-split, calling an import binding // as a function leads to it being wrapped with `Object(a.b)` or `(0,a.b)`, @@ -398,18 +400,18 @@ function genModulePreamble( // therefore we assign the imports to variables (which is a constant ~50b // cost per-component instead of scaling with template size) push( - `import { ${ast.helpers + `import { ${helpers .map(s => helperNameMap[s]) .join(', ')} } from ${JSON.stringify(runtimeModuleName)}\n` ) push( - `\n// Binding optimization for webpack code-split\nconst ${ast.helpers + `\n// Binding optimization for webpack code-split\nconst ${helpers .map(s => `_${helperNameMap[s]} = ${helperNameMap[s]}`) .join(', ')}\n` ) } else { push( - `import { ${ast.helpers + `import { ${helpers .map(s => `${helperNameMap[s]} as _${helperNameMap[s]}`) .join(', ')} } from ${JSON.stringify(runtimeModuleName)}\n` ) diff --git a/packages/compiler-core/src/transform.ts b/packages/compiler-core/src/transform.ts index 6397df92f3c..3cb3e6bf01f 100644 --- a/packages/compiler-core/src/transform.ts +++ b/packages/compiler-core/src/transform.ts @@ -324,7 +324,7 @@ export function transform(root: RootNode, options: TransformOptions) { createRootCodegen(root, context) } // finalize meta information - root.helpers = [...context.helpers.keys()] + root.helpers = new Set([...context.helpers.keys()]) root.components = [...context.components] root.directives = [...context.directives] root.imports = context.imports diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index 60fafdd44b3..57f605a33e9 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -1554,7 +1554,7 @@ export function compileScript( // avoid duplicated unref import // as this may get injected by the render function preamble OR the // css vars codegen - if (ast && ast.helpers.includes(UNREF)) { + if (ast && ast.helpers.has(UNREF)) { helperImports.delete('unref') } returned = code diff --git a/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts b/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts index 97df3045c67..0e29fb7e445 100644 --- a/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts +++ b/packages/compiler-ssr/__tests__/ssrInjectCssVars.spec.ts @@ -127,10 +127,10 @@ describe('ssr: inject