library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/issue43276.dart:6:14: Error: Optional parameter 'i' should have a default value because its type 'int' doesn't allow null.
//   C.gen({int i}); // error
//              ^
//
// pkg/front_end/testcases/nnbd/issue43276.dart:8:23: Error: Optional parameter 'i' should have a default value because its type 'int' doesn't allow null.
//   factory C.fact({int i}) /* error */ {
//                       ^
//
import self as self;
import "dart:core" as core;

class C extends core::Object {
  static field dynamic _redirecting# = <dynamic>[self::C::redirect]/*isLegacy*/;
  constructor gen({core::int i = #C1}) → self::C
    : super core::Object::•()
    ;
  static factory fact({core::int i = #C1}) → self::C {
    return new self::C::gen();
  }
  static factory redirect({core::int i = #C1}) → self::C
    let<BottomType> #redirecting_factory = self::C::gen in invalid-expression;
}
class D extends core::Object {
  synthetic constructor •() → self::D
    : super core::Object::•()
    ;
}
static method main() → dynamic {}

constants  {
  #C1 = null
}
