library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/nullable_param.dart:4:7: Error: The non-abstract class 'Foo' is missing implementations for these members:
//  - Foo.bar
// Try to either
//  - provide an implementation,
//  - inherit an implementation from a superclass or mixin,
//  - mark the class as abstract, or
//  - provide a 'noSuchMethod' implementation.
//
// class Foo {
//       ^^^
// pkg/front_end/testcases/nnbd/nullable_param.dart:6:8: Context: 'Foo.bar' is defined here.
//   int? bar(int? x);
//        ^^^
//
import self as self;
import "dart:core" as core;

class Foo extends core::Object {
  field core::int? field = null;
  synthetic constructor •() → self::Foo*
    : super core::Object::•()
    ;
  abstract method bar(core::int? x) → core::int?;
}
static method main() → dynamic {
  self::Foo foo = new self::Foo::•();
  foo.{self::Foo::field} = 5;
  foo.{self::Foo::bar}(6);
  self::test_nullable_function_type_formal_param(f: () → core::int* => 2);
}
static method test_nullable_function_type_formal_param({() →* core::int f = #C1}) → core::int {
  return let final core::int #t1 = f.call() in #t1.==(null) ?{core::int*} 1.{core::int::unary-}() : #t1;
}

constants  {
  #C1 = null
}
