From b89974a127c7a986d309db675d95287a9ae75386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0=20/=20green?= Date: Sat, 16 Apr 2022 04:20:36 +0900 Subject: [PATCH] fix(ssr): rewrite dynamic class method name (fix #7751) (#7757) --- .../node/ssr/__tests__/ssrTransform.spec.ts | 39 +++++++++++++++++++ packages/vite/src/node/ssr/ssrTransform.ts | 2 +- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts b/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts index a5f915edea97fd..14481f98a4a87a 100644 --- a/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts +++ b/packages/vite/src/node/ssr/__tests__/ssrTransform.spec.ts @@ -545,6 +545,45 @@ class A { `) }) +test('class methods', async () => { + expect( + ( + await ssrTransform( + ` +import foo from 'foo' + +const bar = 'bar' + +class A { + foo() {} + [foo]() {} + [bar]() {} + #foo() {} + bar(foo) {} +} +`, + null, + null + ) + ).code + ).toMatchInlineSnapshot(` + " + const __vite_ssr_import_0__ = await __vite_ssr_import__(\\"foo\\"); + + + const bar = 'bar' + + class A { + foo() {} + [__vite_ssr_import_0__.default]() {} + [bar]() {} + #foo() {} + bar(foo) {} + } + " + `) +}) + test('declare scope', async () => { expect( ( diff --git a/packages/vite/src/node/ssr/ssrTransform.ts b/packages/vite/src/node/ssr/ssrTransform.ts index 79ccd25f9ca8ff..238482a0ceac2f 100644 --- a/packages/vite/src/node/ssr/ssrTransform.ts +++ b/packages/vite/src/node/ssr/ssrTransform.ts @@ -429,7 +429,7 @@ function isRefIdentifier(id: Identifier, parent: _Node, parentStack: _Node[]) { } // class method name - if (parent.type === 'MethodDefinition') { + if (parent.type === 'MethodDefinition' && !parent.computed) { return false }