Version 2.17.0-22.0.dev

Merge commit 'a8c63a877396e9929745f6cfede95304ca647d98' into 'dev'
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
index d091c3f..8881116 100644
--- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart
+++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -1115,6 +1115,23 @@
   }
 
   @override
+  void visitSuperFormalParameter(SuperFormalParameter node) {
+    computer._addRegion_token(
+      node.superKeyword,
+      HighlightRegionType.KEYWORD,
+    );
+
+    computer._addRegion_node(
+      node.identifier,
+      HighlightRegionType.PARAMETER_DECLARATION,
+    );
+
+    node.type?.accept(this);
+    node.typeParameters?.accept(this);
+    node.parameters?.accept(this);
+  }
+
+  @override
   void visitSwitchCase(SwitchCase node) {
     computer._addRegion_token(node.keyword, HighlightRegionType.KEYWORD,
         semanticTokenModifiers: {CustomSemanticTokenModifiers.control});
diff --git a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
index 6645f3f..c97ddd3 100644
--- a/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
+++ b/pkg/analysis_server/test/analysis/notification_highlights2_test.dart
@@ -1136,6 +1136,50 @@
     assertHasRegion(HighlightRegionType.PARAMETER_REFERENCE, 'bbb: 2');
   }
 
+  Future<void> test_PARAMETER_super_children() async {
+    addTestFile('''
+class A {
+  A(Object aaa);
+}
+class B extends A {
+  B(int super.aaa<T>(double a /*0*/));
+}
+''');
+    await prepareHighlights();
+    assertHasRegion(HighlightRegionType.CLASS, 'int');
+    assertHasRegion(HighlightRegionType.CLASS, 'double');
+    assertHasRegion(HighlightRegionType.TYPE_PARAMETER, 'T>');
+    assertHasRegion(HighlightRegionType.PARAMETER_DECLARATION, 'a /*0*/');
+  }
+
+  Future<void> test_PARAMETER_super_requiredNamed() async {
+    addTestFile('''
+class A {
+  A({required int aaa});
+}
+class B extends A {
+  B({required super.aaa /*0*/});
+}
+''');
+    await prepareHighlights();
+    assertHasRegion(HighlightRegionType.KEYWORD, 'super.aaa');
+    assertHasRegion(HighlightRegionType.PARAMETER_DECLARATION, 'aaa /*0*/');
+  }
+
+  Future<void> test_PARAMETER_super_requiredPositional() async {
+    addTestFile('''
+class A {
+  A(int aaa);
+}
+class B extends A {
+  B(super.aaa /*0*/);
+}
+''');
+    await prepareHighlights();
+    assertHasRegion(HighlightRegionType.KEYWORD, 'super.aaa');
+    assertHasRegion(HighlightRegionType.PARAMETER_DECLARATION, 'aaa /*0*/');
+  }
+
   Future<void> test_SETTER_DECLARATION() async {
     addTestFile('''
 set aaa(x) {}
diff --git a/tools/VERSION b/tools/VERSION
index 2d129f5..bb88572 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 17
 PATCH 0
-PRERELEASE 21
+PRERELEASE 22
 PRERELEASE_PATCH 0
\ No newline at end of file