Format "super." parameters. (#1097)
Fix #1091.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index c661308..3170610 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,7 @@
* Format named arguments anywhere (#1072).
* Format enhanced enums (#1075).
+* Format "super." parameters (#1091).
# 2.2.1
diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart
index 30af279..0414a7c 100644
--- a/lib/src/source_visitor.dart
+++ b/lib/src/source_visitor.dart
@@ -2585,6 +2585,21 @@
}
@override
+ void visitSuperFormalParameter(SuperFormalParameter node) {
+ visitParameterMetadata(node.metadata, () {
+ _beginFormalParameter(node);
+ token(node.keyword, after: space);
+ visit(node.type, after: split);
+ token(node.superKeyword);
+ token(node.period);
+ visit(node.identifier);
+ visit(node.parameters);
+ token(node.question);
+ _endFormalParameter(node);
+ });
+ }
+
+ @override
void visitSwitchCase(SwitchCase node) {
_visitLabels(node.labels);
token(node.keyword);
diff --git a/test/whitespace/constructors.unit b/test/whitespace/constructors.unit
index 107bf1b..6797b58 100644
--- a/test/whitespace/constructors.unit
+++ b/test/whitespace/constructors.unit
@@ -68,4 +68,26 @@
<<<
class Foo {
Foo(this.bar(), baz);
+}
+>>> "super." parameters
+class Foo {
+ Foo(super . a, int super . b , int super . bar());
+ Foo.optional([ super . a, int super . b = 123 , int super . bar() ]);
+ Foo.named({ required super . a, int super . b : 123 , required int super . bar() });
+ Foo.other( final int super.x, super.bar() ? );
+}
+<<<
+class Foo {
+ Foo(super.a, int super.b,
+ int super.bar());
+ Foo.optional(
+ [super.a,
+ int super.b = 123,
+ int super.bar()]);
+ Foo.named(
+ {required super.a,
+ int super.b: 123,
+ required int super.bar()});
+ Foo.other(
+ final int super.x, super.bar()?);
}
\ No newline at end of file
diff --git a/test/whitespace/metadata.unit b/test/whitespace/metadata.unit
index 37a311a..2d7f199 100644
--- a/test/whitespace/metadata.unit
+++ b/test/whitespace/metadata.unit
@@ -209,6 +209,15 @@
class Foo {
Foo(@bar this.field);
}
+>>> metadata on "super." parameter
+class Foo {
+ Foo(@bar super.field, [ @foo() @baz super.another ]);
+}
+<<<
+class Foo {
+ Foo(@bar super.field,
+ [@foo() @baz super.another]);
+}
>>> metadata on function-typed formal parameter
withReturnType(@foo @bar int fn(@foo param)) {}
withoutReturnType(@foo @bar fn(@foo param)) {}