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.
The AST node for a parameter with both metadata and a default value looks like:
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.