fix(compiler-sfc): fix TLA codegen semicolon insertion

fix #4596
This commit is contained in:
Evan You
2021-09-16 16:49:59 -04:00
parent ae942cdcd9
commit 39cebf5f7a
3 changed files with 92 additions and 17 deletions

View File

@@ -1066,6 +1066,7 @@ const emit = defineEmits(['a', 'b'])
}
expect(content).toMatch(`${shouldAsync ? `async ` : ``}setup(`)
assertCode(content)
return content
}
test('expression statement', () => {
@@ -1080,12 +1081,25 @@ const emit = defineEmits(['a', 'b'])
assertAwaitDetection(`let a = $ref(1 + (await foo))`)
})
// #4448
test('nested await', () => {
assertAwaitDetection(`await (await foo)`)
assertAwaitDetection(`await ((await foo))`)
assertAwaitDetection(`await (await (await foo))`)
})
// should prepend semicolon
test('await in expression statement', () => {
const code = assertAwaitDetection(`foo()\nawait 1 + await 2`)
expect(code).toMatch(`foo()\n;(`)
})
// #4596 should NOT prepend semicolon
test('single line conditions', () => {
const code = assertAwaitDetection(`if (false) await foo()`)
expect(code).not.toMatch(`if (false) ;(`)
})
test('nested statements', () => {
assertAwaitDetection(`if (ok) { await foo } else { await bar }`)
})