| // 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. |
| |
| /// @assertion The modifier late is added as a built-in identifier. The grammar |
| /// of top level variables, static fields, instance fields, and local variables |
| /// is extended to allow any declaration to include the modifier late. |
| /// |
| /// @description Check that declaration of any top level variables, static |
| /// fields, instance fields, and local variables cab be extended by 'late' |
| /// modifier |
| /// @author sgrekhov@unipro.ru |
| |
| import "../../Utils/expect.dart"; |
| |
| class A { |
| static final instance = new C(); |
| } |
| |
| class C { |
| static late String staticVar1 = "staticVar1"; |
| static late final staticVar2 = "staticVar2"; |
| static late var staticVar3 = "staticVar3"; |
| |
| late String instanceVar1 = "instanceVar1"; |
| late final instanceVar2 = "instanceVar2"; |
| late var instanceVar3 = "instanceVar3"; |
| |
| covariant late C instanceVar4 = A.instance; |
| covariant late var instanceVar5 = A.instance; |
| } |
| |
| late String globalVar1 = "globalVar1"; |
| late final globalVar2 = "globalVar2"; |
| late var globalVar3 = "globalVar3"; |
| |
| main() { |
| late String localVar1 = "localVar1"; |
| late final localVar2 = "localVar2"; |
| late var localVar3 = "localVar3"; |
| |
| Expect.equals("staticVar1", C.staticVar1); |
| Expect.equals("staticVar2", C.staticVar2); |
| Expect.equals("staticVar3", C.staticVar3); |
| Expect.equals("instanceVar1", A.instance.instanceVar1); |
| Expect.equals("instanceVar2", A.instance.instanceVar2); |
| Expect.equals("instanceVar3", A.instance.instanceVar3); |
| Expect.equals(A.instance, A.instance.instanceVar4); |
| Expect.equals(A.instance, A.instance.instanceVar5); |
| Expect.equals("localVar1", localVar1); |
| Expect.equals("localVar2", localVar2); |
| Expect.equals("localVar3", localVar3); |
| } |