Add support for patterns to RemoveQuestionMark fix.

Bug: 51885
Change-Id: I11cbba03c73ef380ea2bba2db4d6c9267dbb803c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/292123
Commit-Queue: Keerti Parthasarathy <keertip@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/remove_question_mark.dart b/pkg/analysis_server/lib/src/services/correction/dart/remove_question_mark.dart
index c51a340..46e2b05 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/remove_question_mark.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/remove_question_mark.dart
@@ -48,5 +48,14 @@
         builder.addDeletion(range.token(questionMark));
       });
     }
+    if (targetNode is DeclaredVariablePattern) {
+      var questionMark = targetNode.type?.question;
+      if (questionMark == null) {
+        return;
+      }
+      await builder.addDartFileEdit(file, (builder) {
+        builder.addDeletion(range.token(questionMark));
+      });
+    }
   }
 }
diff --git a/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart b/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart
index 9a9c3ab..45d4c76 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/remove_question_mark_test.dart
@@ -221,4 +221,34 @@
 final int zero = 0;
 ''');
   }
+
+  Future<void> test_record() async {
+    await resolveTestCode('''
+f() {
+  final (List<int>? a, num c) = ([], 1);
+  print(a); print(c);
+}
+''');
+    await assertHasFix('''
+f() {
+  final (List<int> a, num c) = ([], 1);
+  print(a); print(c);
+}
+''');
+  }
+
+  Future<void> test_variable_declaration_pattern() async {
+    await resolveTestCode('''
+f() {
+  final [int a, num? c] = [0, 1];
+  print(a); print(c);
+}
+''');
+    await assertHasFix('''
+f() {
+  final [int a, num c] = [0, 1];
+  print(a); print(c);
+}
+''');
+  }
 }