Make BodyBuilder.handleCatchBlock use FormalParameters as catchParameters.

Change-Id: Ib3523faa2a7fa122e56ecef5b9ed6c42a1a8b90d
Reviewed-on: https://dart-review.googlesource.com/56604
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
diff --git a/pkg/analyzer/lib/src/fasta/ast_building_factory.dart b/pkg/analyzer/lib/src/fasta/ast_building_factory.dart
index ac9b5f7..94cbe97 100644
--- a/pkg/analyzer/lib/src/fasta/ast_building_factory.dart
+++ b/pkg/analyzer/lib/src/fasta/ast_building_factory.dart
@@ -226,43 +226,6 @@
   @override
   int getLabelOffset(Label label) => label.offset;
 
-  @override
-  int getOptionalParameterCount(FormalParameterList parameters) {
-    int count = 0;
-    for (FormalParameter parameter in parameters.parameters) {
-      if (!parameter.isRequired) {
-        count++;
-      }
-    }
-    return count;
-  }
-
-  @override
-  FormalParameter getRequiredParameter(
-      FormalParameterList parameters, int index) {
-    int count = 0;
-    for (FormalParameter parameter in parameters.parameters) {
-      if (parameter.isRequired) {
-        if (count == index) {
-          return parameter;
-        }
-        count++;
-      }
-    }
-    throw new IndexError(index, parameters);
-  }
-
-  @override
-  int getRequiredParameterCount(FormalParameterList parameters) {
-    int count = 0;
-    for (FormalParameter parameter in parameters.parameters) {
-      if (parameter.isRequired) {
-        count++;
-      }
-    }
-    return count;
-  }
-
   /// Return the semicolon at the end of the given [statement], or `null` if the
   /// statement is not terminated by a semicolon.
   Token getSemicolon(Statement statement) {
diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index dd5cc3d..b0297d0 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -2372,18 +2372,19 @@
     if (catchKeyword != null) {
       exitLocalScope();
     }
-    Object catchParameters = popIfNotNull(catchKeyword);
+    FormalParameters<Expression, Statement, Arguments> catchParameters =
+        popIfNotNull(catchKeyword);
     Object type = popIfNotNull(onKeyword);
     Object exception;
     Object stackTrace;
     if (catchParameters != null) {
-      int requiredCount = forest.getRequiredParameterCount(catchParameters);
-      int optionalCount = forest.getOptionalParameterCount(catchParameters);
-      if ((requiredCount == 1 || requiredCount == 2) && optionalCount == 0) {
-        exception = forest.getRequiredParameter(catchParameters, 0);
+      int requiredCount = catchParameters.required.length;
+      if ((requiredCount == 1 || requiredCount == 2) &&
+          catchParameters.optional == null) {
+        exception = catchParameters.required[0];
         forest.setParameterType(exception, type);
         if (requiredCount == 2) {
-          stackTrace = forest.getRequiredParameter(catchParameters, 1);
+          stackTrace = catchParameters.required[1];
           forest.setParameterType(
               stackTrace, coreTypes.stackTraceClass.rawType);
         }
diff --git a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
index ddf893d..3acd9df 100644
--- a/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/fangorn.dart
@@ -60,8 +60,6 @@
         KernelTypeUseGenerator,
         KernelVariableUseGenerator;
 
-import 'body_builder.dart' show FormalParameters, OptionalFormals;
-
 import 'kernel_shadow_ast.dart'
     show
         ShadowArguments,
@@ -528,29 +526,6 @@
   }
 
   @override
-  int getOptionalParameterCount(
-      FormalParameters<Expression, Statement, Arguments> parameters) {
-    OptionalFormals optional = parameters.optional;
-    if (optional == null) {
-      return 0;
-    }
-    return optional.formals.length;
-  }
-
-  @override
-  Object getRequiredParameter(
-      FormalParameters<Expression, Statement, Arguments> parameters,
-      int index) {
-    return parameters.required[index];
-  }
-
-  @override
-  int getRequiredParameterCount(
-      FormalParameters<Expression, Statement, Arguments> parameters) {
-    return parameters.required.length;
-  }
-
-  @override
   Expression getExpressionFromExpressionStatement(Statement statement) {
     return (statement as ExpressionStatement).expression;
   }
diff --git a/pkg/front_end/lib/src/fasta/kernel/forest.dart b/pkg/front_end/lib/src/fasta/kernel/forest.dart
index 39e3b44..8509c30 100644
--- a/pkg/front_end/lib/src/fasta/kernel/forest.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/forest.dart
@@ -317,16 +317,6 @@
   /// Return the offset of the given [label].
   int getLabelOffset(covariant label);
 
-  /// Return the number of optional parameters in the list of [parameters].
-  int getOptionalParameterCount(covariant parameters);
-
-  /// Return the required parameter from the list of [parameters] at the given
-  /// [index].
-  Object getRequiredParameter(covariant parameters, int index);
-
-  /// Return the number of required parameters in the list of [parameters].
-  int getRequiredParameterCount(covariant parameters);
-
   bool isBlock(Object node);
 
   /// Return `true` if the given [statement] is the representation of an empty