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`] = `
|
exports[`SFC compile <script setup> async/await detection nested await 1`] = `
|
||||||
"import { withAsyncContext as _withAsyncContext } from 'vue'
|
"import { withAsyncContext as _withAsyncContext } from 'vue'
|
||||||
|
|
||||||
|
@ -1195,6 +1195,59 @@ const emit = defineEmits(['a', 'b'])
|
|||||||
assertAwaitDetection(`if (ok) { await foo } else { await bar }`)
|
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', () => {
|
test('should ignore await inside functions', () => {
|
||||||
// function declaration
|
// function declaration
|
||||||
assertAwaitDetection(`async function foo() { await bar }`, false)
|
assertAwaitDetection(`async function foo() { await bar }`, false)
|
||||||
|
Loading…
Reference in New Issue
Block a user