library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/null_aware2.dart:7:14: Error: Field 'staticField' should be initialized because its type 'int' doesn't allow null.
//   static int staticField;
//              ^^^^^^^^^^^
//
// pkg/front_end/testcases/general/null_aware2.dart:13:3: Warning: The class 'Foo' cannot be null.
// Try replacing '?.' with '.'
//   Foo?.staticField = 5;
//   ^^^
//
// pkg/front_end/testcases/general/null_aware2.dart:17:3: Warning: The class 'Foo' cannot be null.
// Try replacing '?.' with '.'
//   Foo?.staticField ??= 5;
//   ^^^
//
// pkg/front_end/testcases/general/null_aware2.dart:12:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
//   foo?.field = 5;
//   ^
//
// pkg/front_end/testcases/general/null_aware2.dart:14:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
//   foo.field ??= 5;
//       ^
//
// pkg/front_end/testcases/general/null_aware2.dart:15:7: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
//   Foo.staticField ??= 5;
//       ^
//
// pkg/front_end/testcases/general/null_aware2.dart:16:3: Warning: Operand of null-aware operation '?.' has type 'Foo' which excludes null.
//  - 'Foo' is from 'pkg/front_end/testcases/general/null_aware2.dart'.
//   foo?.field ??= 5;
//   ^
//
// pkg/front_end/testcases/general/null_aware2.dart:17:8: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
//   Foo?.staticField ??= 5;
//        ^
//
// pkg/front_end/testcases/general/null_aware2.dart:19:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
//   int intValue = foo.field ?? 6;
//                      ^
//
// pkg/front_end/testcases/general/null_aware2.dart:20:22: Warning: Operand of null-aware operation '??' has type 'int' which excludes null.
//   num numValue = foo.field ?? 4.5;
//                      ^
//
// pkg/front_end/testcases/general/null_aware2.dart:6:7: Error: Field 'field' should be initialized because its type 'int' doesn't allow null.
//   int field;
//       ^^^^^
//
import self as self;
import "dart:core" as core;

class Foo extends core::Object {
  field core::int field = null;
  static field core::int staticField = null;
  synthetic constructor •() → self::Foo
    : super core::Object::•()
    ;
}
static method test() → dynamic {
  self::Foo foo = new self::Foo::•();
  let final self::Foo #t1 = foo in #t1 == null ?{core::int?} null : #t1.{self::Foo::field} = 5;
  self::Foo::staticField = 5;
  let final self::Foo #t2 = foo in #t2.{self::Foo::field}{core::int} == null ?{core::int} #t2.{self::Foo::field} = 5 : null;
  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
  let final self::Foo #t3 = foo in #t3 == null ?{core::int?} null : #t3.{self::Foo::field}{core::int} == null ?{core::int} #t3.{self::Foo::field} = 5 : null;
  self::Foo::staticField == null ?{core::int} self::Foo::staticField = 5 : null;
  core::int intValue = let final core::int #t4 = foo.{self::Foo::field}{core::int} in #t4 == null ?{core::int} 6 : #t4;
  core::num numValue = let final core::int #t5 = foo.{self::Foo::field}{core::int} in #t5 == null ?{core::num} 4.5 : #t5;
}
static method main() → dynamic {}
