// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // VMOptions= // VMOptions=--dwarf_stack_traces --no-retain_function_objects --no-retain_code_objects import 'dart:async' as async; import 'lib.dart' as l; // Minimal library containing "int async;". // Adapted from Analyzer test testing where `async` was not previously allowed. // Helpers void ignore(argument) {} class GNamed { void g({Object? async = null}) {} } class AGet { int get async => 1; set async(int i) {} } class ACall { int async() => 1; } main() { // Each test declares a spearate async function, tests that `async` // can occur in it, and makes sure the function is run. { const int async = 0; f() async { g(@async x) {} g(0); } f(); } { f(c) async { c.g(async: 0); } f(GNamed()); } { f() async { var async = 1; ignore(async); } f(); } { f() async* { var async = 1; ignore(async); } f().forEach(ignore); } { f() async { async: while (true) { break async; } } f(); } { g() {} f() async { try { g(); } catch (async) {} } f(); } { g() {} f() async { try { g(); } catch (e, async) {} } f(); } { f() async { async: while (true) { if (false) continue async; break; } } f(); } { var async; f() async { for (async in []) {} } f(); } { f() async { g(int async) {} g(0); } f(); } { f() async { return new AGet().async; } f(); } { f() async { return new ACall().async(); } f(); } { f() async { return new ACall()..async(); } f(); } { g() {} f() async { async: g(); } f(); } { f() async { int async() => 0; async(); } f(); } { f() async { return async.Future.value(0); } f(); } { f() async { new AGet().async = 1; } f(); } { f() async { return new AGet()..async = 1; } f(); } { int async = 1; f() async { return "$async"; } f(); } { f() async { return l.async; } f(); } { f() async { switch (0) { async: case 0: break; } } f(); } { f() sync* { var async = 1; ignore(async); } f(); } }