library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/required.dart:29:8: Error: The parameter 'x' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
// Try adding either an explicit non-'null' default value or the 'required' modifier.
//   foo({x}) {}
//        ^
//
import self as self;
import "dart:core" as core;

typedef Typedef1 = ({a: core::int, required b: core::int}) → dynamic;
typedef Typedef2 = ({a: core::int, required b: core::int}) → dynamic;
class Class extends core::Object {
  synthetic constructor •() → self::Class
    ;
  method method({core::int a = 42, required core::int b = null, required final core::int c = null, required covariant-by-declaration final core::int d = null}) → dynamic
    ;
}
abstract class A extends core::Object {
  synthetic constructor •() → self::A
    ;
  abstract method foo({core::int x = null}) → dynamic;
}
class B extends self::A {
  synthetic constructor •() → self::B
    ;
  method foo({core::int x = null}) → dynamic
    ;
}
class C extends self::A {
  synthetic constructor •() → self::C
    ;
  method foo({core::int x = 42}) → dynamic
    ;
}
static field ({a: core::int, required b: core::int}) → dynamic field;
static method method({has-declared-initializer core::int a, required core::int b, required final core::int c}) → dynamic
  ;
static method ok() → dynamic
  ;
static method error() → dynamic
  ;
static method main() → dynamic
  ;
