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)) {}