// Copyright (c) 2023, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// Don't move the "Error" comments.
// dart format off

class Class {
  dynamic field1;
  dynamic field2;
}

method(x, y, z) {
  final initializedFinal = 5;
  late final initializedLateFinal = 5;

  final definitelyUnassignedFinal;
  late final int definitelyUnassignedLateFinal;

  final definitelyAssignedFinal;
  late final definitelyAssignedLateFinal;

  final int notDefinitelyAssignedFinal;
  late final int notDefinitelyAssignedLateFinal;

  if (x == 5) {
    notDefinitelyAssignedFinal = 5;
    notDefinitelyAssignedLateFinal = 15;
  }

  definitelyAssignedFinal = 10;
  definitelyAssignedLateFinal = 20;

  (initializedFinal, // Error
      initializedLateFinal, // Error
      definitelyUnassignedFinal) = x; // Ok
  [definitelyUnassignedLateFinal, // Ok
    definitelyAssignedFinal] = y; // Error
  Class(field1: definitelyAssignedLateFinal, // Error
      field2: [[notDefinitelyAssignedFinal, _], // Error
               [_, notDefinitelyAssignedLateFinal]]) = z; // Ok
}
