[dart-lang/sdk] b78ce3: [cfe][PrimaryConstructors] Handle assignment to pr...

0 views
Skip to first unread message

johnniwinther

unread,
Jun 18, 2026, 9:06:25 AM (23 hours ago) Jun 18
to com...@dartlang.org
Branch: refs/heads/main
Home: https://github.com/dart-lang/sdk
Commit: b78ce3604b562780392075d0239f87c8995197fb
https://github.com/dart-lang/sdk/commit/b78ce3604b562780392075d0239f87c8995197fb
Author: Johnni Winther <johnni...@google.com>
Date: 2026-06-18 (Thu, 18 Jun 2026)

Changed paths:
M pkg/front_end/lib/src/builder/formal_parameter_builder.dart
M pkg/front_end/lib/src/kernel/body_builder.dart
M pkg/front_end/testcases/extension_types/with_dependencies/issue53209_2/main.dart.strong.expect
M pkg/front_end/testcases/extension_types/with_dependencies/issue53209_2/main.dart.strong.modular.expect
M pkg/front_end/testcases/extension_types/with_dependencies/issue53209_2/main.dart.strong.outline.expect
M pkg/front_end/testcases/extension_types/with_dependencies/issue53209_2/main.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/class_primary_declaring_parameters.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/class_primary_declaring_parameters.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/class_primary_declaring_parameters.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/class_primary_declaring_parameters.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/const_class.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/const_class.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/const_class.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/const_class.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/const_parameters.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/const_parameters.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/const_parameters.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/const_parameters.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/duplicate_initialization.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/duplicate_initialization.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/duplicate_initialization.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/duplicate_initialization.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_constructor.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_constructor.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_constructor.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_constructor.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_declaring_parameters.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_declaring_parameters.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_declaring_parameters.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/enum_primary_declaring_parameters.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/field_initializers.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/field_initializers.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/field_initializers.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/field_initializers.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/fields.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/fields.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/fields.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/fields.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/generic_primary_constructor.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/generic_primary_constructor.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/generic_primary_constructor.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/generic_primary_constructor.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/inferred_type.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/inferred_type.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/inferred_type.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/inferred_type.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors_pre_feature.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors_pre_feature.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors_pre_feature.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/invalid_primary_constructors_pre_feature.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/issue62935.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/issue62935.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/issue62935.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/issue62935.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/issue63506.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/issue63506.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/issue63506.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/issue63506.dart.strong.transformed.expect
A pkg/front_end/testcases/primary_constructors/issue63507.dart
A pkg/front_end/testcases/primary_constructors/issue63507.dart.strong.expect
A pkg/front_end/testcases/primary_constructors/issue63507.dart.strong.modular.expect
A pkg/front_end/testcases/primary_constructors/issue63507.dart.strong.outline.expect
A pkg/front_end/testcases/primary_constructors/issue63507.dart.strong.transformed.expect
A pkg/front_end/testcases/primary_constructors/issue63507.dart.textual_outline.expect
A pkg/front_end/testcases/primary_constructors/issue63507.dart.textual_outline_modelled.expect
A pkg/front_end/testcases/primary_constructors/issue63507b.dart
A pkg/front_end/testcases/primary_constructors/issue63507b.dart.strong.expect
A pkg/front_end/testcases/primary_constructors/issue63507b.dart.strong.modular.expect
A pkg/front_end/testcases/primary_constructors/issue63507b.dart.strong.outline.expect
A pkg/front_end/testcases/primary_constructors/issue63507b.dart.strong.transformed.expect
A pkg/front_end/testcases/primary_constructors/issue63507b.dart.textual_outline.expect
A pkg/front_end/testcases/primary_constructors/issue63507b.dart.textual_outline_modelled.expect
M pkg/front_end/testcases/primary_constructors/mixin_class_field_initializer.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/mixin_class_field_initializer.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/mixin_class_field_initializer.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/mixin_class_field_initializer.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/parameter_assignment.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/parameter_assignment.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/parameter_assignment.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/parameter_assignment.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/parameter_scope.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/parameter_scope.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/parameter_scope.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/parameter_scope.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/parameter_type_inference.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/parameter_type_inference.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/parameter_type_inference.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/parameter_type_inference.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/parameters.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/parameters.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/parameters.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/parameters.dart.strong.transformed.expect
M pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.expect
M pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.modular.expect
M pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.outline.expect
M pkg/front_end/testcases/primary_constructors/wildcards.dart.strong.transformed.expect
A tests/language/primary_constructors/parameter_assignment_error_test.dart
A tests/language/primary_constructors/parameter_assignment_test.dart

Log Message:
-----------
[cfe][PrimaryConstructors] Handle assignment to primary constructor parameters

This CL updates the handling of non-declaring primary constructor parameters. This are not assignable within the constructor initializer list (and with that, the field initializer of non-late instance fields) but *are* assignable in the primary constructor body.

The CL removes the marking of this parameters as final and instead handles the special-casing of their assignability in the body build lookup mechanism.

Views of the CL:
- Base->Patchset 7: Added expectations tests, including previous expectations, added language tests with intended expectations
- Patchset 7->Patchset 8: Fix + expectations update of related tests
- Patchset 8->Patchset 9: Expectations update of unrelated tests

Closes #63507

Change-Id: I6b50c12cbfa90e4b0e5f4242990c1529e8bbff19
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/508940
SLSA-Policy-Verified: SLSA Policy Verification Service <devtools-gerritco...@google.com>
Commit-Queue: Johnni Winther <johnni...@google.com>
Reviewed-by: Paul Berry <paul...@google.com>



To unsubscribe from these emails, change your notification settings at https://github.com/dart-lang/sdk/settings/notifications

johnniwinther

unread,
Jun 18, 2026, 10:08:16 AM (22 hours ago) Jun 18
to com...@dartlang.org
Branch: refs/heads/lkgr
Reply all
Reply to author
Forward
0 new messages