library test /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

typedef F<contravariant T extends core::Object? = dynamic> = (T%) → void;
class C<T extends core::Object? = dynamic> extends core::Object {
  field (self::C::T%) → void y = throw "";
  synthetic constructor •() → self::C<self::C::T%>
    : super core::Object::•()
    ;
  method f(covariant-by-class self::C::T% value) → void {
    let final self::C::T% #t1 = value in this.{self::C::y}{(self::C::T%) → void}(#t1){(self::C::T%) → void};
  }
}
static method g(self::C<core::num> c) → void {
  let final self::C<core::num> #t2 = c in let final core::double #t3 = 1.5 in (#t2.{self::C::y}{(core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} (core::num) → void)(#t3){(core::num) → void};
}
static method main() → void {}


Extra constant evaluation status:
Evaluated: VariableGet @ org-dartlang-testcase:///contravariant_getter.dart:18:45 -> DoubleConstant(1.5)
Extra constant evaluation: evaluated: 15, effectively constant: 1
