diff --git a/packages/runtime-core/__tests__/rendererChildren.spec.ts b/packages/runtime-core/__tests__/rendererChildren.spec.ts index a8edbe72c9b..747626ad531 100644 --- a/packages/runtime-core/__tests__/rendererChildren.spec.ts +++ b/packages/runtime-core/__tests__/rendererChildren.spec.ts @@ -3,7 +3,7 @@ import { h, render, nodeOps, - NodeTypes, + TestNodeTypes, TestElement, serialize, serializeInner @@ -487,7 +487,7 @@ describe('renderer: unkeyed children', () => { elm = root.children[0] as TestElement expect(elm.children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'text' }) @@ -495,7 +495,7 @@ describe('renderer: unkeyed children', () => { elm = root.children[0] as TestElement expect(elm.children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'text' }) }) @@ -505,7 +505,7 @@ describe('renderer: unkeyed children', () => { elm = root.children[0] as TestElement expect(elm.children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'text' }) @@ -513,7 +513,7 @@ describe('renderer: unkeyed children', () => { elm = root.children[0] as TestElement expect(elm.children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'text2' }) }) diff --git a/packages/runtime-core/__tests__/rendererFragment.spec.ts b/packages/runtime-core/__tests__/rendererFragment.spec.ts index 1de73ef632c..d0c9e5c79a7 100644 --- a/packages/runtime-core/__tests__/rendererFragment.spec.ts +++ b/packages/runtime-core/__tests__/rendererFragment.spec.ts @@ -3,7 +3,7 @@ import { createVNode, render, nodeOps, - NodeTypes, + TestNodeTypes, TestElement, Fragment, resetOps, @@ -32,23 +32,23 @@ describe('renderer: fragment', () => { expect(serializeInner(root)).toBe(`
one
two`) expect(root.children.length).toBe(4) expect(root.children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: '' }) expect(root.children[1]).toMatchObject({ - type: NodeTypes.ELEMENT, + type: TestNodeTypes.ELEMENT, tag: 'div' }) expect((root.children[1] as TestElement).children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'one' }) expect(root.children[2]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'two' }) expect(root.children[3]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: '' }) }) diff --git a/packages/runtime-core/__tests__/vnodeHooks.spec.ts b/packages/runtime-core/__tests__/vnodeHooks.spec.ts index 7b9b7318074..4d6f4522738 100644 --- a/packages/runtime-core/__tests__/vnodeHooks.spec.ts +++ b/packages/runtime-core/__tests__/vnodeHooks.spec.ts @@ -5,7 +5,7 @@ import { nodeOps, VNodeProps, TestElement, - NodeTypes, + TestNodeTypes, VNode } from '@vue/runtime-test' @@ -45,13 +45,13 @@ describe('renderer: vnode hooks', () => { onVnodeMounted: vi.fn(), onVnodeBeforeUpdate: vi.fn(vnode => { expect((vnode.el as TestElement).children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'foo' }) }), onVnodeUpdated: vi.fn(vnode => { expect((vnode.el as TestElement).children[0]).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'bar' }) }), @@ -70,13 +70,13 @@ describe('renderer: vnode hooks', () => { onVnodeMounted: vi.fn(), onVnodeBeforeUpdate: vi.fn(vnode => { expect(vnode.el as TestElement).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'foo' }) }), onVnodeUpdated: vi.fn(vnode => { expect(vnode.el as TestElement).toMatchObject({ - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text: 'bar' }) }), diff --git a/packages/runtime-test/__tests__/testRuntime.spec.ts b/packages/runtime-test/__tests__/testRuntime.spec.ts index 789ace25446..b148e72a48b 100644 --- a/packages/runtime-test/__tests__/testRuntime.spec.ts +++ b/packages/runtime-test/__tests__/testRuntime.spec.ts @@ -2,7 +2,7 @@ import { h, render, nodeOps, - NodeTypes, + TestNodeTypes, TestElement, TestText, ref, @@ -32,12 +32,12 @@ describe('test renderer', () => { expect(root.children.length).toBe(1) const el = root.children[0] as TestElement - expect(el.type).toBe(NodeTypes.ELEMENT) + expect(el.type).toBe(TestNodeTypes.ELEMENT) expect(el.props.id).toBe('test') expect(el.children.length).toBe(1) const text = el.children[0] as TestText - expect(text.type).toBe(NodeTypes.TEXT) + expect(text.type).toBe(TestNodeTypes.TEXT) expect(text.text).toBe('hello') }) @@ -68,7 +68,7 @@ describe('test renderer', () => { expect(ops[0]).toEqual({ type: NodeOpTypes.CREATE, - nodeType: NodeTypes.ELEMENT, + nodeType: TestNodeTypes.ELEMENT, tag: 'div', targetNode: root.children[0] }) diff --git a/packages/runtime-test/src/nodeOps.ts b/packages/runtime-test/src/nodeOps.ts index 94a793cc483..a3a8012f280 100644 --- a/packages/runtime-test/src/nodeOps.ts +++ b/packages/runtime-test/src/nodeOps.ts @@ -1,6 +1,6 @@ import { markRaw } from '@vue/reactivity' -export const enum NodeTypes { +export const enum TestNodeTypes { TEXT = 'text', ELEMENT = 'element', COMMENT = 'comment' @@ -17,7 +17,7 @@ export const enum NodeOpTypes { export interface TestElement { id: number - type: NodeTypes.ELEMENT + type: TestNodeTypes.ELEMENT parentNode: TestElement | null tag: string children: TestNode[] @@ -27,14 +27,14 @@ export interface TestElement { export interface TestText { id: number - type: NodeTypes.TEXT + type: TestNodeTypes.TEXT parentNode: TestElement | null text: string } export interface TestComment { id: number - type: NodeTypes.COMMENT + type: TestNodeTypes.COMMENT parentNode: TestElement | null text: string } @@ -43,7 +43,7 @@ export type TestNode = TestElement | TestText | TestComment export interface NodeOp { type: NodeOpTypes - nodeType?: NodeTypes + nodeType?: TestNodeTypes tag?: string text?: string targetNode?: TestNode @@ -74,7 +74,7 @@ export function dumpOps(): NodeOp[] { function createElement(tag: string): TestElement { const node: TestElement = { id: nodeId++, - type: NodeTypes.ELEMENT, + type: TestNodeTypes.ELEMENT, tag, children: [], props: {}, @@ -83,7 +83,7 @@ function createElement(tag: string): TestElement { } logNodeOp({ type: NodeOpTypes.CREATE, - nodeType: NodeTypes.ELEMENT, + nodeType: TestNodeTypes.ELEMENT, targetNode: node, tag }) @@ -95,13 +95,13 @@ function createElement(tag: string): TestElement { function createText(text: string): TestText { const node: TestText = { id: nodeId++, - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text, parentNode: null } logNodeOp({ type: NodeOpTypes.CREATE, - nodeType: NodeTypes.TEXT, + nodeType: TestNodeTypes.TEXT, targetNode: node, text }) @@ -113,13 +113,13 @@ function createText(text: string): TestText { function createComment(text: string): TestComment { const node: TestComment = { id: nodeId++, - type: NodeTypes.COMMENT, + type: TestNodeTypes.COMMENT, text, parentNode: null } logNodeOp({ type: NodeOpTypes.CREATE, - nodeType: NodeTypes.COMMENT, + nodeType: TestNodeTypes.COMMENT, targetNode: node, text }) @@ -203,7 +203,7 @@ function setElementText(el: TestElement, text: string) { el.children = [ { id: nodeId++, - type: NodeTypes.TEXT, + type: TestNodeTypes.TEXT, text, parentNode: el } diff --git a/packages/runtime-test/src/serialize.ts b/packages/runtime-test/src/serialize.ts index a1ee138b659..21cfb2e1a05 100644 --- a/packages/runtime-test/src/serialize.ts +++ b/packages/runtime-test/src/serialize.ts @@ -1,7 +1,7 @@ import { TestElement, TestNode, - NodeTypes, + TestNodeTypes, TestText, TestComment } from './nodeOps' @@ -12,7 +12,7 @@ export function serialize( indent: number = 0, depth: number = 0 ): string { - if (node.type === NodeTypes.ELEMENT) { + if (node.type === TestNodeTypes.ELEMENT) { return serializeElement(node, indent, depth) } else { return serializeText(node, indent, depth) @@ -64,6 +64,6 @@ function serializeText( const padding = indent ? ` `.repeat(indent).repeat(depth) : `` return ( padding + - (node.type === NodeTypes.COMMENT ? `` : node.text) + (node.type === TestNodeTypes.COMMENT ? `` : node.text) ) } diff --git a/scripts/const-enum.js b/scripts/const-enum.js index 7cac217b7b1..b4a602af689 100644 --- a/scripts/const-enum.js +++ b/scripts/const-enum.js @@ -81,6 +81,12 @@ export function scanEnums() { } const key = e.id.type === 'Identifier' ? e.id.name : e.id.value const fullKey = `${id}.${key}` + const saveValue = value => { + if (fullKey in enumData.defines) { + throw new Error(`name conflict for enum ${id} in ${file}`) + } + enumData.defines[fullKey] = JSON.stringify(value) + } const init = e.initializer if (init) { let value @@ -138,15 +144,15 @@ export function scanEnums() { `unhandled initializer type ${init.type} for ${fullKey} in ${file}` ) } - enumData.defines[fullKey] = JSON.stringify(value) + saveValue(value) lastInitialized = value } else { if (lastInitialized === undefined) { // first initialized - enumData.defines[fullKey] = `0` + saveValue(`0`) lastInitialized = 0 } else if (typeof lastInitialized === 'number') { - enumData.defines[fullKey] = String(++lastInitialized) + saveValue(String(++lastInitialized)) } else { // should not happen throw new Error(`wrong enum initialization sequence in ${file}`)