Fasta: Wrong number of type parameters is an error

E.g. `new Map<String>` is now reported as an error.

Note that this does not add a check for whether correct types are given,
so e.g.

```
class Foo<X extends num> {}
main() {
  new Foo<String>();
}
```

is not caught by this fix.

Fixes #32972, #32281.

Change-Id: I57513b5c13865a828890775c8e14f7433d00bdbe
Reviewed-on: https://dart-review.googlesource.com/72382
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
diff --git a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
index 4cf8c2a..1c3c79f 100644
--- a/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
+++ b/pkg/front_end/lib/src/fasta/builder/named_type_builder.dart
@@ -74,8 +74,8 @@
       declaration = buildInvalidType(
           charOffset,
           fileUri,
-          templateTypeArgumentMismatch.withArguments(
-              name, declaration.typeVariablesCount));
+          templateTypeArgumentMismatch
+              .withArguments(declaration.typeVariablesCount));
     }
   }
 
diff --git a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
index 7ad5957..bdb31cc 100644
--- a/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
+++ b/pkg/front_end/lib/src/fasta/fasta_codes_generated.dart
@@ -6956,24 +6956,23 @@
     tip: r"""Try removing 'var.'""");
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Template<Message Function(String name, int count)>
-    templateTypeArgumentMismatch =
-    const Template<Message Function(String name, int count)>(
-        messageTemplate: r"""'#name' expects #count type arguments.""",
+const Template<Message Function(int count)> templateTypeArgumentMismatch =
+    const Template<Message Function(int count)>(
+        messageTemplate: r"""Expected #count type arguments.""",
         withArguments: _withArgumentsTypeArgumentMismatch);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-const Code<Message Function(String name, int count)> codeTypeArgumentMismatch =
-    const Code<Message Function(String name, int count)>(
+const Code<Message Function(int count)> codeTypeArgumentMismatch =
+    const Code<Message Function(int count)>(
         "TypeArgumentMismatch", templateTypeArgumentMismatch,
         analyzerCode: "WRONG_NUMBER_OF_TYPE_ARGUMENTS",
         severity: Severity.errorLegacyWarning);
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
-Message _withArgumentsTypeArgumentMismatch(String name, int count) {
+Message _withArgumentsTypeArgumentMismatch(int count) {
   return new Message(codeTypeArgumentMismatch,
-      message: """'${name}' expects ${count} type arguments.""",
-      arguments: {'name': name, 'count': count});
+      message: """Expected ${count} type arguments.""",
+      arguments: {'count': count});
 }
 
 // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE.
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 b560333..d312acf 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -1446,7 +1446,7 @@
   @override
   void warnTypeArgumentsMismatch(String name, int expected, int charOffset) {
     addProblemErrorIfConst(
-        fasta.templateTypeArgumentMismatch.withArguments(name, expected),
+        fasta.templateTypeArgumentMismatch.withArguments(expected),
         charOffset,
         name.length);
   }
@@ -2963,11 +2963,18 @@
 
     List<Object> types = forest.argumentsTypeArguments(arguments);
     if (typeParameters.length != types.length) {
-      // TODO(paulberry): Report error in this case as well,
-      // after https://github.com/dart-lang/sdk/issues/32130 is fixed.
-      types.clear();
-      for (int i = 0; i < typeParameters.length; i++) {
-        types.add(const DynamicType());
+      if (types.length == 0) {
+        // Expected `typeParameters.length` type arguments, but none given,
+        // so we fill in dynamic.
+        for (int i = 0; i < typeParameters.length; i++) {
+          types.add(const DynamicType());
+        }
+      } else {
+        // A wrong (non-zero) amount of type arguments given. That's an error.
+        // TODO(jensj): Position should be on type arguments instead.
+        return fasta.templateTypeArgumentMismatch
+            .withArguments(typeParameters.length)
+            .withLocation(uri, offset, noLength);
       }
     }
 
@@ -3003,6 +3010,15 @@
         }
       }
     }
+    List<Object> types = forest.argumentsTypeArguments(arguments);
+    List<TypeParameter> typeParameters = function.typeParameters;
+    if (typeParameters.length != types.length && types.length != 0) {
+      // A wrong (non-zero) amount of type arguments given. That's an error.
+      // TODO(jensj): Position should be on type arguments instead.
+      return fasta.templateTypeArgumentMismatch
+          .withArguments(typeParameters.length)
+          .withLocation(uri, offset, noLength);
+    }
 
     return null;
   }
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
index acb1b8b..6ea64a0 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_class_builder.dart
@@ -152,7 +152,7 @@
       // That should be caught and reported as a compile-time error earlier.
       return unhandled(
           templateTypeArgumentMismatch
-              .withArguments(name, typeVariables.length)
+              .withArguments(typeVariables.length)
               .message,
           "buildTypeArguments",
           -1,
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
index 5e62f6b..fedd216 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_function_type_alias_builder.dart
@@ -142,7 +142,7 @@
       // That should be caught and reported as a compile-time error earlier.
       return unhandled(
           templateTypeArgumentMismatch
-              .withArguments(name, typeVariables.length)
+              .withArguments(typeVariables.length)
               .message,
           "buildTypeArguments",
           -1,
diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml
index 49ac4bb..3aa09c8 100644
--- a/pkg/front_end/messages.yaml
+++ b/pkg/front_end/messages.yaml
@@ -1305,7 +1305,7 @@
   severity: IGNORED
 
 TypeArgumentMismatch:
-  template: "'#name' expects #count type arguments."
+  template: "Expected #count type arguments."
   severity: ERROR_LEGACY_WARNING
   analyzerCode: WRONG_NUMBER_OF_TYPE_ARGUMENTS
 
diff --git a/pkg/front_end/testcases/compile.status b/pkg/front_end/testcases/compile.status
index cd8199e..dffedaf 100644
--- a/pkg/front_end/testcases/compile.status
+++ b/pkg/front_end/testcases/compile.status
@@ -104,6 +104,7 @@
 regress/issue_29982: Fail # Issue 29982.
 regress/issue_30836: RuntimeError # Issue 30836.
 regress/issue_33452: RuntimeError # Test has an intentional error
+regress/issue_32972: RuntimeError
 
 runtime_checks/implicit_downcast_constructor_initializer: RuntimeError # Test exercises strong mode semantics
 runtime_checks/implicit_downcast_do: RuntimeError # Test exercises strong mode semantics
diff --git a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart
index c615c82..c72713a 100644
--- a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart
+++ b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart
@@ -18,7 +18,7 @@
 
 main() {
   int y = /*info:DYNAMIC_CAST*/ new D()
-      . /*error:WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD*/ /*@target=D::m*/ m<int>(
-          42);
+      . /*error:WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD*/ /*@target=D::m*/ /*@error=TypeArgumentMismatch*/ m<
+          int>(42);
   print(y);
 }
diff --git a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect
index a6dedb5..5d1b277 100644
--- a/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect
+++ b/pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart.strong.expect
@@ -8,6 +8,10 @@
 // Change to a subtype of test::C::m::T.
 // /*@error=OverrideTypeMismatchReturnType*/ /*@topType=dynamic*/ m(
 //                                                                ^
+//
+// pkg/front_end/testcases/inference/generic_methods_do_not_infer_invalid_override_of_generic_method.dart:21:106: Error: Expected 0 type arguments.
+//       . /*error:WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD*/ /*@target=D::m*/ /*@error=TypeArgumentMismatch*/ m<
+//                                                                                                          ^
 
 library test;
 import self as self;
diff --git a/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect b/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect
index 080a6f0..f2f6961 100644
--- a/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_29981.dart.strong.expect
@@ -1,6 +1,6 @@
 // Errors:
 //
-// pkg/front_end/testcases/regress/issue_29981.dart:6:3: Error: 'C' expects 1 type arguments.
+// pkg/front_end/testcases/regress/issue_29981.dart:6:3: Error: Expected 1 type arguments.
 //   C<String, String> field;
 //   ^
 
diff --git a/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect
index 080a6f0..f2f6961 100644
--- a/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_29981.dart.strong.transformed.expect
@@ -1,6 +1,6 @@
 // Errors:
 //
-// pkg/front_end/testcases/regress/issue_29981.dart:6:3: Error: 'C' expects 1 type arguments.
+// pkg/front_end/testcases/regress/issue_29981.dart:6:3: Error: Expected 1 type arguments.
 //   C<String, String> field;
 //   ^
 
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect b/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
index 64fefaf..d69d0be 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.strong.expect
@@ -7,7 +7,7 @@
 //   T<U> v;
 //     ^
 //
-// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Error: 'T' expects 0 type arguments.
+// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Error: Expected 0 type arguments.
 //   T<U> v;
 //   ^
 
diff --git a/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect b/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
index 64fefaf..d69d0be 100644
--- a/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
+++ b/pkg/front_end/testcases/regress/issue_31190.dart.strong.transformed.expect
@@ -7,7 +7,7 @@
 //   T<U> v;
 //     ^
 //
-// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Error: 'T' expects 0 type arguments.
+// pkg/front_end/testcases/regress/issue_31190.dart:6:3: Error: Expected 0 type arguments.
 //   T<U> v;
 //   ^
 
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart b/pkg/front_end/testcases/regress/issue_32972.dart
new file mode 100644
index 0000000..23a1482
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_32972.dart
@@ -0,0 +1,31 @@
+// Copyright (c) 2018, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+void foo<X>(X i) {
+  print(i);
+}
+
+class Foo {
+  static foo<X>(X i) {
+    print(i);
+  }
+
+  bar<X>(X i) {
+    print(i);
+  }
+}
+
+class Bar<X, Y> {}
+
+main() {
+  foo<String, String>("hello world");
+  foo<String>("hello world");
+  Foo.foo<int, int>(42);
+  Foo.foo<int>(42);
+  Foo f = new Foo();
+  f.bar<double, double>(42.42);
+  f.bar<double>(42.42);
+  new Bar<String>();
+  new Bar<String, String>();
+}
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.direct.expect b/pkg/front_end/testcases/regress/issue_32972.dart.direct.expect
new file mode 100644
index 0000000..720e78e
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.direct.expect
@@ -0,0 +1,34 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  synthetic constructor •() → void
+    : super core::Object::•()
+    ;
+  static method foo<X extends core::Object = dynamic>(self::Foo::foo::X i) → dynamic {
+    core::print(i);
+  }
+  method bar<X extends core::Object = dynamic>(self::Foo::bar::X i) → dynamic {
+    core::print(i);
+  }
+}
+class Bar<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → void
+    : super core::Object::•()
+    ;
+}
+static method foo<X extends core::Object = dynamic>(self::foo::X i) → void {
+  core::print(i);
+}
+static method main() → dynamic {
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), core::List::unmodifiable<dynamic>(<dynamic>["hello world"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  self::foo<core::String>("hello world");
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::int, core::int]), core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  self::Foo::foo<core::int>(42);
+  self::Foo f = new self::Foo::•();
+  f.bar<core::double, core::double>(42.42);
+  f.bar<core::double>(42.42);
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  new self::Bar::•<core::String, core::String>();
+}
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.direct.transformed.expect b/pkg/front_end/testcases/regress/issue_32972.dart.direct.transformed.expect
new file mode 100644
index 0000000..720e78e
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.direct.transformed.expect
@@ -0,0 +1,34 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  synthetic constructor •() → void
+    : super core::Object::•()
+    ;
+  static method foo<X extends core::Object = dynamic>(self::Foo::foo::X i) → dynamic {
+    core::print(i);
+  }
+  method bar<X extends core::Object = dynamic>(self::Foo::bar::X i) → dynamic {
+    core::print(i);
+  }
+}
+class Bar<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → void
+    : super core::Object::•()
+    ;
+}
+static method foo<X extends core::Object = dynamic>(self::foo::X i) → void {
+  core::print(i);
+}
+static method main() → dynamic {
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), core::List::unmodifiable<dynamic>(<dynamic>["hello world"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  self::foo<core::String>("hello world");
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::int, core::int]), core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  self::Foo::foo<core::int>(42);
+  self::Foo f = new self::Foo::•();
+  f.bar<core::double, core::double>(42.42);
+  f.bar<core::double>(42.42);
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  new self::Bar::•<core::String, core::String>();
+}
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.outline.expect b/pkg/front_end/testcases/regress/issue_32972.dart.outline.expect
new file mode 100644
index 0000000..e9de5cd
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.outline.expect
@@ -0,0 +1,20 @@
+library;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  synthetic constructor •() → void
+    ;
+  static method foo<X extends core::Object = dynamic>(self::Foo::foo::X i) → dynamic
+    ;
+  method bar<X extends core::Object = dynamic>(self::Foo::bar::X i) → dynamic
+    ;
+}
+class Bar<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → void
+    ;
+}
+static method foo<X extends core::Object = dynamic>(self::foo::X i) → void
+  ;
+static method main() → dynamic
+  ;
diff --git a/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect b/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
new file mode 100644
index 0000000..11825b0
--- /dev/null
+++ b/pkg/front_end/testcases/regress/issue_32972.dart.strong.expect
@@ -0,0 +1,52 @@
+// Errors:
+//
+// pkg/front_end/testcases/regress/issue_32972.dart:22:3: Error: Expected 1 type arguments.
+//   foo<String, String>("hello world");
+//   ^
+//
+// pkg/front_end/testcases/regress/issue_32972.dart:24:7: Error: Expected 1 type arguments.
+//   Foo.foo<int, int>(42);
+//       ^
+//
+// pkg/front_end/testcases/regress/issue_32972.dart:29:7: Error: Expected 2 type arguments.
+//   new Bar<String>();
+//       ^
+//
+// pkg/front_end/testcases/regress/issue_32972.dart:27:5: Error: Expected 1 type arguments.
+//   f.bar<double, double>(42.42);
+//     ^
+
+library;
+import self as self;
+import "dart:core" as core;
+
+class Foo extends core::Object {
+  synthetic constructor •() → void
+    : super core::Object::•()
+    ;
+  static method foo<X extends core::Object = dynamic>(self::Foo::foo::X i) → dynamic {
+    core::print(i);
+  }
+  method bar<X extends core::Object = dynamic>(self::Foo::bar::X i) → dynamic {
+    core::print(i);
+  }
+}
+class Bar<X extends core::Object = dynamic, Y extends core::Object = dynamic> extends core::Object {
+  synthetic constructor •() → void
+    : super core::Object::•()
+    ;
+}
+static method foo<X extends core::Object = dynamic>(self::foo::X i) → void {
+  core::print(i);
+}
+static method main() → dynamic {
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String, core::String]), core::List::unmodifiable<dynamic>(<dynamic>["hello world"]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  self::foo<core::String>("hello world");
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#foo, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::int, core::int]), core::List::unmodifiable<dynamic>(<dynamic>[42]), core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  self::Foo::foo<core::int>(42);
+  self::Foo f = new self::Foo::•();
+  f.{self::Foo::bar}<core::double, core::double>(42.42);
+  f.{self::Foo::bar}<core::double>(42.42);
+  throw new core::NoSuchMethodError::withInvocation(null, new core::_InvocationMirror::_withType(#, 32, core::List::unmodifiable<dynamic>(<core::Type>[core::String]), const <dynamic>[], core::Map::unmodifiable<core::Symbol, dynamic>(const <core::Symbol, dynamic>{})));
+  new self::Bar::•<core::String, core::String>();
+}
diff --git a/pkg/front_end/testcases/strong.status b/pkg/front_end/testcases/strong.status
index b5d4f7b..4707dea 100644
--- a/pkg/front_end/testcases/strong.status
+++ b/pkg/front_end/testcases/strong.status
@@ -199,6 +199,7 @@
 regress/issue_30836: RuntimeError # Issue 30836.
 regress/issue_31184: TypeCheckError
 regress/issue_31299: TypeCheckError
+regress/issue_32972: TypeCheckError
 regress/issue_33452: RuntimeError # Test has an intentional error
 
 runtime_checks_new/contravariant_generic_return_with_compound_assign_implicit_downcast: RuntimeError
diff --git a/tests/co19/co19-kernel.status b/tests/co19/co19-kernel.status
index 3eab189..011875a 100644
--- a/tests/co19/co19-kernel.status
+++ b/tests/co19/co19-kernel.status
@@ -4,10 +4,16 @@
 
 [ $compiler == fasta ]
 Language/Classes/Constructors/Generative_Constructors/final_variables_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
+Language/Expressions/Instance_Creation/New/generic_type_t01: CompileTimeError
+Language/Expressions/Instance_Creation/New/generic_type_t02: CompileTimeError
+Language/Expressions/Instance_Creation/New/generic_type_t03: CompileTimeError
 Language/Expressions/Method_Invocation/Ordinary_Invocation/function_type_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
 Language/Expressions/Method_Invocation/Ordinary_Invocation/static_type_t01: CompileTimeError # Expects a warning, but this is an error in Dart 2
 Language/Functions/Formal_Parameters/Optional_Formals/default_value_t01: MissingCompileTimeError
 Language/Functions/Formal_Parameters/Optional_Formals/default_value_t02: MissingCompileTimeError
+Language/Types/Parameterized_Types/arity_mismatch_t01: CompileTimeError
+Language/Types/Parameterized_Types/arity_mismatch_t05: CompileTimeError
+Language/Types/Parameterized_Types/arity_mismatch_t07: CompileTimeError
 Language/Types/Type_Void/syntax_t08: MissingCompileTimeError
 Language/Types/Type_Void/syntax_t09: MissingCompileTimeError
 LayoutTests/*: Skip # TODO(ahe): Make dart:html available.
diff --git a/tests/co19_2/co19_2-kernel.status b/tests/co19_2/co19_2-kernel.status
index b78c3e4..388145f 100644
--- a/tests/co19_2/co19_2-kernel.status
+++ b/tests/co19_2/co19_2-kernel.status
@@ -96,9 +96,6 @@
 Language/Expressions/Instance_Creation/New/evaluation_t16: MissingCompileTimeError # Issue 33308
 Language/Expressions/Instance_Creation/New/evaluation_t17: MissingCompileTimeError # Issue 33308
 Language/Expressions/Instance_Creation/New/evaluation_t18: MissingCompileTimeError # Issue 33308
-Language/Expressions/Instance_Creation/New/generic_type_t01: MissingCompileTimeError # Issue 32972
-Language/Expressions/Instance_Creation/New/generic_type_t02: MissingCompileTimeError # Issue 32972
-Language/Expressions/Instance_Creation/New/generic_type_t03: MissingCompileTimeError # Issue 32972
 Language/Expressions/Instance_Creation/New/redirecting_factory_constructor_t02: MissingCompileTimeError # Issue 33308
 Language/Expressions/Instance_Creation/New/syntax_t04: MissingCompileTimeError # Legal because of implicit new
 Language/Expressions/Instance_Creation/New/type_argument_t01: MissingCompileTimeError # Issue 33308
@@ -158,9 +155,6 @@
 Language/Statements/Try/catch_scope_t01: CompileTimeError
 Language/Types/Dynamic_Type_System/malbounded_type_error_t01: MissingCompileTimeError # Issue 33308
 Language/Types/Interface_Types/subtype_t30: CompileTimeError
-Language/Types/Parameterized_Types/arity_mismatch_t01: MissingCompileTimeError # Issue 32972
-Language/Types/Parameterized_Types/arity_mismatch_t05: MissingCompileTimeError # Issue 32972
-Language/Types/Parameterized_Types/arity_mismatch_t07: MissingCompileTimeError # Issue 32972
 Language/Types/Parameterized_Types/malbounded_t01: MissingCompileTimeError # Issue 33308
 Language/Types/Parameterized_Types/malbounded_t02: MissingCompileTimeError # Issue 33308
 Language/Types/Parameterized_Types/malbounded_t03: MissingCompileTimeError # Issue 33308
diff --git a/tests/language_2/language_2_dart2js.status b/tests/language_2/language_2_dart2js.status
index 98d11b6..f997b19 100644
--- a/tests/language_2/language_2_dart2js.status
+++ b/tests/language_2/language_2_dart2js.status
@@ -468,8 +468,6 @@
 type_literal_prefix_call_test/00: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
 type_variable_bounds_test/02: Crash # NoSuchMethodError: The method 'accept' was called on null.
-wrong_number_type_arguments_test/01: MissingCompileTimeError
-wrong_number_type_arguments_test/none: Pass
 
 [ $compiler == dart2js && $minified ]
 cyclic_type2_test: RuntimeError # Issue 31054
@@ -529,8 +527,6 @@
 type_literal_prefix_call_test/00: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
 type_variable_bounds_test/02: Crash # NoSuchMethodError: The method 'accept' was called on null.
-wrong_number_type_arguments_test/01: MissingCompileTimeError
-wrong_number_type_arguments_test/none: Pass
 
 [ $compiler == dart2js && $strong ]
 async_await_test/02: RuntimeError
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index 6b9305d..e86031a 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -389,7 +389,6 @@
 type_promotion_functions_test/none: CompileTimeError # Issue 31537
 type_promotion_logical_and_test/01: MissingCompileTimeError
 type_promotion_more_specific_test/04: CompileTimeError # Issue 31533
-wrong_number_type_arguments_test/01: MissingCompileTimeError
 
 [ $compiler == dartdevk && $checked ]
 assertion_initializer_const_error2_test/*: MissingCompileTimeError
diff --git a/tests/language_2/language_2_kernel.status b/tests/language_2/language_2_kernel.status
index ea7e5db..9c854d1 100644
--- a/tests/language_2/language_2_kernel.status
+++ b/tests/language_2/language_2_kernel.status
@@ -272,14 +272,8 @@
 mixin_invalid_bound_test/10: MissingCompileTimeError # Issue 33308
 mixin_super_bound_test/01: MissingCompileTimeError # Issue 33308
 mixin_super_bound_test/02: MissingCompileTimeError # Issue 33308
-mixin_type_parameters_errors_test/03: MissingCompileTimeError # Issue 32972
-mixin_type_parameters_errors_test/04: MissingCompileTimeError # Issue 32972
 named_constructor_test/01: MissingCompileTimeError # Issue 34159
 named_parameters_default_eq_test/02: MissingCompileTimeError # Issue 34160
-partial_tearoff_instantiation_test/05: MissingCompileTimeError # Issue 32281
-partial_tearoff_instantiation_test/06: MissingCompileTimeError # Issue 32281
-partial_tearoff_instantiation_test/07: MissingCompileTimeError # Issue 32281
-partial_tearoff_instantiation_test/08: MissingCompileTimeError # Issue 32281
 redirecting_factory_default_values_test/01: MissingCompileTimeError # Issue 34160
 redirecting_factory_default_values_test/02: MissingCompileTimeError # Issue 34160
 regress_22976_test/*: CompileTimeError # Issue 31935
@@ -300,7 +294,6 @@
 type_variable_bounds_test/04: MissingCompileTimeError # Issue 33308
 type_variable_bounds_test/05: MissingCompileTimeError # Issue 33308
 type_variable_bounds_test/06: MissingCompileTimeError # Issue 33308
-type_variable_bounds_test/08: MissingCompileTimeError # Issue 33308
 type_variable_bounds_test/11: MissingCompileTimeError # Issue 33308
 vm/debug_break_enabled_vm_test/01: CompileTimeError # KernelVM bug: Bad test using extended break syntax.
 vm/debug_break_enabled_vm_test/none: CompileTimeError # KernelVM bug: Bad test using extended break syntax.
@@ -1036,7 +1029,6 @@
 vm/type_vm_test/30: MissingRuntimeError
 vm/type_vm_test/31: MissingRuntimeError
 vm/type_vm_test/32: MissingRuntimeError
-wrong_number_type_arguments_test/01: MissingCompileTimeError
 
 [ $compiler == dartkp && $minified ]
 no_such_method_native_test: RuntimeError # Compares symbol #foobar with string "foobar" in noSuchMethod
@@ -1568,8 +1560,6 @@
 vm/regress_29145_test: Skip # Issue 29145
 vm/type_cast_vm_test: RuntimeError
 web_int_literals_test/*: SkipByDesign # Test applies only to JavaScript targets
-wrong_number_type_arguments_test/01: MissingCompileTimeError
-wrong_number_type_arguments_test/none: Pass
 
 [ $system == windows && $strong && ($compiler == dartk || $compiler == dartkb) ]
 ct_const2_test: Fail
@@ -1591,7 +1581,6 @@
 redirecting_factory_infinite_steps_test/01: MissingCompileTimeError
 redirecting_factory_malbounded_test/01: MissingCompileTimeError
 type_promotion_logical_and_test/01: MissingCompileTimeError
-wrong_number_type_arguments_test/01: MissingCompileTimeError
 
 [ $fasta && !$strong ]
 abstract_beats_arguments_test: MissingCompileTimeError
diff --git a/tests/lib_2/lib_2_kernel.status b/tests/lib_2/lib_2_kernel.status
index 7af501e..94ddd5c 100644
--- a/tests/lib_2/lib_2_kernel.status
+++ b/tests/lib_2/lib_2_kernel.status
@@ -35,10 +35,6 @@
 mirrors/generic_interface_test/01: MissingCompileTimeError
 mirrors/metadata_allowed_values_test/13: MissingCompileTimeError
 mirrors/metadata_allowed_values_test/14: MissingCompileTimeError
-mirrors/reflected_type_classes_test/02: MissingCompileTimeError
-mirrors/reflected_type_classes_test/03: MissingCompileTimeError
-mirrors/reflected_type_test/02: MissingCompileTimeError
-mirrors/reflected_type_test/03: MissingCompileTimeError
 
 [ $arch == simarm64 && $strong && ($compiler == dartk || $compiler == dartkb) ]
 isolate/mint_maker_test: Timeout # Please triage.