|  | // Copyright (c) 2014, 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=--optimization-counter-threshold=10 --no-background-compilation | 
|  |  | 
|  | // This tests that captured parameters (by the async-closure) are | 
|  | // correctly treated in try-catch generated in the async function. | 
|  | // They must be skipped when generating sync-code in the optimized | 
|  | // try-block. | 
|  |  | 
|  | import 'package:expect/expect.dart'; | 
|  |  | 
|  | import 'dart:async'; | 
|  |  | 
|  | fail() { | 
|  | try { | 
|  | Expect.isTrue(false); | 
|  | } finally {} | 
|  | } | 
|  |  | 
|  | foo(i) async { | 
|  | var k = await 77; | 
|  | var a = "abc${k}"; | 
|  | if (a != "abc77") fail(); | 
|  | return k; | 
|  | } | 
|  |  | 
|  | main() { | 
|  | for (int i = 0; i < 20; i++) { | 
|  | foo(i).then((value) => Expect.equals(77, value)); | 
|  | } | 
|  | } |