From f9c3c20caa1ddbb4d38aa9e88f26ac9b84645d0c Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Sat, 28 Jan 2023 16:10:34 +0800 Subject: [PATCH 1/7] fix: add useOriginalName option --- src/ast/nodes/Identifier.ts | 4 ++-- src/ast/nodes/StaticBlock.ts | 9 +++++++++ src/ast/variables/Variable.ts | 8 ++++++-- src/utils/renderHelpers.ts | 1 + 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/ast/nodes/Identifier.ts b/src/ast/nodes/Identifier.ts index 2fd56ba5c97..b587e4bbf75 100644 --- a/src/ast/nodes/Identifier.ts +++ b/src/ast/nodes/Identifier.ts @@ -244,11 +244,11 @@ export default class Identifier extends NodeBase implements PatternNode { render( code: MagicString, - { snippets: { getPropertyAccess } }: RenderOptions, + { snippets: { getPropertyAccess }, useOriginalName }: RenderOptions, { renderedParentType, isCalleeOfRenderedParent, isShorthandProperty }: NodeRenderOptions = BLANK ): void { if (this.variable) { - const name = this.variable.getName(getPropertyAccess); + const name = this.variable.getName(getPropertyAccess, useOriginalName); if (name !== this.name) { code.overwrite(this.start, this.end, name, { diff --git a/src/ast/nodes/StaticBlock.ts b/src/ast/nodes/StaticBlock.ts index 1d194f1ac99..9c3d018308e 100644 --- a/src/ast/nodes/StaticBlock.ts +++ b/src/ast/nodes/StaticBlock.ts @@ -3,7 +3,10 @@ import { type RenderOptions, renderStatementList } from '../../utils/renderHelpe import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; import type Scope from '../scopes/Scope'; +import type Variable from '../variables/Variable'; +import type ClassBody from './ClassBody'; import type * as NodeType from './NodeType'; +import type ClassNode from './shared/ClassNode'; import { type IncludeChildren, StatementBase, type StatementNode } from './shared/Node'; export default class StaticBlock extends StatementBase { @@ -30,6 +33,12 @@ export default class StaticBlock extends StatementBase { } render(code: MagicString, options: RenderOptions): void { + const classVariable = ((this.parent as ClassBody).parent as ClassNode).id!.variable; + const useOriginalName = (variable: Variable) => variable === classVariable; + options = { + ...options, + useOriginalName + }; if (this.body.length > 0) { renderStatementList(this.body, code, this.start + 1, this.end - 1, options); } else { diff --git a/src/ast/variables/Variable.ts b/src/ast/variables/Variable.ts index 28f18a6e84a..37a9ca93270 100644 --- a/src/ast/variables/Variable.ts +++ b/src/ast/variables/Variable.ts @@ -1,5 +1,6 @@ import type ExternalModule from '../../ExternalModule'; import type Module from '../../Module'; +import type { RenderOptions } from '../../utils/renderHelpers'; import type { HasEffectsContext } from '../ExecutionContext'; import type { NodeInteraction } from '../NodeInteractions'; import { INTERACTION_ACCESSED } from '../NodeInteractions'; @@ -42,8 +43,11 @@ export default class Variable extends ExpressionEntity { return this.renderBaseName || this.renderName || this.name; } - getName(getPropertyAccess: (name: string) => string): string { - const name = this.renderName || this.name; + getName( + getPropertyAccess: (name: string) => string, + useOriginalName?: RenderOptions['useOriginalName'] + ): string { + const name = useOriginalName?.(this) ? this.name : this.renderName || this.name; return this.renderBaseName ? `${this.renderBaseName}${getPropertyAccess(name)}` : name; } diff --git a/src/utils/renderHelpers.ts b/src/utils/renderHelpers.ts index 48c8a441aed..57e0aba9afc 100644 --- a/src/utils/renderHelpers.ts +++ b/src/utils/renderHelpers.ts @@ -15,6 +15,7 @@ export interface RenderOptions { namespaceToStringTag: boolean; pluginDriver: PluginDriver; snippets: GenerateCodeSnippets; + useOriginalName?: (variable: Variable) => boolean; } export interface NodeRenderOptions { From 99d8310f2f5b11d9b50d3d61ab0d5a33da82dde2 Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Sat, 28 Jan 2023 16:37:02 +0800 Subject: [PATCH 2/7] test: add test --- .../use-class-name-in-static-block/_config.js | 4 +++ .../_expected/amd.js | 20 +++++++++++++++ .../_expected/cjs.js | 18 +++++++++++++ .../_expected/es.js | 16 ++++++++++++ .../_expected/iife.js | 21 ++++++++++++++++ .../_expected/system.js | 25 +++++++++++++++++++ .../_expected/umd.js | 23 +++++++++++++++++ .../use-class-name-in-static-block/main.js | 5 ++++ .../use-class-name-in-static-block/test1.js | 6 +++++ .../use-class-name-in-static-block/test2.js | 6 +++++ .../use-class-name-in-static-block/_config.js | 3 +++ .../use-class-name-in-static-block/main.js | 5 ++++ .../use-class-name-in-static-block/test1.js | 6 +++++ .../use-class-name-in-static-block/test2.js | 6 +++++ 14 files changed, 164 insertions(+) create mode 100644 test/form/samples/use-class-name-in-static-block/_config.js create mode 100644 test/form/samples/use-class-name-in-static-block/_expected/amd.js create mode 100644 test/form/samples/use-class-name-in-static-block/_expected/cjs.js create mode 100644 test/form/samples/use-class-name-in-static-block/_expected/es.js create mode 100644 test/form/samples/use-class-name-in-static-block/_expected/iife.js create mode 100644 test/form/samples/use-class-name-in-static-block/_expected/system.js create mode 100644 test/form/samples/use-class-name-in-static-block/_expected/umd.js create mode 100644 test/form/samples/use-class-name-in-static-block/main.js create mode 100644 test/form/samples/use-class-name-in-static-block/test1.js create mode 100644 test/form/samples/use-class-name-in-static-block/test2.js create mode 100644 test/function/samples/use-class-name-in-static-block/_config.js create mode 100644 test/function/samples/use-class-name-in-static-block/main.js create mode 100644 test/function/samples/use-class-name-in-static-block/test1.js create mode 100644 test/function/samples/use-class-name-in-static-block/test2.js diff --git a/test/form/samples/use-class-name-in-static-block/_config.js b/test/form/samples/use-class-name-in-static-block/_config.js new file mode 100644 index 00000000000..5d0ecb555f6 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/_config.js @@ -0,0 +1,4 @@ +module.exports = { + description: 'use class name instead of renderName in static block', + solo: true +}; diff --git a/test/form/samples/use-class-name-in-static-block/_expected/amd.js b/test/form/samples/use-class-name-in-static-block/_expected/amd.js new file mode 100644 index 00000000000..9b40f7742a5 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/_expected/amd.js @@ -0,0 +1,20 @@ +define((function () { 'use strict'; + + let Test$1 = class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } + }; + + class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } + } + + assert.ok(Test$1.test); + assert.ok(Test.test); + +})); diff --git a/test/form/samples/use-class-name-in-static-block/_expected/cjs.js b/test/form/samples/use-class-name-in-static-block/_expected/cjs.js new file mode 100644 index 00000000000..a71c4502c44 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/_expected/cjs.js @@ -0,0 +1,18 @@ +'use strict'; + +let Test$1 = class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } +}; + +class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } +} + +assert.ok(Test$1.test); +assert.ok(Test.test); diff --git a/test/form/samples/use-class-name-in-static-block/_expected/es.js b/test/form/samples/use-class-name-in-static-block/_expected/es.js new file mode 100644 index 00000000000..15db26a34e6 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/_expected/es.js @@ -0,0 +1,16 @@ +let Test$1 = class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } +}; + +class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } +} + +assert.ok(Test$1.test); +assert.ok(Test.test); diff --git a/test/form/samples/use-class-name-in-static-block/_expected/iife.js b/test/form/samples/use-class-name-in-static-block/_expected/iife.js new file mode 100644 index 00000000000..ace45cc8079 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/_expected/iife.js @@ -0,0 +1,21 @@ +(function () { + 'use strict'; + + let Test$1 = class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } + }; + + class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } + } + + assert.ok(Test$1.test); + assert.ok(Test.test); + +})(); diff --git a/test/form/samples/use-class-name-in-static-block/_expected/system.js b/test/form/samples/use-class-name-in-static-block/_expected/system.js new file mode 100644 index 00000000000..fb507d238f7 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/_expected/system.js @@ -0,0 +1,25 @@ +System.register([], (function () { + 'use strict'; + return { + execute: (function () { + + let Test$1 = class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } + }; + + class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } + } + + assert.ok(Test$1.test); + assert.ok(Test.test); + + }) + }; +})); diff --git a/test/form/samples/use-class-name-in-static-block/_expected/umd.js b/test/form/samples/use-class-name-in-static-block/_expected/umd.js new file mode 100644 index 00000000000..ee85ee6943d --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/_expected/umd.js @@ -0,0 +1,23 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +})((function () { 'use strict'; + + let Test$1 = class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } + }; + + class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } + } + + assert.ok(Test$1.test); + assert.ok(Test.test); + +})); diff --git a/test/form/samples/use-class-name-in-static-block/main.js b/test/form/samples/use-class-name-in-static-block/main.js new file mode 100644 index 00000000000..27ceb8b9400 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/main.js @@ -0,0 +1,5 @@ +import { Test } from './test1.js'; +import { Test as Test2 } from './test2.js'; + +assert.ok(Test.test); +assert.ok(Test2.test); diff --git a/test/form/samples/use-class-name-in-static-block/test1.js b/test/form/samples/use-class-name-in-static-block/test1.js new file mode 100644 index 00000000000..0a70c826b2b --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/test1.js @@ -0,0 +1,6 @@ +export class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } +} diff --git a/test/form/samples/use-class-name-in-static-block/test2.js b/test/form/samples/use-class-name-in-static-block/test2.js new file mode 100644 index 00000000000..67b14ef29e2 --- /dev/null +++ b/test/form/samples/use-class-name-in-static-block/test2.js @@ -0,0 +1,6 @@ +export class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } +} diff --git a/test/function/samples/use-class-name-in-static-block/_config.js b/test/function/samples/use-class-name-in-static-block/_config.js new file mode 100644 index 00000000000..8426f2695a3 --- /dev/null +++ b/test/function/samples/use-class-name-in-static-block/_config.js @@ -0,0 +1,3 @@ +module.exports = { + description: 'use class name instead of renderName in static block' +}; diff --git a/test/function/samples/use-class-name-in-static-block/main.js b/test/function/samples/use-class-name-in-static-block/main.js new file mode 100644 index 00000000000..27ceb8b9400 --- /dev/null +++ b/test/function/samples/use-class-name-in-static-block/main.js @@ -0,0 +1,5 @@ +import { Test } from './test1.js'; +import { Test as Test2 } from './test2.js'; + +assert.ok(Test.test); +assert.ok(Test2.test); diff --git a/test/function/samples/use-class-name-in-static-block/test1.js b/test/function/samples/use-class-name-in-static-block/test1.js new file mode 100644 index 00000000000..0a70c826b2b --- /dev/null +++ b/test/function/samples/use-class-name-in-static-block/test1.js @@ -0,0 +1,6 @@ +export class Test { + static test = 'Test1'; + static { + assert.ok(Test.test); + } +} diff --git a/test/function/samples/use-class-name-in-static-block/test2.js b/test/function/samples/use-class-name-in-static-block/test2.js new file mode 100644 index 00000000000..67b14ef29e2 --- /dev/null +++ b/test/function/samples/use-class-name-in-static-block/test2.js @@ -0,0 +1,6 @@ +export class Test { + static test = 'Test2'; + static { + assert.ok(Test.test); + } +} From 55154ccb4fb0ea1f90cf630a4bee588bd0ddeba9 Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Mon, 30 Jan 2023 18:49:42 +0800 Subject: [PATCH 3/7] test: remove solo --- test/form/samples/use-class-name-in-static-block/_config.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/form/samples/use-class-name-in-static-block/_config.js b/test/form/samples/use-class-name-in-static-block/_config.js index 5d0ecb555f6..8426f2695a3 100644 --- a/test/form/samples/use-class-name-in-static-block/_config.js +++ b/test/form/samples/use-class-name-in-static-block/_config.js @@ -1,4 +1,3 @@ module.exports = { - description: 'use class name instead of renderName in static block', - solo: true + description: 'use class name instead of renderName in static block' }; From f5682eb4cdc1e56bdc4e7c1306c35dc85d9fdd90 Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Mon, 30 Jan 2023 20:57:38 +0800 Subject: [PATCH 4/7] test: set minNodeVersion --- .../function/samples/use-class-name-in-static-block/_config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/function/samples/use-class-name-in-static-block/_config.js b/test/function/samples/use-class-name-in-static-block/_config.js index 8426f2695a3..68da88da033 100644 --- a/test/function/samples/use-class-name-in-static-block/_config.js +++ b/test/function/samples/use-class-name-in-static-block/_config.js @@ -1,3 +1,4 @@ module.exports = { - description: 'use class name instead of renderName in static block' + description: 'use class name instead of renderName in static block', + minNodeVersion: '16.11.0' }; From 9f5dc2b94f54e352c2393095525089ac318b51d9 Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Mon, 30 Jan 2023 21:34:50 +0800 Subject: [PATCH 5/7] refactor: override useOriginalName in ClassDeclaration --- src/Chunk.ts | 3 ++- src/ast/nodes/ClassDeclaration.ts | 6 +++++- src/ast/nodes/StaticBlock.ts | 9 --------- src/utils/renderHelpers.ts | 2 +- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/Chunk.ts b/src/Chunk.ts index f8bc57eb62d..2ef889da1f6 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -1164,7 +1164,8 @@ export default class Chunk { indent, namespaceToStringTag, pluginDriver, - snippets + snippets, + useOriginalName: null }; let usesTopLevelAwait = false; diff --git a/src/ast/nodes/ClassDeclaration.ts b/src/ast/nodes/ClassDeclaration.ts index 093f91d2f6d..b2f1186041c 100644 --- a/src/ast/nodes/ClassDeclaration.ts +++ b/src/ast/nodes/ClassDeclaration.ts @@ -2,6 +2,7 @@ import type MagicString from 'magic-string'; import type { RenderOptions } from '../../utils/renderHelpers'; import { getSystemExportStatement } from '../../utils/systemJsRendering'; import type ChildScope from '../scopes/ChildScope'; +import type Variable from '../variables/Variable'; import Identifier, { type IdentifierWithVariable } from './Identifier'; import type * as NodeType from './NodeType'; import ClassNode from './shared/ClassNode'; @@ -43,7 +44,10 @@ export default class ClassDeclaration extends ClassNode { const renderedVariable = variable.getName(getPropertyAccess); if (renderedVariable !== name) { this.superClass?.render(code, options); - this.body.render(code, options); + this.body.render(code, { + ...options, + useOriginalName: (_variable: Variable) => _variable === variable + }); code.prependRight(this.start, `let ${renderedVariable}${_}=${_}`); code.prependLeft(this.end, ';'); return; diff --git a/src/ast/nodes/StaticBlock.ts b/src/ast/nodes/StaticBlock.ts index 9c3d018308e..1d194f1ac99 100644 --- a/src/ast/nodes/StaticBlock.ts +++ b/src/ast/nodes/StaticBlock.ts @@ -3,10 +3,7 @@ import { type RenderOptions, renderStatementList } from '../../utils/renderHelpe import type { HasEffectsContext, InclusionContext } from '../ExecutionContext'; import BlockScope from '../scopes/BlockScope'; import type Scope from '../scopes/Scope'; -import type Variable from '../variables/Variable'; -import type ClassBody from './ClassBody'; import type * as NodeType from './NodeType'; -import type ClassNode from './shared/ClassNode'; import { type IncludeChildren, StatementBase, type StatementNode } from './shared/Node'; export default class StaticBlock extends StatementBase { @@ -33,12 +30,6 @@ export default class StaticBlock extends StatementBase { } render(code: MagicString, options: RenderOptions): void { - const classVariable = ((this.parent as ClassBody).parent as ClassNode).id!.variable; - const useOriginalName = (variable: Variable) => variable === classVariable; - options = { - ...options, - useOriginalName - }; if (this.body.length > 0) { renderStatementList(this.body, code, this.start + 1, this.end - 1, options); } else { diff --git a/src/utils/renderHelpers.ts b/src/utils/renderHelpers.ts index 57e0aba9afc..c3e3b080841 100644 --- a/src/utils/renderHelpers.ts +++ b/src/utils/renderHelpers.ts @@ -15,7 +15,7 @@ export interface RenderOptions { namespaceToStringTag: boolean; pluginDriver: PluginDriver; snippets: GenerateCodeSnippets; - useOriginalName?: (variable: Variable) => boolean; + useOriginalName: ((variable: Variable) => boolean) | null; } export interface NodeRenderOptions { From 27848416873e3a50b3118641a3d0ed18dfecd8c1 Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Mon, 30 Jan 2023 21:40:42 +0800 Subject: [PATCH 6/7] test: add more cases --- .../_expected/amd.js | 16 ++++++++++++++++ .../_expected/cjs.js | 16 ++++++++++++++++ .../_expected/es.js | 16 ++++++++++++++++ .../_expected/iife.js | 16 ++++++++++++++++ .../_expected/system.js | 16 ++++++++++++++++ .../_expected/umd.js | 16 ++++++++++++++++ .../use-class-name-in-static-block/test1.js | 8 ++++++++ .../use-class-name-in-static-block/test2.js | 8 ++++++++ .../use-class-name-in-static-block/_config.js | 2 +- .../use-class-name-in-static-block/test1.js | 8 ++++++++ .../use-class-name-in-static-block/test2.js | 8 ++++++++ 11 files changed, 129 insertions(+), 1 deletion(-) diff --git a/test/form/samples/use-class-name-in-static-block/_expected/amd.js b/test/form/samples/use-class-name-in-static-block/_expected/amd.js index 9b40f7742a5..b42174f3455 100644 --- a/test/form/samples/use-class-name-in-static-block/_expected/amd.js +++ b/test/form/samples/use-class-name-in-static-block/_expected/amd.js @@ -1,16 +1,32 @@ define((function () { 'use strict'; let Test$1 = class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } }; class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/form/samples/use-class-name-in-static-block/_expected/cjs.js b/test/form/samples/use-class-name-in-static-block/_expected/cjs.js index a71c4502c44..764d68ec68a 100644 --- a/test/form/samples/use-class-name-in-static-block/_expected/cjs.js +++ b/test/form/samples/use-class-name-in-static-block/_expected/cjs.js @@ -1,16 +1,32 @@ 'use strict'; let Test$1 = class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } }; class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/form/samples/use-class-name-in-static-block/_expected/es.js b/test/form/samples/use-class-name-in-static-block/_expected/es.js index 15db26a34e6..eddebce6e34 100644 --- a/test/form/samples/use-class-name-in-static-block/_expected/es.js +++ b/test/form/samples/use-class-name-in-static-block/_expected/es.js @@ -1,14 +1,30 @@ let Test$1 = class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } }; class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/form/samples/use-class-name-in-static-block/_expected/iife.js b/test/form/samples/use-class-name-in-static-block/_expected/iife.js index ace45cc8079..0b0a9b0c0aa 100644 --- a/test/form/samples/use-class-name-in-static-block/_expected/iife.js +++ b/test/form/samples/use-class-name-in-static-block/_expected/iife.js @@ -2,16 +2,32 @@ 'use strict'; let Test$1 = class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } }; class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/form/samples/use-class-name-in-static-block/_expected/system.js b/test/form/samples/use-class-name-in-static-block/_expected/system.js index fb507d238f7..a1bc68606c8 100644 --- a/test/form/samples/use-class-name-in-static-block/_expected/system.js +++ b/test/form/samples/use-class-name-in-static-block/_expected/system.js @@ -4,16 +4,32 @@ System.register([], (function () { execute: (function () { let Test$1 = class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } }; class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/form/samples/use-class-name-in-static-block/_expected/umd.js b/test/form/samples/use-class-name-in-static-block/_expected/umd.js index ee85ee6943d..d2b0377bf59 100644 --- a/test/form/samples/use-class-name-in-static-block/_expected/umd.js +++ b/test/form/samples/use-class-name-in-static-block/_expected/umd.js @@ -4,16 +4,32 @@ })((function () { 'use strict'; let Test$1 = class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } }; class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/form/samples/use-class-name-in-static-block/test1.js b/test/form/samples/use-class-name-in-static-block/test1.js index 0a70c826b2b..e6d964bb0e0 100644 --- a/test/form/samples/use-class-name-in-static-block/test1.js +++ b/test/form/samples/use-class-name-in-static-block/test1.js @@ -1,6 +1,14 @@ export class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/form/samples/use-class-name-in-static-block/test2.js b/test/form/samples/use-class-name-in-static-block/test2.js index 67b14ef29e2..0ac76f89d2c 100644 --- a/test/form/samples/use-class-name-in-static-block/test2.js +++ b/test/form/samples/use-class-name-in-static-block/test2.js @@ -1,6 +1,14 @@ export class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/function/samples/use-class-name-in-static-block/_config.js b/test/function/samples/use-class-name-in-static-block/_config.js index 68da88da033..ede63b1b3ea 100644 --- a/test/function/samples/use-class-name-in-static-block/_config.js +++ b/test/function/samples/use-class-name-in-static-block/_config.js @@ -1,4 +1,4 @@ module.exports = { description: 'use class name instead of renderName in static block', - minNodeVersion: '16.11.0' + minNodeVersion: 16 }; diff --git a/test/function/samples/use-class-name-in-static-block/test1.js b/test/function/samples/use-class-name-in-static-block/test1.js index 0a70c826b2b..e6d964bb0e0 100644 --- a/test/function/samples/use-class-name-in-static-block/test1.js +++ b/test/function/samples/use-class-name-in-static-block/test1.js @@ -1,6 +1,14 @@ export class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test1'; static { assert.ok(Test.test); + new Test(); } } diff --git a/test/function/samples/use-class-name-in-static-block/test2.js b/test/function/samples/use-class-name-in-static-block/test2.js index 67b14ef29e2..0ac76f89d2c 100644 --- a/test/function/samples/use-class-name-in-static-block/test2.js +++ b/test/function/samples/use-class-name-in-static-block/test2.js @@ -1,6 +1,14 @@ export class Test { + constructor() { + assert.ok(Test.test); + assert.ok(this.getText()); + } + getText() { + return Test.test; + } static test = 'Test2'; static { assert.ok(Test.test); + new Test(); } } From f8d67fc7d36e3ec7ac9af721507b0ed1e4393655 Mon Sep 17 00:00:00 2001 From: TrickyPi <530257315@qq.com> Date: Mon, 30 Jan 2023 21:58:02 +0800 Subject: [PATCH 7/7] test: tweak description --- test/form/samples/use-class-name-in-static-block/_config.js | 2 +- test/function/samples/use-class-name-in-static-block/_config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/form/samples/use-class-name-in-static-block/_config.js b/test/form/samples/use-class-name-in-static-block/_config.js index 8426f2695a3..1ca77cc9bb4 100644 --- a/test/form/samples/use-class-name-in-static-block/_config.js +++ b/test/form/samples/use-class-name-in-static-block/_config.js @@ -1,3 +1,3 @@ module.exports = { - description: 'use class name instead of renderName in static block' + description: 'use the original class name instead of renderName in class body' }; diff --git a/test/function/samples/use-class-name-in-static-block/_config.js b/test/function/samples/use-class-name-in-static-block/_config.js index ede63b1b3ea..53bc76e249c 100644 --- a/test/function/samples/use-class-name-in-static-block/_config.js +++ b/test/function/samples/use-class-name-in-static-block/_config.js @@ -1,4 +1,4 @@ module.exports = { - description: 'use class name instead of renderName in static block', + description: 'use the original class name instead of renderName in class body', minNodeVersion: 16 };