// 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 x is declared with an explicit type then
/// promotion via initialization does not happen.
///
/// @author sgrekhov@unipro.ru


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

main() {
  S x;
  x = new T();
  x.foo();
//  ^^^
// [analyzer] unspecified
// [cfe] unspecified
}
