library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:24:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
//   x?.foo(); // Warning.
//   ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:25:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
//   x?.bar; // Warning.
//   ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:26:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
//   x?.baz = 42; // Warning.
//   ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:27:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
//   x?[42]; // Warning.
//   ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:28:3: Warning: Operand of null-aware operation '?.' has type 'Never' which excludes null.
//   x?[42] = 42; // Warning.
//   ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
// Try correcting the name to the name of an existing method, or defining a method named 'foo'.
//   y.foo(); // Error.
//     ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
// Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
//   y.bar; // Error.
//     ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
// Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
//   y.baz = 42; // Error.
//     ^^^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
// Try correcting the name to the name of an existing method, or defining a method named 'call'.
//   y(); // Error.
//    ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
//   y++; // Error.
//    ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
// Try correcting the operator to an existing operator, or defining a '+' operator.
//   y += 1; // Error.
//     ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
// Try correcting the operator to an existing operator, or defining a '[]' operator.
//   y[42]; // Error.
//    ^
//
// pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
// Try correcting the operator to an existing operator, or defining a '[]=' operator.
//   y[42] = 42; // Error.
//    ^
//
import self as self;
import "dart:core" as core;

static method foo(Never x, Never? y) → dynamic {
  core::String local0 = y.{core::Object::toString}();
  core::int local1 = y.{core::Object::hashCode};
  x.foo();
  x.bar;
  x.baz = 42;
  x.call();
  x.[](42);
  x.[]=(42, 42);
  x = x.+(1);
  x = x.+(1);
  let final Never? #t1 = y in #t1.{core::Object::==}(null) ?{Null} null : #t1{Never}.foo();
  let final Never? #t2 = y in #t2.{core::Object::==}(null) ?{Null} null : #t2{Never}.bar;
  let final Never? #t3 = y in #t3.{core::Object::==}(null) ?{core::int?} null : #t3{Never}.baz = 42;
  let final Never? #t4 = y in #t4.{core::Object::==}(null) ?{Null} null : #t4{Never}.call();
  let final Never? #t5 = y in #t5.{core::Object::==}(null) ?{Null} null : #t5{Never}.[](42);
  let final Never? #t6 = y in #t6.{core::Object::==}(null) ?{core::int?} null : #t6{Never}.[]=(42, 42);
  let final Never #t7 = x in #t7.{core::Object::==}(null) ?{Null} null : #t7.foo();
  let final Never #t8 = x in #t8.{core::Object::==}(null) ?{Null} null : #t8.bar;
  let final Never #t9 = x in #t9.{core::Object::==}(null) ?{core::int?} null : #t9.baz = 42;
  let final Never #t10 = x in #t10.{core::Object::==}(null) ?{Null} null : #t10.[](42);
  let final Never #t11 = x in #t11.{core::Object::==}(null) ?{core::int?} null : #t11.[]=(42, 42);
  invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:30:5: Error: The method 'foo' isn't defined for the class 'Never?'.
Try correcting the name to the name of an existing method, or defining a method named 'foo'.
  y.foo(); // Error.
    ^^^";
  invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:31:5: Error: The getter 'bar' isn't defined for the class 'Never?'.
Try correcting the name to the name of an existing getter, or defining a getter or field named 'bar'.
  y.bar; // Error.
    ^^^";
  invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:32:5: Error: The setter 'baz' isn't defined for the class 'Never?'.
Try correcting the name to the name of an existing setter, or defining a setter or field named 'baz'.
  y.baz = 42; // Error.
    ^^^";
  invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:33:4: Error: The method 'call' isn't defined for the class 'Never?'.
Try correcting the name to the name of an existing method, or defining a method named 'call'.
  y(); // Error.
   ^";
  y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:34:4: Error: The operator '+' isn't defined for the class 'Never?'.
Try correcting the operator to an existing operator, or defining a '+' operator.
  y++; // Error.
   ^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
  y = invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:35:5: Error: The operator '+' isn't defined for the class 'Never?'.
Try correcting the operator to an existing operator, or defining a '+' operator.
  y += 1; // Error.
    ^" as{TypeError,ForDynamic,ForNonNullableByDefault} Never?;
  invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:36:4: Error: The operator '[]' isn't defined for the class 'Never?'.
Try correcting the operator to an existing operator, or defining a '[]' operator.
  y[42]; // Error.
   ^";
  invalid-expression "pkg/front_end/testcases/nnbd/never_receiver.dart:37:4: Error: The operator '[]=' isn't defined for the class 'Never?'.
Try correcting the operator to an existing operator, or defining a '[]=' operator.
  y[42] = 42; // Error.
   ^";
}
static method main() → dynamic {}
