Stop suggesting final in parameter lists

This stops completion from suggesting `final` outisde a primary
constructor's parameter list when the feature is enabled. When the
feature is not enabled, it won't be suggested anywhere. I did that
because in the same release this CL is for we'll produce a warning if
`final` is used, and it seems unhelpful to suggest adding code that will
have a diagnostic associated with it.

Change-Id: I2f8ad2d92ea0641e2212c89d01aa23921b39b3e8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/468401
Reviewed-by: Samuel Rawlins <[email protected]>
Commit-Queue: Brian Wilkerson <[email protected]>
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart b/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart
index bea1314..07e2645 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/in_scope_completion_pass.dart
@@ -2556,7 +2556,7 @@
       keywordHelper.addFormalParameterKeywords(
         formalParameters,
         suggestCovariant: false,
-        suggestFinal: false,
+        suggestFinalOrVar: false,
         suggestRequired: true,
         suggestVariableName: true,
       );
@@ -2831,7 +2831,6 @@
     bool suggestThis = true;
     bool suggestVoid = true;
     bool suggestDynamic = true;
-    bool suggestFinal = true;
     bool suggestRequired = true;
     if (name != null && node.isSingleIdentifier) {
       collector.completionLocation = 'FormalParameterList_parameter';
@@ -2843,7 +2842,6 @@
       );
       suggestCovariant = false;
       suggestThis = false;
-      suggestFinal = false;
       suggestRequired = false;
       _forTypeAnnotation(
         node,
@@ -2899,7 +2897,6 @@
             suggestVariableName: name.coversOffset(offset),
             suggestCovariant: suggestCovariant,
             suggestThis: suggestThis,
-            suggestFinal: suggestFinal,
           );
         }
         _forTypeAnnotation(
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart b/pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart
index 0805367..c2dfdf2 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/keyword_helper.dart
@@ -440,15 +440,12 @@
     required bool suggestRequired,
     required bool suggestVariableName,
     bool suggestCovariant = true,
+    bool suggestFinalOrVar = true,
     bool suggestThis = true,
-    bool suggestFinal = true,
   }) {
     if (suggestCovariant) {
       addKeyword(Keyword.COVARIANT);
     }
-    if (suggestFinal) {
-      addKeyword(Keyword.FINAL);
-    }
     if (suggestRequired && parameterList.inNamedGroup(offset)) {
       addKeyword(Keyword.REQUIRED);
     }
@@ -464,14 +461,12 @@
         addKeyword(Keyword.THIS);
       }
     } else if (parent is PrimaryConstructorDeclaration) {
-      if (suggestCovariant || suggestFinal) {
+      if (suggestFinalOrVar) {
         if (featureSet.isEnabled(Feature.super_parameters)) {
           addKeyword(Keyword.SUPER);
         }
+        addKeyword(Keyword.FINAL);
         addKeyword(Keyword.THIS);
-      }
-      if (suggestFinal) {
-        // The flag should probably be renamed to `suggestFinalAndVar`
         addKeyword(Keyword.VAR);
       }
     }
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_test.dart b/pkg/analysis_server/test/services/completion/dart/completion_test.dart
index 4c58d55..70c6e74 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_test.dart
@@ -4327,8 +4327,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
@@ -4347,8 +4345,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
@@ -4825,8 +4821,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
@@ -4845,8 +4839,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
diff --git a/pkg/analysis_server/test/services/completion/dart/location/parameter_list_test.dart b/pkg/analysis_server/test/services/completion/dart/location/parameter_list_test.dart
index 225d920..5193ad1 100644
--- a/pkg/analysis_server/test/services/completion/dart/location/parameter_list_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/location/parameter_list_test.dart
@@ -33,8 +33,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
   super
     kind: keyword
 ''');
@@ -54,8 +52,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
   super
     kind: keyword
 ''');
@@ -78,8 +74,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
@@ -117,8 +111,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
@@ -143,8 +135,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
   super
     kind: keyword
 ''');
@@ -206,8 +196,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
   super
     kind: keyword
 ''');
@@ -233,8 +221,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
@@ -248,8 +234,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
   required
     kind: keyword
 ''');
@@ -267,8 +251,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 }
@@ -350,8 +332,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }
 
@@ -367,8 +347,6 @@
     kind: keyword
   dynamic
     kind: keyword
-  final
-    kind: keyword
 ''');
   }