library;
//
// Problems in library:
//
// pkg/front_end/testcases/nnbd/assignment_final.dart:31:3: Error: Can't assign to the final variable 'initializedFinal'.
//   initializedFinal = x; // Error
//   ^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/assignment_final.dart:32:3: Error: Can't assign to the final variable 'initializedLateFinal'.
//   initializedLateFinal = x; // Error
//   ^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/assignment_final.dart:37:3: Error: Final variable 'definitelyAssignedFinal' might already be assigned at this point.
//   definitelyAssignedFinal = y; // Error
//   ^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/assignment_final.dart:38:3: Error: Late final variable 'definitelyAssignedLateFinal' definitely assigned.
//   definitelyAssignedLateFinal = z; // Error
//   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// pkg/front_end/testcases/nnbd/assignment_final.dart:40:3: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
//   notDefinitelyAssignedFinal = z; // Error
//   ^^^^^^^^^^^^^^^^^^^^^^^^^^
//
import self as self;
import "dart:core" as core;

class Class extends core::Object {
  field dynamic field1 = null;
  field dynamic field2 = null;
  synthetic constructor •() → self::Class
    : super core::Object::•()
    ;
}
static method method(dynamic x, dynamic y, dynamic z) → dynamic {
  final core::int initializedFinal = 5;
  late final core::int initializedLateFinal = 5;
  final dynamic definitelyUnassignedFinal;
  late final core::int definitelyUnassignedLateFinal;
  final dynamic definitelyAssignedFinal;
  late final dynamic definitelyAssignedLateFinal;
  final core::int notDefinitelyAssignedFinal;
  late final core::int notDefinitelyAssignedLateFinal;
  if(x =={core::Object::==}{(core::Object) → core::bool} 5) {
    notDefinitelyAssignedFinal = 5;
    notDefinitelyAssignedLateFinal = 15;
  }
  definitelyAssignedFinal = 10;
  definitelyAssignedLateFinal = 20;
  invalid-expression "pkg/front_end/testcases/nnbd/assignment_final.dart:31:3: Error: Can't assign to the final variable 'initializedFinal'.
  initializedFinal = x; // Error
  ^^^^^^^^^^^^^^^^";
  invalid-expression "pkg/front_end/testcases/nnbd/assignment_final.dart:32:3: Error: Can't assign to the final variable 'initializedLateFinal'.
  initializedLateFinal = x; // Error
  ^^^^^^^^^^^^^^^^^^^^";
  definitelyUnassignedFinal = x;
  definitelyUnassignedLateFinal = y as{TypeError,ForDynamic} core::int;
  invalid-expression "pkg/front_end/testcases/nnbd/assignment_final.dart:37:3: Error: Final variable 'definitelyAssignedFinal' might already be assigned at this point.
  definitelyAssignedFinal = y; // Error
  ^^^^^^^^^^^^^^^^^^^^^^^" in definitelyAssignedFinal = y;
  invalid-expression "pkg/front_end/testcases/nnbd/assignment_final.dart:38:3: Error: Late final variable 'definitelyAssignedLateFinal' definitely assigned.
  definitelyAssignedLateFinal = z; // Error
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^" in definitelyAssignedLateFinal = z;
  invalid-expression "pkg/front_end/testcases/nnbd/assignment_final.dart:40:3: Error: Final variable 'notDefinitelyAssignedFinal' might already be assigned at this point.
  notDefinitelyAssignedFinal = z; // Error
  ^^^^^^^^^^^^^^^^^^^^^^^^^^" in notDefinitelyAssignedFinal = z as{TypeError,ForDynamic} core::int;
  notDefinitelyAssignedLateFinal = z as{TypeError,ForDynamic} core::int;
}
