Skip to content

Commit 5409708

Browse files
committed
fix(compiler-sfc): restore await scope when leaving nested blocks
Closes #15465
1 parent 5dda192 commit 5409708

2 files changed

Lines changed: 20 additions & 1 deletion

File tree

‎packages/compiler-sfc/__tests__/compileScript.spec.ts‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1026,6 +1026,25 @@ describe('SFC compile <script setup>', () => {
10261026
false,
10271027
)
10281028
})
1029+
1030+
// #15465
1031+
test('await statements after a nested block should be separated', async () => {
1032+
const { content } = compile(
1033+
`<script setup>
1034+
if (true) {
1035+
if (false) {}
1036+
await Promise.resolve(1)
1037+
await Promise.resolve(2)
1038+
}
1039+
</script>`,
1040+
{ genDefaultAs: '_sfc_' },
1041+
)
1042+
const component = new Function(
1043+
'_withAsyncContext',
1044+
`${content.replace(/^import .*\n/, '')};return _sfc_`,
1045+
)((getAwaitable: () => unknown) => [getAwaitable(), () => {}])
1046+
await expect(component.setup({}, { expose() {} })).resolves.toEqual({})
1047+
})
10291048
})
10301049

10311050
describe('errors', () => {

‎packages/compiler-sfc/src/compileScript.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ export function compileScript(
669669
)
670670
}
671671
},
672-
exit(node: Node) {
672+
leave(node: Node) {
673673
if (node.type === 'BlockStatement') scope.pop()
674674
},
675675
})

0 commit comments

Comments
 (0)