/*
 * 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 if captured is true then no promotion/demotion is
 * performed
 *
 * @author sgrekhov@unipro.ru
 */

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

Function? f;
main() {
  A x = new T();
  if (x is B) {
    if (x is T) {
      x.foo();
      void func(var v) {
        x = v;
      }
      f = func;
      x = new B();
      x.bar();
//      ^^^
// [analyzer] unspecified
// [cfe] unspecified
    }
  }
}
