})
})
})
+
+ test('template v-for key no prefixing on attribute key', () => {
+ const {
+ node: { codegenNode }
+ } = parseWithForTransform(
+ '<template v-for="item in items" key="key">test</template>',
+ { prefixIdentifiers: true }
+ )
+ const innerBlock = codegenNode.children.arguments[1].returns
+ expect(innerBlock).toMatchObject({
+ type: NodeTypes.VNODE_CALL,
+ tag: FRAGMENT,
+ props: createObjectMatcher({
+ key: {
+ type: NodeTypes.SIMPLE_EXPRESSION,
+ content: 'key'
+ }
+ })
+ })
+ })
})
describe('codegen', () => {
: keyProp.exp!)
const keyProperty = keyProp ? createObjectProperty(`key`, keyExp!) : null
- if (!__BROWSER__ && context.prefixIdentifiers && keyProperty) {
+ if (
+ !__BROWSER__ &&
+ context.prefixIdentifiers &&
+ keyProperty &&
+ keyProp!.type !== NodeTypes.ATTRIBUTE
+ ) {
// #2085 process :key expression needs to be processed in order for it
// to behave consistently for <template v-for> and <div v-for>.
// In the case of `<template v-for>`, the node is discarded and never