// 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);
  }
}
