/*
 * 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.
 */
/**
 * @assertion We say that a variable x is promotable via initialization given
 * variable model VM if x is a local variable (not a formal parameter) and:
 *
 *  VM = VariableModel(declared, promoted, tested, assigned, unassigned,
 *    captured)
 *  and captured is false
 *  and promoted is empty
 *  and x is declared with no explicit type and no initializer
 *  and assigned is false and unassigned is true
 *
 * @description Checks that if assigned is true and unassigned is false then
 * promotion via initialization does not happen.
 *
 * @author sgrekhov@unipro.ru
 * @issue 41669
 */
// Requirements=nnbd-strong
import "../../../Utils/expect.dart";

class S {}
class T extends S {
  int foo() => 42;
}

main() {
  var x;
  x = new S();
  x = new T();
  Expect.equals(42, x.foo());
}
