// 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.
///
/// @description Check that legacy variable can be declared 'late'
/// @author sgrekhov@unipro.ru

// Requirements=nnbd-weak
import "legacy_lib.dart";

class X {
  static late final A s1;
  static late A s2;

  late final A v1;
  late A v2;
}

late final A g1;
late A g2;

main() {
  late final A l1;
  late A l2;

  X.s1 = new A();
  X.s2 = new A();

  X x = new X();
  x.v1 = new A();
  x.v2 = new A();

  g1 = new A();
  g2 = new A();

  l1 = new A();
  l2 = new A();
}
