Files
sdk/pkg/analysis_server/lib
Paul Berry 8034e84ed1 [analysis_server] Improve how ConvertToInitializingFormal modifies parameters.
Previously, changing an ordinary formal parameter like `required int
x`, to an initializing formal parameter like `required this.x`, was
done using a single edit that replaced the entire AST node with a
newly constructed one.

This had the unfortunate disadvantage that if the formal parameter had
any annotations, (like `@visibleForTesting`), they would be removed.

The new technique is to make 3 edits:

- Insert `this.` before the name.

- If the field name is different, replace the parameter name with the
  field name (this handles migration to the "private named parameters"
  feature).

- If the parameter has an explicit type, and that type is the same as
  the field's type, delete it.

Since I was in the neighborhood, I also generalized the code so that
it handles old-style function-typed parameters. Even though those have
fallen out of favor, the generalization was pretty easy: I just
changed the code to handle `NormalFormalParameter` rather than
`SimpleFormalParameter`, and in the case where the parameter is a
`FunctionTypedFormalParameter`, make sure to delete the parameters as
well.

Fixes https://github.com/dart-lang/sdk/issues/62764.

Change-Id: I6a6a69642291c5c4cc639725f6a36cb884f6d9bd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/483841
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2026-02-26 12:23:59 -08:00
..