dart-lang / dart_style

An opinionated formatter/linter for Dart code
https://pub.dev/packages/dart_style
BSD 3-Clause "New" or "Revised" License
645 stars 117 forks source link

Correct indentation on parameters with both metadata and default values. #1478

Closed munificent closed 3 months ago

munificent commented 3 months ago

The AST node for a parameter with both metadata and a default value looks like:

DefaultValueFormalParameter
  FormalParameter

The inner node has the metadata and the outer one has the default value. Prior to this PR, that meant that we'd create an AssignPiece for the default value whose left-hand side piece was the function parameter and its metadata. That meant that when the metadata split, the outer AssignPiece would be forced to split.

This slightly awkward change makes the piece structure reflect how the user (and, alas, not Analyzer) thinks of the syntax where the metadata is part of the entire parameter and the default value is inside the parameter.

Fix #1461.

srawlins commented 3 months ago

Woohoo! Just for paper-trail purposes, I believe this will fix https://github.com/dart-lang/dart_style/issues/558 when Tall Style is The Style.