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

class A extends core::Object {
  field core::bool v1;
  field core::num v2;
  constructor •(core::bool v1, core::num v2) → self::A
    : self::A::v1 = v1, self::A::v2 = v2, super core::Object::•()
    ;
}
class M1 extends core::Object {
  field core::num v2 = 1.{core::int::unary-}(){() → core::int};
  synthetic constructor •() → self::M1
    : super core::Object::•()
    ;
}
class C extends self::A implements self::M1 /*isEliminatedMixin*/  {
  field core::num v2 = 1.{core::int::unary-}(){() → core::int};
  synthetic constructor •(core::bool v1, core::num v2) → self::C
    : super self::A::•(v1, v2)
    ;
}
static method main() → dynamic {
  self::C c = new self::C::•(true, 2);
  self::expect(true, c.{self::A::v1}{core::bool});
  self::expect(1.{core::int::unary-}(){() → core::int}, c.{self::C::v2}{core::num});
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
    throw "Expected ${expected}, actual ${actual}";
}


Extra constant evaluation status:
Evaluated: InstanceInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:14:12 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:14:12 -> IntConstant(-1)
Evaluated: InstanceInvocation @ org-dartlang-testcase:///implicit_constructor_02.dart:22:10 -> IntConstant(-1)
Extra constant evaluation: evaluated: 22, effectively constant: 3
