| // 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. |
| // |
| // Regression test for dartbug.com/35887. |
| // |
| // The call specializer inserts a "CheckNull" into main() here, but CheckNull |
| // was broken in JIT because it didn't create a deopt-info to hold the |
| // environment in case the it was inside a try/catch block. |
| // |
| // VMOptions=--optimization_counter_threshold=10 --no-background-compilation |
| |
| import 'package:expect/expect.dart'; |
| |
| class Value { |
| const Value(this.val); |
| |
| final int val; |
| } |
| |
| const int limit = 50; |
| |
| Value maybeWrap(int i) => i < limit ? new Value(i) : null; |
| |
| Future<void> test() async { |
| for (int i = 0; i < 60; ++i) { |
| if (maybeWrap(i).val == -1) { |
| // never mind we just do something with it |
| print(i); |
| } |
| } |
| } |
| |
| void main() { |
| test().catchError((e) {}); |
| } |