fix(compiler-sfc): fix <script> and <script setup> co-usage ordering edge case (#4419)

Fix: #4395
Fix: #4376
This commit is contained in:
klwf
2021-08-24 07:02:54 +08:00
committed by GitHub
parent a46b0a9a96
commit 98263821f8
3 changed files with 60 additions and 9 deletions

View File

@@ -33,6 +33,27 @@ return { x }
export const n = 1"
`;
exports[`SFC compile <script setup> <script> and <script setup> co-usage script setup first, lang="ts", script block content export default 1`] = `
"import { defineComponent as _defineComponent } from 'vue'
import { x } from './x'
function setup(__props, { expose }) {
x()
return { x }
}
const __default__ = {
name: \\"test\\"
}
export default _defineComponent({
...__default__,
setup})"
`;
exports[`SFC compile <script setup> <script> and <script setup> co-usage spaces in ExportDefaultDeclaration node with many spaces and newline 1`] = `
"import { x } from './x'

View File

@@ -202,6 +202,24 @@ defineExpose({ foo: 123 })
`)
assertCode(content)
})
// #4395
test('script setup first, lang="ts", script block content export default', () => {
const { content } = compile(`
<script setup lang="ts">
import { x } from './x'
x()
</script>
<script lang="ts">
export default {
name: "test"
}
</script>
`)
// ensure __default__ is declared before used
expect(content).toMatch(/const __default__[\S\s]*\.\.\.__default__/m)
assertCode(content)
})
})
describe('imports', () => {