/*
 * 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 promoted is not empty then promotion via
 * initialization does not happen.
 *
 * @author sgrekhov@unipro.ru
 */
// Requirements=nnbd-strong
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);
  }
}
