| // Copyright (c) 2020, 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. |
| |
| // This test checks for compile-time errors and their absence for some use cases |
| // of late fields and variables. |
| |
| class A { |
| int a = 42; |
| late int b = (this.a * 2) >> 1; // Ok. |
| |
| foo(late int x) {} |
| } |
| |
| bar(late int x) {} |
| |
| baz() { |
| try { |
| throw "baz"; |
| } on dynamic catch (late e, late t) {} |
| for (late int i = 0; i < 10; ++i) { |
| print("baz"); |
| } |
| for (late String s in ["baz"]) { |
| print(s); |
| } |
| [for (late int i = 0; i < 10; ++i) i]; |
| } |
| |
| hest() async { |
| await for (late String s in new Stream.fromIterable(["hest"])) { |
| print(s); |
| } |
| return "hest"; |
| } |
| |
| fisk() async { |
| late String s1 = await hest(); |
| late String s2 = '${fisk}${await hest()}${fisk}'; |
| late Function f = () async => await hest(); |
| } |
| |
| class B { |
| late final int x = 42; |
| |
| const B(); |
| } |
| |
| class C { |
| late final int x; |
| |
| initVars() { |
| x = 42; // Ok: [x] doesn't have an initializer. |
| } |
| } |
| |
| main() {} |