// Copyright (c) 2021, 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 promoted is not empty then promotion via
 * initialization does not happen.
 *
 * @author sgrekhov@unipro.ru
 */
// Requirements=nnbd-weak
import '../../../../Utils/expect.dart';

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

main() {
  var x;
  if (x is S) {
    x = new T();
    Expect.throws(() {
      x.g();
    }, (e) => e is NoSuchMethodError);
  }
}
