}"
`;
+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'
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)