mirror of
https://github.com/vuejs/vue.git
synced 2024-11-21 20:28:54 +00:00
fix(compiler-sfc): fix macro usage in multi-variable declaration (#12873)
This commit is contained in:
parent
bb59751dd4
commit
d27c128b7c
@ -910,11 +910,11 @@ export function compileScript(
|
||||
} else {
|
||||
let start = decl.start! + startOffset
|
||||
let end = decl.end! + startOffset
|
||||
if (i < total - 1) {
|
||||
// not the last one, locate the start of the next
|
||||
if (i === 0) {
|
||||
// first one, locate the start of the next
|
||||
end = node.declarations[i + 1].start! + startOffset
|
||||
} else {
|
||||
// last one, locate the end of the prev
|
||||
// not first one, locate the end of the prev
|
||||
start = node.declarations[i - 1].end! + startOffset
|
||||
}
|
||||
s.remove(start, end)
|
||||
|
@ -288,6 +288,22 @@ return { props, a, emit }
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`SFC compile <script setup> > defineProps/defineEmits in multi-variable declaration fix #6757 1`] = `
|
||||
"export default {
|
||||
props: ['item'],
|
||||
emits: ['a'],
|
||||
setup(__props, { emit }) {
|
||||
|
||||
const props = __props
|
||||
|
||||
const a = 1;
|
||||
|
||||
return { a, props, emit }
|
||||
}
|
||||
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`SFC compile <script setup> > dev mode import usage check > TS annotations 1`] = `
|
||||
"import { defineComponent as _defineComponent } from 'vue'
|
||||
import { Foo, Baz, Qux, Fred } from './x'
|
||||
|
@ -141,6 +141,21 @@ const myEmit = defineEmits(['foo', 'bar'])
|
||||
expect(content).toMatch(`emits: ['a'],`)
|
||||
})
|
||||
|
||||
// vuejs/core #6757
|
||||
test('defineProps/defineEmits in multi-variable declaration fix #6757 ', () => {
|
||||
const { content } = compile(`
|
||||
<script setup>
|
||||
const a = 1,
|
||||
props = defineProps(['item']),
|
||||
emit = defineEmits(['a']);
|
||||
</script>
|
||||
`)
|
||||
assertCode(content)
|
||||
expect(content).toMatch(`const a = 1;`) // test correct removal
|
||||
expect(content).toMatch(`props: ['item'],`)
|
||||
expect(content).toMatch(`emits: ['a'],`)
|
||||
})
|
||||
|
||||
test('defineProps/defineEmits in multi-variable declaration (full removal)', () => {
|
||||
const { content } = compile(`
|
||||
<script setup>
|
||||
|
Loading…
Reference in New Issue
Block a user