/*
 * 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 demotable via assignment of an
 * expression of type T given variable model VM if
 *
 *  VM = VariableModel(declared, promoted, tested, assigned, unassigned,
 *  captured)
 *  and captured is false
 *  and declared::promoted contains a type S such that T is S or T is NonNull(S)
 *
 * @description Checks that a variable is demotable to the type T if all
 * requirements above are met.
 *
 * @author sgrekhov@unipro.ru
 */

class A {}
class B extends A {
  int bar() => 42;
}
class T extends B {
  int foo() => 42;
}

main() {
  A x = new T();
  if (x is B) {
    if (x is T) {
      x.foo();
      x = new B();
      x.bar();
      x.foo();
//      ^^^
// [analyzer] unspecified
// [cfe] unspecified
    }
  }
}
