From e98a85f3cbda7e2c34955295f0a353d42bd48f8c Mon Sep 17 00:00:00 2001 From: Evan You Date: Fri, 18 Oct 2019 16:35:01 -0400 Subject: [PATCH] refactor: applyDirectives -> withDirectives --- .../compiler-core/__tests__/transform.spec.ts | 4 +- .../__snapshots__/hoistStatic.spec.ts.snap | 4 +- .../__snapshots__/vFor.spec.ts.snap | 4 +- .../__tests__/transforms/hoistStatic.spec.ts | 4 +- .../transforms/transformElement.spec.ts | 6 +-- .../__tests__/transforms/vFor.spec.ts | 4 +- .../__tests__/transforms/vIf.spec.ts | 4 +- packages/compiler-core/src/ast.ts | 6 +-- packages/compiler-core/src/runtimeHelpers.ts | 4 +- packages/compiler-core/src/transform.ts | 4 +- .../src/transforms/hoistStatic.ts | 6 +-- .../src/transforms/transformElement.ts | 4 +- packages/compiler-core/src/transforms/vFor.ts | 4 +- packages/compiler-core/src/transforms/vIf.ts | 4 +- .../__snapshots__/vModel.spec.ts.snap | 40 +++++++++---------- .../runtime-core/__tests__/apiApp.spec.ts | 4 +- .../runtime-core/__tests__/directives.spec.ts | 6 +-- packages/runtime-core/src/directives.ts | 9 ++--- packages/runtime-core/src/index.ts | 2 +- .../__tests__/directives/vModel.spec.ts | 4 +- 20 files changed, 63 insertions(+), 64 deletions(-) diff --git a/packages/compiler-core/__tests__/transform.spec.ts b/packages/compiler-core/__tests__/transform.spec.ts index d9203fe880..a4fe1911d9 100644 --- a/packages/compiler-core/__tests__/transform.spec.ts +++ b/packages/compiler-core/__tests__/transform.spec.ts @@ -15,7 +15,7 @@ import { CREATE_BLOCK, FRAGMENT, RENDER_SLOT, - APPLY_DIRECTIVES + WITH_DIRECTIVES } from '../src/runtimeHelpers' import { transformIf } from '../src/transforms/vIf' import { transformFor } from '../src/transforms/vFor' @@ -314,7 +314,7 @@ describe('compiler: transform', () => { { type: NodeTypes.JS_CALL_EXPRESSION, // should wrap applyDirectives() around createBlock() - callee: APPLY_DIRECTIVES, + callee: WITH_DIRECTIVES, arguments: [ { callee: CREATE_BLOCK }, { type: NodeTypes.JS_ARRAY_EXPRESSION } diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap index b739baf454..859db34470 100644 --- a/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap +++ b/packages/compiler-core/__tests__/transforms/__snapshots__/hoistStatic.spec.ts.snap @@ -101,12 +101,12 @@ const _hoisted_1 = { id: \\"foo\\" } return function render() { with (this) { - const { createVNode: _createVNode, applyDirectives: _applyDirectives, resolveDirective: _resolveDirective, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { createVNode: _createVNode, withDirectives: _withDirectives, resolveDirective: _resolveDirective, createBlock: _createBlock, openBlock: _openBlock } = _Vue const _directive_foo = _resolveDirective(\\"foo\\") return (_openBlock(), _createBlock(\\"div\\", null, [ - _applyDirectives(_createVNode(\\"div\\", _hoisted_1, null, 32 /* NEED_PATCH */), [ + _withDirectives(_createVNode(\\"div\\", _hoisted_1, null, 32 /* NEED_PATCH */), [ [_directive_foo] ]) ])) diff --git a/packages/compiler-core/__tests__/transforms/__snapshots__/vFor.spec.ts.snap b/packages/compiler-core/__tests__/transforms/__snapshots__/vFor.spec.ts.snap index 534bf9f628..236bb02595 100644 --- a/packages/compiler-core/__tests__/transforms/__snapshots__/vFor.spec.ts.snap +++ b/packages/compiler-core/__tests__/transforms/__snapshots__/vFor.spec.ts.snap @@ -137,12 +137,12 @@ exports[`compiler: v-for codegen v-for on element with custom directive 1`] = ` return function render() { with (this) { - const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode, applyDirectives: _applyDirectives, resolveDirective: _resolveDirective } = _Vue + const { renderList: _renderList, openBlock: _openBlock, createBlock: _createBlock, Fragment: _Fragment, createVNode: _createVNode, withDirectives: _withDirectives, resolveDirective: _resolveDirective } = _Vue const _directive_foo = _resolveDirective(\\"foo\\") return (_openBlock(), _createBlock(_Fragment, null, _renderList(list, (i) => { - return (_openBlock(), _applyDirectives(_createBlock(\\"div\\", null, null, 32 /* NEED_PATCH */), [ + return (_openBlock(), _withDirectives(_createBlock(\\"div\\", null, null, 32 /* NEED_PATCH */), [ [_directive_foo] ])) }), 128 /* UNKEYED_FRAGMENT */)) diff --git a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts index f5567b9822..8632ce95a3 100644 --- a/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts +++ b/packages/compiler-core/__tests__/transforms/hoistStatic.spec.ts @@ -9,7 +9,7 @@ import { OPEN_BLOCK, CREATE_BLOCK, CREATE_VNODE, - APPLY_DIRECTIVES, + WITH_DIRECTIVES, FRAGMENT, RENDER_LIST } from '../../src/runtimeHelpers' @@ -304,7 +304,7 @@ describe('compiler: hoistStatic transform', () => { { type: NodeTypes.ELEMENT, codegenNode: { - callee: APPLY_DIRECTIVES, + callee: WITH_DIRECTIVES, arguments: [ { callee: CREATE_VNODE, diff --git a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts index 6bda8342bd..74b2cc878e 100644 --- a/packages/compiler-core/__tests__/transforms/transformElement.spec.ts +++ b/packages/compiler-core/__tests__/transforms/transformElement.spec.ts @@ -4,7 +4,7 @@ import { CREATE_VNODE, MERGE_PROPS, RESOLVE_DIRECTIVE, - APPLY_DIRECTIVES, + WITH_DIRECTIVES, TO_HANDLERS, helperNameMap, PORTAL, @@ -368,7 +368,7 @@ describe('compiler: element transform', () => { expect(root.helpers).toContain(RESOLVE_DIRECTIVE) expect(root.directives).toContain(`foo`) - expect(node.callee).toBe(APPLY_DIRECTIVES) + expect(node.callee).toBe(WITH_DIRECTIVES) expect(node.arguments).toMatchObject([ { type: NodeTypes.JS_CALL_EXPRESSION, @@ -438,7 +438,7 @@ describe('compiler: element transform', () => { expect(root.directives).toContain(`bar`) expect(root.directives).toContain(`baz`) - expect(node.callee).toBe(APPLY_DIRECTIVES) + expect(node.callee).toBe(WITH_DIRECTIVES) expect(node.arguments).toMatchObject([ { type: NodeTypes.JS_CALL_EXPRESSION diff --git a/packages/compiler-core/__tests__/transforms/vFor.spec.ts b/packages/compiler-core/__tests__/transforms/vFor.spec.ts index eb1141d9dd..a5b81a8c67 100644 --- a/packages/compiler-core/__tests__/transforms/vFor.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vFor.spec.ts @@ -23,7 +23,7 @@ import { FRAGMENT, RENDER_LIST, RENDER_SLOT, - APPLY_DIRECTIVES + WITH_DIRECTIVES } from '../../src/runtimeHelpers' import { PatchFlags } from '@vue/runtime-dom' import { createObjectMatcher, genFlagText } from '../testUtils' @@ -859,7 +859,7 @@ describe('compiler: v-for', () => { { callee: OPEN_BLOCK }, // should wrap applyDirectives() around createBlock() { - callee: APPLY_DIRECTIVES, + callee: WITH_DIRECTIVES, arguments: [ { callee: CREATE_BLOCK }, { type: NodeTypes.JS_ARRAY_EXPRESSION } diff --git a/packages/compiler-core/__tests__/transforms/vIf.spec.ts b/packages/compiler-core/__tests__/transforms/vIf.spec.ts index 73f140849b..4ca81333e0 100644 --- a/packages/compiler-core/__tests__/transforms/vIf.spec.ts +++ b/packages/compiler-core/__tests__/transforms/vIf.spec.ts @@ -22,7 +22,7 @@ import { COMMENT, FRAGMENT, MERGE_PROPS, - APPLY_DIRECTIVES, + WITH_DIRECTIVES, RENDER_SLOT } from '../../src/runtimeHelpers' import { createObjectMatcher } from '../testUtils' @@ -513,7 +513,7 @@ describe('compiler: v-if', () => { } = parseWithIfTransform(`
`) const branch1 = (codegenNode.expressions[1] as ConditionalExpression) .consequent as CallExpression - expect(branch1.callee).toBe(APPLY_DIRECTIVES) + expect(branch1.callee).toBe(WITH_DIRECTIVES) const realBranch = branch1.arguments[0] as CallExpression expect(realBranch.arguments[1]).toMatchObject( createObjectMatcher({ key: `[0]` }) diff --git a/packages/compiler-core/src/ast.ts b/packages/compiler-core/src/ast.ts index 9825b91668..5813f36324 100644 --- a/packages/compiler-core/src/ast.ts +++ b/packages/compiler-core/src/ast.ts @@ -2,7 +2,7 @@ import { isString } from '@vue/shared' import { ForParseResult } from './transforms/vFor' import { CREATE_VNODE, - APPLY_DIRECTIVES, + WITH_DIRECTIVES, RENDER_SLOT, CREATE_SLOTS, RENDER_LIST, @@ -393,7 +393,7 @@ export interface DynamicSlotFnProperty extends Property { // ]) export interface CodegenNodeWithDirective extends CallExpression { - callee: typeof APPLY_DIRECTIVES + callee: typeof WITH_DIRECTIVES arguments: [T, DirectiveArguments] } @@ -548,7 +548,7 @@ type InferCodegenNodeType = T extends | typeof CREATE_VNODE | typeof CREATE_BLOCK ? PlainElementCodegenNode | PlainComponentCodegenNode - : T extends typeof APPLY_DIRECTIVES + : T extends typeof WITH_DIRECTIVES ? | CodegenNodeWithDirective | CodegenNodeWithDirective diff --git a/packages/compiler-core/src/runtimeHelpers.ts b/packages/compiler-core/src/runtimeHelpers.ts index 8993d06749..6cd690ced7 100644 --- a/packages/compiler-core/src/runtimeHelpers.ts +++ b/packages/compiler-core/src/runtimeHelpers.ts @@ -11,7 +11,7 @@ export const RESOLVE_DYNAMIC_COMPONENT = Symbol( __DEV__ ? `resolveDynamicComponent` : `` ) export const RESOLVE_DIRECTIVE = Symbol(__DEV__ ? `resolveDirective` : ``) -export const APPLY_DIRECTIVES = Symbol(__DEV__ ? `applyDirectives` : ``) +export const WITH_DIRECTIVES = Symbol(__DEV__ ? `withDirectives` : ``) export const RENDER_LIST = Symbol(__DEV__ ? `renderList` : ``) export const RENDER_SLOT = Symbol(__DEV__ ? `renderSlot` : ``) export const CREATE_SLOTS = Symbol(__DEV__ ? `createSlots` : ``) @@ -35,7 +35,7 @@ export const helperNameMap: any = { [RESOLVE_COMPONENT]: `resolveComponent`, [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`, [RESOLVE_DIRECTIVE]: `resolveDirective`, - [APPLY_DIRECTIVES]: `applyDirectives`, + [WITH_DIRECTIVES]: `withDirectives`, [RENDER_LIST]: `renderList`, [RENDER_SLOT]: `renderSlot`, [CREATE_SLOTS]: `createSlots`, diff --git a/packages/compiler-core/src/transform.ts b/packages/compiler-core/src/transform.ts index 14ce67b395..ae3e9e7a02 100644 --- a/packages/compiler-core/src/transform.ts +++ b/packages/compiler-core/src/transform.ts @@ -23,7 +23,7 @@ import { CREATE_VNODE, FRAGMENT, helperNameMap, - APPLY_DIRECTIVES, + WITH_DIRECTIVES, CREATE_BLOCK } from './runtimeHelpers' import { isVSlot, createBlockExpression } from './utils' @@ -243,7 +243,7 @@ function finalizeRoot(root: RootNode, context: TransformContext) { const codegenNode = child.codegenNode as | ElementCodegenNode | ComponentCodegenNode - if (codegenNode.callee === APPLY_DIRECTIVES) { + if (codegenNode.callee === WITH_DIRECTIVES) { codegenNode.arguments[0].callee = helper(CREATE_BLOCK) } else { codegenNode.callee = helper(CREATE_BLOCK) diff --git a/packages/compiler-core/src/transforms/hoistStatic.ts b/packages/compiler-core/src/transforms/hoistStatic.ts index e528536df4..87e2a1362d 100644 --- a/packages/compiler-core/src/transforms/hoistStatic.ts +++ b/packages/compiler-core/src/transforms/hoistStatic.ts @@ -11,7 +11,7 @@ import { ElementNode } from '../ast' import { TransformContext } from '../transform' -import { APPLY_DIRECTIVES } from '../runtimeHelpers' +import { WITH_DIRECTIVES } from '../runtimeHelpers' import { PatchFlags, isString, isSymbol } from '@vue/shared' import { isSlotOutlet, findProp } from '../utils' @@ -72,7 +72,7 @@ function walk( !hasDynamicKeyOrRef(child) ) { let codegenNode = child.codegenNode as ElementCodegenNode - if (codegenNode.callee === APPLY_DIRECTIVES) { + if (codegenNode.callee === WITH_DIRECTIVES) { codegenNode = codegenNode.arguments[0] } const props = codegenNode.arguments[1] @@ -99,7 +99,7 @@ function walk( function getPatchFlag(node: PlainElementNode): number | undefined { let codegenNode = node.codegenNode as ElementCodegenNode - if (codegenNode.callee === APPLY_DIRECTIVES) { + if (codegenNode.callee === WITH_DIRECTIVES) { codegenNode = codegenNode.arguments[0] } const flag = codegenNode.arguments[3] diff --git a/packages/compiler-core/src/transforms/transformElement.ts b/packages/compiler-core/src/transforms/transformElement.ts index 88838886dd..970173ff3c 100644 --- a/packages/compiler-core/src/transforms/transformElement.ts +++ b/packages/compiler-core/src/transforms/transformElement.ts @@ -19,7 +19,7 @@ import { PatchFlags, PatchFlagNames, isSymbol } from '@vue/shared' import { createCompilerError, ErrorCodes } from '../errors' import { CREATE_VNODE, - APPLY_DIRECTIVES, + WITH_DIRECTIVES, RESOLVE_DIRECTIVE, RESOLVE_COMPONENT, RESOLVE_DYNAMIC_COMPONENT, @@ -177,7 +177,7 @@ export const transformElement: NodeTransform = (node, context) => { if (runtimeDirectives && runtimeDirectives.length) { node.codegenNode = createCallExpression( - context.helper(APPLY_DIRECTIVES), + context.helper(WITH_DIRECTIVES), [ vnode, createArrayExpression( diff --git a/packages/compiler-core/src/transforms/vFor.ts b/packages/compiler-core/src/transforms/vFor.ts index 5f176e26c5..6325fa9814 100644 --- a/packages/compiler-core/src/transforms/vFor.ts +++ b/packages/compiler-core/src/transforms/vFor.ts @@ -31,7 +31,7 @@ import { OPEN_BLOCK, CREATE_BLOCK, FRAGMENT, - APPLY_DIRECTIVES + WITH_DIRECTIVES } from '../runtimeHelpers' import { processExpression } from './transformExpression' import { PatchFlags, PatchFlagNames } from '@vue/shared' @@ -151,7 +151,7 @@ export const transformFor = createStructuralDirectiveTransform( // Normal element v-for. Directly use the child's codegenNode // arguments, but replace createVNode() with createBlock() let codegenNode = node.codegenNode as ElementCodegenNode - if (codegenNode.callee === APPLY_DIRECTIVES) { + if (codegenNode.callee === WITH_DIRECTIVES) { codegenNode.arguments[0].callee = helper(CREATE_BLOCK) } else { codegenNode.callee = helper(CREATE_BLOCK) diff --git a/packages/compiler-core/src/transforms/vIf.ts b/packages/compiler-core/src/transforms/vIf.ts index 6c0b56b917..5f6c41402e 100644 --- a/packages/compiler-core/src/transforms/vIf.ts +++ b/packages/compiler-core/src/transforms/vIf.ts @@ -32,7 +32,7 @@ import { CREATE_BLOCK, COMMENT, FRAGMENT, - APPLY_DIRECTIVES, + WITH_DIRECTIVES, CREATE_VNODE } from '../runtimeHelpers' import { injectProp } from '../utils' @@ -196,7 +196,7 @@ function createChildrenCodegenNode( | SlotOutletCodegenNode let vnodeCall = childCodegen // Element with custom directives. Locate the actual createVNode() call. - if (vnodeCall.callee === APPLY_DIRECTIVES) { + if (vnodeCall.callee === WITH_DIRECTIVES) { vnodeCall = vnodeCall.arguments[0] } // Change createVNode to createBlock. diff --git a/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap b/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap index 968a19db9f..f996e95578 100644 --- a/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap +++ b/packages/compiler-dom/__tests__/transforms/__snapshots__/vModel.spec.ts.snap @@ -5,9 +5,9 @@ exports[`compiler: transform v-model modifiers .lazy 1`] = ` return function render() { with (this) { - const { vModelText: _vModelText, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) }, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]), [ @@ -27,9 +27,9 @@ exports[`compiler: transform v-model modifiers .number 1`] = ` return function render() { with (this) { - const { vModelText: _vModelText, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) }, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]), [ @@ -49,9 +49,9 @@ exports[`compiler: transform v-model modifiers .trim 1`] = ` return function render() { with (this) { - const { vModelText: _vModelText, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) }, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]), [ @@ -71,9 +71,9 @@ exports[`compiler: transform v-model simple expression 1`] = ` return function render() { with (this) { - const { vModelText: _vModelText, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) }, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]), [ @@ -88,9 +88,9 @@ exports[`compiler: transform v-model simple expression for input (checkbox) 1`] return function render() { with (this) { - const { vModelCheckbox: _vModelCheckbox, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelCheckbox: _vModelCheckbox, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { type: \\"checkbox\\", modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) @@ -106,11 +106,11 @@ exports[`compiler: transform v-model simple expression for input (dynamic type) return function render() { with (this) { - const { vModelDynamic: _vModelDynamic, createVNode: _createVNode, applyDirectives: _applyDirectives, resolveDirective: _resolveDirective, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelDynamic: _vModelDynamic, createVNode: _createVNode, withDirectives: _withDirectives, resolveDirective: _resolveDirective, createBlock: _createBlock, openBlock: _openBlock } = _Vue const _directive_bind = _resolveDirective(\\"bind\\") - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) }, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]), [ @@ -126,9 +126,9 @@ exports[`compiler: transform v-model simple expression for input (radio) 1`] = ` return function render() { with (this) { - const { vModelRadio: _vModelRadio, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelRadio: _vModelRadio, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { type: \\"radio\\", modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) @@ -144,9 +144,9 @@ exports[`compiler: transform v-model simple expression for input (text) 1`] = ` return function render() { with (this) { - const { vModelText: _vModelText, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"input\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"input\\", { type: \\"text\\", modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) @@ -162,9 +162,9 @@ exports[`compiler: transform v-model simple expression for select 1`] = ` return function render() { with (this) { - const { vModelSelect: _vModelSelect, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelSelect: _vModelSelect, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"select\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"select\\", { modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) }, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]), [ @@ -179,9 +179,9 @@ exports[`compiler: transform v-model simple expression for textarea 1`] = ` return function render() { with (this) { - const { vModelText: _vModelText, createVNode: _createVNode, applyDirectives: _applyDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue + const { vModelText: _vModelText, createVNode: _createVNode, withDirectives: _withDirectives, createBlock: _createBlock, openBlock: _openBlock } = _Vue - return (_openBlock(), _applyDirectives(_createBlock(\\"textarea\\", { + return (_openBlock(), _withDirectives(_createBlock(\\"textarea\\", { modelValue: model, \\"onUpdate:modelValue\\": $event => (model = $event) }, null, 8 /* PROPS */, [\\"modelValue\\", \\"onUpdate:modelValue\\"]), [ diff --git a/packages/runtime-core/__tests__/apiApp.spec.ts b/packages/runtime-core/__tests__/apiApp.spec.ts index 4bcf3614a8..a4c11222e1 100644 --- a/packages/runtime-core/__tests__/apiApp.spec.ts +++ b/packages/runtime-core/__tests__/apiApp.spec.ts @@ -8,7 +8,7 @@ import { inject, resolveComponent, resolveDirective, - applyDirectives, + withDirectives, Plugin, ref, getCurrentInstance @@ -128,7 +128,7 @@ describe('api: createApp', () => { return () => { // resolve in render const BarBaz = resolveDirective('bar-baz')! - return applyDirectives(h('div'), [[FooBar], [BarBaz]]) + return withDirectives(h('div'), [[FooBar], [BarBaz]]) } } } diff --git a/packages/runtime-core/__tests__/directives.spec.ts b/packages/runtime-core/__tests__/directives.spec.ts index e2bbf04f19..50baa150be 100644 --- a/packages/runtime-core/__tests__/directives.spec.ts +++ b/packages/runtime-core/__tests__/directives.spec.ts @@ -1,6 +1,6 @@ import { h, - applyDirectives, + withDirectives, ref, render, nodeOps, @@ -107,7 +107,7 @@ describe('directives', () => { }, render() { _prevVnode = _vnode - _vnode = applyDirectives(h('div', count.value), [ + _vnode = withDirectives(h('div', count.value), [ [ { beforeMount, @@ -174,7 +174,7 @@ describe('directives', () => { }, render() { _prevVnode = _vnode - _vnode = applyDirectives(h('div', count.value), [ + _vnode = withDirectives(h('div', count.value), [ [ fn, // value diff --git a/packages/runtime-core/src/directives.ts b/packages/runtime-core/src/directives.ts index 088695040d..ea82606cff 100644 --- a/packages/runtime-core/src/directives.ts +++ b/packages/runtime-core/src/directives.ts @@ -11,8 +11,8 @@ return applyDirectives(h(comp), [ ]) */ -import { VNode, cloneVNode } from './vnode' -import { extend, isArray, isFunction, EMPTY_OBJ, makeMap } from '@vue/shared' +import { VNode } from './vnode' +import { isArray, isFunction, EMPTY_OBJ, makeMap } from '@vue/shared' import { warn } from './warning' import { ComponentInternalInstance } from './component' import { currentRenderingInstance } from './componentRenderUtils' @@ -120,11 +120,10 @@ export type DirectiveArguments = Array< | [Directive, any, string, DirectiveModifiers] > -export function applyDirectives(vnode: VNode, directives: DirectiveArguments) { +export function withDirectives(vnode: VNode, directives: DirectiveArguments) { const instance = currentRenderingInstance if (instance !== null) { - vnode = cloneVNode(vnode) - vnode.props = vnode.props != null ? extend({}, vnode.props) : {} + vnode.props = vnode.props || {} for (let i = 0; i < directives.length; i++) { const [dir, value, arg, modifiers] = directives[i] applyDirective(vnode.props, instance, dir, value, arg, modifiers) diff --git a/packages/runtime-core/src/index.ts b/packages/runtime-core/src/index.ts index 75ed1765db..d55cc7b142 100644 --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@ -38,7 +38,7 @@ export { // Internal, for compiler generated code // should sync with '@vue/compiler-core/src/runtimeConstants.ts' -export { applyDirectives } from './directives' +export { withDirectives } from './directives' export { resolveComponent, resolveDirective, diff --git a/packages/runtime-dom/__tests__/directives/vModel.spec.ts b/packages/runtime-dom/__tests__/directives/vModel.spec.ts index 80319562fc..357e827bef 100644 --- a/packages/runtime-dom/__tests__/directives/vModel.spec.ts +++ b/packages/runtime-dom/__tests__/directives/vModel.spec.ts @@ -4,7 +4,7 @@ import { nextTick, createComponent, vModelDynamic, - applyDirectives, + withDirectives, VNode } from '@vue/runtime-dom' @@ -14,7 +14,7 @@ const triggerEvent = (type: string, el: Element) => { } const withVModel = (node: VNode, arg: any, mods?: any) => - applyDirectives(node, [[vModelDynamic, arg, '', mods]]) + withDirectives(node, [[vModelDynamic, arg, '', mods]]) const setValue = function(this: any, value: any) { this.value = value -- 2.47.3