fix(compiler-sfc): add test for #5808
This commit is contained in:
parent
6c3b681d23
commit
a0290fe781
@ -194,6 +194,173 @@ return { }
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`SFC compile <script setup> async/await detection multiple \`if for\` nested statements 1`] = `
|
||||
"import { withAsyncContext as _withAsyncContext } from 'vue'
|
||||
|
||||
export default {
|
||||
async setup(__props, { expose }) {
|
||||
expose();
|
||||
|
||||
let __temp, __restore
|
||||
if (ok) {
|
||||
for (let a of [1,2,3]) {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => a)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
}
|
||||
for (let a of [1,2,3]) {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => a)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
;(
|
||||
([__temp,__restore] = _withAsyncContext(() => a)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
}
|
||||
}
|
||||
return { }
|
||||
}
|
||||
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`SFC compile <script setup> async/await detection multiple \`if while\` nested statements 1`] = `
|
||||
"import { withAsyncContext as _withAsyncContext } from 'vue'
|
||||
|
||||
export default {
|
||||
async setup(__props, { expose }) {
|
||||
expose();
|
||||
|
||||
let __temp, __restore
|
||||
if (ok) {
|
||||
while (d) {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => 5)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
}
|
||||
while (d) {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => 5)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
;(
|
||||
([__temp,__restore] = _withAsyncContext(() => 6)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
if (c) {
|
||||
let f = 10
|
||||
10 + (
|
||||
([__temp,__restore] = _withAsyncContext(() => 7)),
|
||||
__temp = await __temp,
|
||||
__restore(),
|
||||
__temp
|
||||
)
|
||||
} else {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => 8)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
;(
|
||||
([__temp,__restore] = _withAsyncContext(() => 9)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
return { }
|
||||
}
|
||||
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`SFC compile <script setup> async/await detection multiple \`if\` nested statements 1`] = `
|
||||
"import { withAsyncContext as _withAsyncContext } from 'vue'
|
||||
|
||||
export default {
|
||||
async setup(__props, { expose }) {
|
||||
expose();
|
||||
|
||||
let __temp, __restore
|
||||
if (ok) {
|
||||
let a = 'foo'
|
||||
;(
|
||||
([__temp,__restore] = _withAsyncContext(() => 0)),
|
||||
__temp = await __temp,
|
||||
__restore(),
|
||||
__temp
|
||||
) + (
|
||||
([__temp,__restore] = _withAsyncContext(() => 1)),
|
||||
__temp = await __temp,
|
||||
__restore(),
|
||||
__temp
|
||||
)
|
||||
;(
|
||||
([__temp,__restore] = _withAsyncContext(() => 2)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
} else if (a) {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => 10)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
if (b) {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => 0)),
|
||||
__temp = await __temp,
|
||||
__restore(),
|
||||
__temp
|
||||
) + (
|
||||
([__temp,__restore] = _withAsyncContext(() => 1)),
|
||||
__temp = await __temp,
|
||||
__restore(),
|
||||
__temp
|
||||
)
|
||||
} else {
|
||||
let a = 'foo'
|
||||
;(
|
||||
([__temp,__restore] = _withAsyncContext(() => 2)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
}
|
||||
if (b) {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => 3)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
;(
|
||||
([__temp,__restore] = _withAsyncContext(() => 4)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
(
|
||||
([__temp,__restore] = _withAsyncContext(() => 5)),
|
||||
await __temp,
|
||||
__restore()
|
||||
)
|
||||
}
|
||||
return { }
|
||||
}
|
||||
|
||||
}"
|
||||
`;
|
||||
|
||||
exports[`SFC compile <script setup> async/await detection nested await 1`] = `
|
||||
"import { withAsyncContext as _withAsyncContext } from 'vue'
|
||||
|
||||
|
@ -1195,6 +1195,59 @@ const emit = defineEmits(['a', 'b'])
|
||||
assertAwaitDetection(`if (ok) { await foo } else { await bar }`)
|
||||
})
|
||||
|
||||
test('multiple `if` nested statements', () => {
|
||||
assertAwaitDetection(`if (ok) {
|
||||
let a = 'foo'
|
||||
await 0 + await 1
|
||||
await 2
|
||||
} else if (a) {
|
||||
await 10
|
||||
if (b) {
|
||||
await 0 + await 1
|
||||
} else {
|
||||
let a = 'foo'
|
||||
await 2
|
||||
}
|
||||
if (b) {
|
||||
await 3
|
||||
await 4
|
||||
}
|
||||
} else {
|
||||
await 5
|
||||
}`)
|
||||
})
|
||||
|
||||
test('multiple `if while` nested statements', () => {
|
||||
assertAwaitDetection(`if (ok) {
|
||||
while (d) {
|
||||
await 5
|
||||
}
|
||||
while (d) {
|
||||
await 5
|
||||
await 6
|
||||
if (c) {
|
||||
let f = 10
|
||||
10 + await 7
|
||||
} else {
|
||||
await 8
|
||||
await 9
|
||||
}
|
||||
}
|
||||
}`)
|
||||
})
|
||||
|
||||
test('multiple `if for` nested statements', () => {
|
||||
assertAwaitDetection(`if (ok) {
|
||||
for (let a of [1,2,3]) {
|
||||
await a
|
||||
}
|
||||
for (let a of [1,2,3]) {
|
||||
await a
|
||||
await a
|
||||
}
|
||||
}`)
|
||||
})
|
||||
|
||||
test('should ignore await inside functions', () => {
|
||||
// function declaration
|
||||
assertAwaitDetection(`async function foo() { await bar }`, false)
|
||||
|
Loading…
Reference in New Issue
Block a user