wip: fix compileScript script/script-setup co-usage

This commit is contained in:
Evan You 2020-11-19 16:17:54 -05:00
parent a9424354b0
commit 08879cc3b5
3 changed files with 63 additions and 2 deletions

View File

@ -1,5 +1,38 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`SFC compile <script setup> <script> and <script setup> co-usage script first 1`] = `
"import { x } from './x'
export const n = 1
export default {
expose: [],
setup(__props) {
x()
return { x }
}
}"
`;
exports[`SFC compile <script setup> <script> and <script setup> co-usage script setup first 1`] = `
"import { x } from './x'
export default {
expose: [],
setup(__props) {
x()
return { x }
}
}
export const n = 1"
`;
exports[`SFC compile <script setup> defineOptions() 1`] = ` exports[`SFC compile <script setup> defineOptions() 1`] = `
"export default { "export default {
expose: [], expose: [],

View File

@ -53,6 +53,34 @@ const bar = 1
emit: ['a', 'b'],`) emit: ['a', 'b'],`)
}) })
describe('<script> and <script setup> co-usage', () => {
test('script first', () => {
const { content } = compile(`
<script>
export const n = 1
</script>
<script setup>
import { x } from './x'
x()
</script>
`)
assertCode(content)
})
test('script setup first', () => {
const { content } = compile(`
<script setup>
import { x } from './x'
x()
</script>
<script>
export const n = 1
</script>
`)
assertCode(content)
})
})
describe('imports', () => { describe('imports', () => {
test('should hoist and expose imports', () => { test('should hoist and expose imports', () => {
assertCode( assertCode(

View File

@ -921,7 +921,7 @@ export function compileScript(
hasAwait ? `async ` : `` hasAwait ? `async ` : ``
}setup(${args}) {\n` }setup(${args}) {\n`
) )
s.append(`})`) s.appendRight(endOffset, `})`)
} else { } else {
if (defaultExport) { if (defaultExport) {
// can't rely on spread operator in non ts mode // can't rely on spread operator in non ts mode
@ -939,7 +939,7 @@ export function compileScript(
`\nexport default {${runtimeOptions}\n ` + `\nexport default {${runtimeOptions}\n ` +
`${hasAwait ? `async ` : ``}setup(${args}) {\n` `${hasAwait ? `async ` : ``}setup(${args}) {\n`
) )
s.append(`}`) s.appendRight(endOffset, `}`)
} }
} }