From 4294e727e1ab00cfd92f718fc60b0d99653aae6e Mon Sep 17 00:00:00 2001 From: zrh122 <1229550935@qq.com> Date: Wed, 19 Jun 2019 13:10:15 +0800 Subject: [PATCH] fix(compiler): add condition to see whether the element may be an component fixes #10152 --- src/compiler/parser/index.js | 8 ++++++-- test/unit/modules/compiler/parser.spec.js | 16 ++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/compiler/parser/index.js b/src/compiler/parser/index.js index cdeb257eda4..0ee96b9e90d 100644 --- a/src/compiler/parser/index.js +++ b/src/compiler/parser/index.js @@ -86,8 +86,12 @@ export function parse ( platformMustUseProp = options.mustUseProp || no platformGetTagNamespace = options.getTagNamespace || no const isReservedTag = options.isReservedTag || no - maybeComponent = (el: ASTElement) => !!el.component || !isReservedTag(el.tag) - + maybeComponent = (el: ASTElement) => !!( + el.component || + el.attrsMap[':is'] || + el.attrsMap['v-bind:is'] || + !(el.attrsMap.is ? isReservedTag(el.attrsMap.is) : isReservedTag(el.tag)) + ) transforms = pluckModuleFunction(options.modules, 'transformNode') preTransforms = pluckModuleFunction(options.modules, 'preTransformNode') postTransforms = pluckModuleFunction(options.modules, 'postTransformNode') diff --git a/test/unit/modules/compiler/parser.spec.js b/test/unit/modules/compiler/parser.spec.js index d6521bbf625..b6a8e5b4eb4 100644 --- a/test/unit/modules/compiler/parser.spec.js +++ b/test/unit/modules/compiler/parser.spec.js @@ -881,4 +881,20 @@ describe('parser', () => { expect(ast.children[2].type).toBe(3) expect(ast.children[2].text).toBe('\ndef') }) + + // #10152 + it('not warn when scoped slot used inside of dynamic component on regular element', () => { + parse(` +
+
+
+
+
+ `, baseOptions) + expect('v-slot can only be used on components or