Skip to content

Commit

Permalink
fix(compiler): add condition to see whether the element may be an com…
Browse files Browse the repository at this point in the history
…ponent

fixes vuejs#10152
  • Loading branch information
zrh122 committed Jun 19, 2019
1 parent bad3c32 commit 4294e72
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/compiler/parser/index.js
Expand Up @@ -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')
Expand Down
16 changes: 16 additions & 0 deletions test/unit/modules/compiler/parser.spec.js
Expand Up @@ -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(`
<div>
<div is="customComp" v-slot="slotProps"></div>
<div :is="'customComp'" v-slot="slotProps"></div>
<div v-bind:is="'customComp'" v-slot="slotProps"></div>
</div>
`, baseOptions)
expect('v-slot can only be used on components or <template>').not.toHaveBeenWarned()

parse(`<div is="customComp"><template v-slot="slotProps"></template></div>`, baseOptions)
expect(`<template v-slot> can only appear at the root level inside the receiving the component`)
.not.toHaveBeenWarned()
})
})

1 comment on commit 4294e72

@2472289148
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your code, it's very userful, but why cant merge with dev branch?

Please sign in to comment.