library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/issue40242.dart:9:5: Error: Can't assign to 'this'.
//     this = new C();
//     ^^^^
//
// pkg/front_end/testcases/general/issue40242.dart:15:3: Error: Can't assign to the final variable 'c1'.
//   c1 = new C();
//   ^^
//
// pkg/front_end/testcases/general/issue40242.dart:16:3: Error: Can't assign to a type literal.
//   C = Object;
//   ^
//
// pkg/front_end/testcases/general/issue40242.dart:18:6: Error: Can't assign to a parenthesized expression.
//   (c2) = new C();
//      ^
//
// pkg/front_end/testcases/general/issue40242.dart:20:3: Error: Can't assign to the const variable 'c3'.
//   c3 = null;
//   ^^
//
import self as self;
import "dart:core" as core;

class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
}
extension E on self::C {
  method errors = self::E|errors;
  tearoff errors = self::E|get#errors;
}
static method E|errors(lowered final self::C #this) → dynamic {
  invalid-expression "pkg/front_end/testcases/general/issue40242.dart:9:5: Error: Can't assign to 'this'.
    this = new C();
    ^^^^";
}
static method E|get#errors(lowered final self::C #this) → () → dynamic
  return () → dynamic => self::E|errors(#this);
static method errors() → dynamic {
  final self::C c1 = new self::C::•();
  invalid-expression "pkg/front_end/testcases/general/issue40242.dart:15:3: Error: Can't assign to the final variable 'c1'.
  c1 = new C();
  ^^";
  invalid-expression "pkg/front_end/testcases/general/issue40242.dart:16:3: Error: Can't assign to a type literal.
  C = Object;
  ^";
  self::C c2;
  invalid-expression "pkg/front_end/testcases/general/issue40242.dart:18:6: Error: Can't assign to a parenthesized expression.
  (c2) = new C();
     ^";
  invalid-expression "pkg/front_end/testcases/general/issue40242.dart:20:3: Error: Can't assign to the const variable 'c3'.
  c3 = null;
  ^^";
}
static method main() → dynamic {}
