Files
Kallen Tu 2edcad4892 [tests] Primary constructors: Format and generate errors for all tests.
Cleaned up and formatted the tests, regenerated some errors where they were "unspecified", and removed the experiment flag enabling in each test.

Bug: https://github.com/dart-lang/sdk/issues/61687
Change-Id: Ic5b652af660cbc4f71731b1547c7a58c7726faca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/503500
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2026-05-18 10:00:37 -07:00

98 lines
3.8 KiB
Dart

// Copyright (c) 2026, 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.
// A compile-time error occurs if an assignment to a primary parameter occurs
// in the initializing expression of a non-late instance variable.
class C(int x, Object? z) {
Record y = (
++x,
//^
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
--x,
//^
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
x++,
// [error column 5, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
x--,
// [error column 5, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
x = 2,
// [error column 5, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
x += 2,
// [error column 5, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
x -= 2,
// [error column 5, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
(x) = 2,
// [error column 6, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
[x] = [2],
// [error column 6, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
{null: x} = {null: 2},
// ^
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
(x, name: _) = (2, name: true),
// [error column 6, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
(x && z) = 2,
// [error column 6, length 1]
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
// ^
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
int(runtimeType: z) = 2,
// ^
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
);
}
// A compile-time error occurs if an assignment to a primary parameter occurs
// in the initializer list of the body part of a primary constructor.
class C2(int x) {
int y;
this : y = x++;
// ^
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
}
class C3(int x) {
this : assert(x++ == 2);
// ^
// [analyzer] COMPILE_TIME_ERROR.ASSIGNMENT_TO_PRIMARY_CONSTRUCTOR_PARAMETER
// [cfe] A primary constructor parameter can't be assigned to in an initializer.
}