Fix analyzer/FE integration of references to class type parameters.

Fixes #33844.

Change-Id: Id73a9af39a7fa699b71ed8825dfd16c3aa90b877
Reviewed-on: https://dart-review.googlesource.com/64981
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index 9397292..6d53e7d 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -1215,8 +1215,8 @@
     } else if (referencedNode is kernel.DynamicType) {
       element = DynamicElementImpl.instance;
     } else if (referencedNode is kernel.TypeParameter) {
-      // TODO(paulberry): find the corresponding element (dartbug.com/33844)
-      element = null;
+      element = resynthesizer.getTypeParameter(context, referencedNode,
+          getLocalTypeParameter: _getLocalTypeParameter);
     } else if (referencedNode is kernel.InvalidType) {
       element = DynamicElementImpl.instance;
     } else {
diff --git a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart
index bb24909..deb8881 100644
--- a/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/checked_mode_compile_time_error_code_kernel_test.dart
@@ -203,13 +203,6 @@
     await super.test_mapValueTypeNotAssignable();
   }
 
-  @override
-  @failingTest
-  test_parameterAssignable_typeSubstitution() {
-    // Failed to resolve 1 nodes
-    return super.test_parameterAssignable_typeSubstitution();
-  }
-
   @failingTest
   @override
   test_parameterAssignable_undefined_null() async {
diff --git a/pkg/analyzer/test/generated/hint_code_kernel_test.dart b/pkg/analyzer/test/generated/hint_code_kernel_test.dart
index ffd3480..bfc95d5 100644
--- a/pkg/analyzer/test/generated/hint_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/hint_code_kernel_test.dart
@@ -283,13 +283,6 @@
 
   @failingTest
   @override
-  test_unusedElement_method_isUsed_invocation_MemberElement() {
-    // Failed to resolve 1 nodes
-    return super.test_unusedElement_method_isUsed_invocation_MemberElement();
-  }
-
-  @failingTest
-  @override
   test_unusedImport_inComment_libraryDirective() async {
     // Expected 0 errors of type HintCode.UNUSED_IMPORT, found 1 (42)
     return super.test_unusedImport_inComment_libraryDirective();
diff --git a/pkg/analyzer/test/generated/non_error_resolver_kernel_test.dart b/pkg/analyzer/test/generated/non_error_resolver_kernel_test.dart
index 56e80b6..4c45c7f 100644
--- a/pkg/analyzer/test/generated/non_error_resolver_kernel_test.dart
+++ b/pkg/analyzer/test/generated/non_error_resolver_kernel_test.dart
@@ -63,14 +63,6 @@
 
   @override
   @failingTest
-  test_argumentTypeNotAssignable_invocation_functionParameter_generic() {
-    // Failed to resolve 1 nodes
-    return super
-        .test_argumentTypeNotAssignable_invocation_functionParameter_generic();
-  }
-
-  @override
-  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/31604')
   test_commentReference_beforeConstructor() async {
     return super.test_commentReference_beforeConstructor();
@@ -150,13 +142,6 @@
 
   @override
   @failingTest
-  test_const_constructor_with_named_generic_parameter() {
-    // Failed to resolve 1 nodes
-    return super.test_const_constructor_with_named_generic_parameter();
-  }
-
-  @override
-  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/33676')
   test_constConstructorWithMixinWithField() {
     // Bad state: Unable to convert (Unspecified, null, @52, Can't extend a mixin application and be 'const'.)
@@ -179,13 +164,6 @@
 
   @override
   @failingTest
-  test_extraPositionalArguments_implicitConstructor() {
-    // Failed to resolve 2 nodes
-    return super.test_extraPositionalArguments_implicitConstructor();
-  }
-
-  @override
-  @failingTest
   test_fieldFormalParameter_genericFunctionTyped() {
     // Expected 0 errors of type ParserErrorCode.EXPECTED_TOKEN, found 1 (88)
     return super.test_fieldFormalParameter_genericFunctionTyped();
@@ -227,64 +205,6 @@
     return super.test_functionTypeAlias_scope_signature();
   }
 
-  @override
-  @failingTest
-  test_genericTypeAlias_fieldAndReturnType_noTypeParameters() {
-    // Failed to resolve 1 nodes
-    return super.test_genericTypeAlias_fieldAndReturnType_noTypeParameters();
-  }
-
-  @override
-  @failingTest
-  test_genericTypeAlias_fieldAndReturnType_typeParameters_arguments() {
-    // Failed to resolve 1 nodes
-    return super
-        .test_genericTypeAlias_fieldAndReturnType_typeParameters_arguments();
-  }
-
-  @override
-  @failingTest
-  test_genericTypeAlias_fieldAndReturnType_typeParameters_noArguments() {
-    // Failed to resolve 1 nodes
-    return super
-        .test_genericTypeAlias_fieldAndReturnType_typeParameters_noArguments();
-  }
-
-  @override
-  @failingTest
-  test_genericTypeAlias_noTypeParameters() {
-    // Failed to resolve 1 nodes
-    return super.test_genericTypeAlias_noTypeParameters();
-  }
-
-  @override
-  @failingTest
-  test_genericTypeAlias_typeParameters() {
-    // Failed to resolve 1 nodes
-    return super.test_genericTypeAlias_typeParameters();
-  }
-
-  @override
-  @failingTest
-  test_implicitThisReferenceInInitializer_typeParameter() {
-    // Failed to resolve 1 nodes
-    return super.test_implicitThisReferenceInInitializer_typeParameter();
-  }
-
-  @override
-  @failingTest
-  test_inconsistentMethodInheritance_methods_typeParameter2() {
-    // Failed to resolve 3 nodes
-    return super.test_inconsistentMethodInheritance_methods_typeParameter2();
-  }
-
-  @override
-  @failingTest
-  test_inconsistentMethodInheritance_methods_typeParameters1() {
-    // Failed to resolve 3 nodes
-    return super.test_inconsistentMethodInheritance_methods_typeParameters1();
-  }
-
   @override // passes with kernel
   test_infer_mixin() => super.test_infer_mixin();
 
@@ -301,13 +221,6 @@
 
   @override
   @failingTest
-  test_invalidTypeArgumentInConstMap() {
-    // Failed to resolve 1 nodes
-    return super.test_invalidTypeArgumentInConstMap();
-  }
-
-  @override
-  @failingTest
   test_invocationOfNonFunction_functionTypeTypeParameter() {
     // Bad state: Not found #lib2::C::T in null
     return super.test_invocationOfNonFunction_functionTypeTypeParameter();
@@ -365,13 +278,6 @@
 
   @override
   @failingTest
-  test_nonTypeInCatchClause_isTypeParameter() {
-    // Failed to resolve 1 nodes
-    return super.test_nonTypeInCatchClause_isTypeParameter();
-  }
-
-  @override
-  @failingTest
   @notForDart2
   test_null_callMethod() async {
     return super.test_null_callMethod();
@@ -393,20 +299,6 @@
 
   @override
   @failingTest
-  test_propagateTypeArgs_intoSupertype() {
-    // Failed to resolve 4 nodes
-    return super.test_propagateTypeArgs_intoSupertype();
-  }
-
-  @override
-  @failingTest
-  test_reversedTypeArguments() {
-    // Failed to resolve 4 nodes
-    return super.test_reversedTypeArguments();
-  }
-
-  @override
-  @failingTest
   @FastaProblem('https://github.com/dart-lang/sdk/issues/33677')
   test_undefinedIdentifier_synthetic_whenExpression() {
     // Expected 0 errors of type StaticTypeWarningCode.UNDEFINED_GETTER, found 1 (29)
diff --git a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
index 8df0aa8..7359ca5b 100644
--- a/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/non_hint_code_kernel_test.dart
@@ -54,13 +54,6 @@
 
   @override
   @failingTest
-  test_propagatedFieldType() {
-    // Failed to resolve 1 nodes
-    return super.test_propagatedFieldType();
-  }
-
-  @override
-  @failingTest
   @notForDart2
   test_undefinedOperator_binaryExpression_inSubtype() async {
     await super.test_undefinedOperator_binaryExpression_inSubtype();
diff --git a/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart b/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart
index 1ac4f2b..a11639e 100644
--- a/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart
+++ b/pkg/analyzer/test/generated/static_type_analyzer_kernel_test.dart
@@ -19,11 +19,4 @@
 
   @override
   bool get useCFE => true;
-
-  @override
-  @failingTest
-  test_staticMethods_classTypeParameters_genericMethod() {
-    // Bad state: Not found U in m<S>(S s) → void
-    return super.test_staticMethods_classTypeParameters_genericMethod();
-  }
 }
diff --git a/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart b/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
index 08a0800..363b81f 100644
--- a/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/static_type_warning_code_kernel_test.dart
@@ -141,13 +141,6 @@
 
   @override
   @failingTest
-  test_forIn_typeBoundGood() {
-    // Failed to resolve 1 nodes
-    return super.test_forIn_typeBoundGood();
-  }
-
-  @override
-  @failingTest
   test_forIn_upcast() {
     // Failed to resolve 1 nodes
     return super.test_forIn_upcast();
@@ -532,13 +525,6 @@
 
   @override
   @failingTest
-  test_returnOfInvalidType_not_issued_for_valid_generic_return() {
-    // Failed to resolve 2 nodes
-    return super.test_returnOfInvalidType_not_issued_for_valid_generic_return();
-  }
-
-  @override
-  @failingTest
   test_returnOfInvalidType_void() async {
     // Expected 1 errors of type StaticTypeWarningCode.RETURN_OF_INVALID_TYPE, found 0
     await super.test_returnOfInvalidType_void();
diff --git a/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart b/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart
index 804de7b..e8408a0 100644
--- a/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart
+++ b/pkg/analyzer/test/generated/static_warning_code_kernel_test.dart
@@ -139,27 +139,6 @@
 
   @override
   @failingTest
-  test_argumentTypeNotAssignable_invocation_functionParameter_generic() {
-    return super
-        .test_argumentTypeNotAssignable_invocation_functionParameter_generic();
-  }
-
-  @override
-  @failingTest
-  test_argumentTypeNotAssignable_invocation_generic() {
-    // Failed to resolve 1 nodes
-    return super.test_argumentTypeNotAssignable_invocation_generic();
-  }
-
-  @override
-  @failingTest
-  test_argumentTypeNotAssignable_new_generic() {
-    // Failed to resolve 1 nodes
-    return super.test_argumentTypeNotAssignable_new_generic();
-  }
-
-  @override
-  @failingTest
   @potentialAnalyzerProblem
   test_assignmentToClass() async {
     return super.test_assignmentToClass();
@@ -819,14 +798,6 @@
 
   @override
   @failingTest
-  test_invalidMethodOverrideNormalParamType_superclass_interface() {
-    // Failed to resolve 2 nodes
-    return super
-        .test_invalidMethodOverrideNormalParamType_superclass_interface();
-  }
-
-  @override
-  @failingTest
   @potentialAnalyzerProblem
   test_invalidMethodOverrideNormalParamType_twoInterfaces_conflicting() async {
     return super
@@ -1476,13 +1447,6 @@
 
   @override
   @failingTest
-  test_typeParameterReferencedByStatic_methodBodyReference() {
-    // Failed to resolve 1 nodes
-    return super.test_typeParameterReferencedByStatic_methodBodyReference();
-  }
-
-  @override
-  @failingTest
   @potentialAnalyzerProblem
   test_typeParameterReferencedByStatic_methodParameter() async {
     return super.test_typeParameterReferencedByStatic_methodParameter();
diff --git a/pkg/analyzer/test/generated/strong_mode_kernel_test.dart b/pkg/analyzer/test/generated/strong_mode_kernel_test.dart
index 0e09713..982bea1 100644
--- a/pkg/analyzer/test/generated/strong_mode_kernel_test.dart
+++ b/pkg/analyzer/test/generated/strong_mode_kernel_test.dart
@@ -37,13 +37,6 @@
 
   @override
   @failingTest
-  test_constrainedByBounds1() {
-    // Failed to resolve 1 nodes
-    return super.test_constrainedByBounds1();
-  }
-
-  @override
-  @failingTest
   test_constrainedByBounds2() async {
     // Expected: InterfaceTypeImpl:<int>
     await super.test_constrainedByBounds2();
@@ -58,13 +51,6 @@
 
   @override
   @failingTest
-  test_constrainedByBounds4() {
-    // Failed to resolve 1 nodes
-    return super.test_constrainedByBounds4();
-  }
-
-  @override
-  @failingTest
   test_constrainedByBounds5() async {
     // Bad state: Expected a type for 4 at 119; got one for kernel offset 118
     await super.test_constrainedByBounds5();
@@ -100,90 +86,6 @@
 
   @override
   @failingTest
-  test_futureOr_assignFromFuture() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_assignFromFuture();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_assignFromValue() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_assignFromValue();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_asyncExpressionBody() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_asyncExpressionBody();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_asyncReturn() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_asyncReturn();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_await() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_await();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_downwards1() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards1();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_downwards2() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards2();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_downwards3() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards3();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_downwards4() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards4();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_downwards5() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards5();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_downwards6() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards6();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_downwards7() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards7();
-  }
-
-  @override
-  @failingTest
   test_futureOr_downwards8() async {
     // type 'BottomTypeImpl' is not a subtype of type 'InterfaceType' in type cast where
     await super.test_futureOr_downwards8();
@@ -191,13 +93,6 @@
 
   @override
   @failingTest
-  test_futureOr_downwards9() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_downwards9();
-  }
-
-  @override
-  @failingTest
   test_futureOr_methods2() async {
     // Expected 1 errors of type StaticTypeWarningCode.UNDEFINED_METHOD, found 0
     await super.test_futureOr_methods2();
@@ -240,13 +135,6 @@
 
   @override
   @failingTest
-  test_futureOr_upwards1() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOr_upwards1();
-  }
-
-  @override
-  @failingTest
   test_futureOr_upwards2() async {
     // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0
     await super.test_futureOr_upwards2();
@@ -254,27 +142,6 @@
 
   @override
   @failingTest
-  test_futureOrNull_no_return() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOrNull_no_return();
-  }
-
-  @override
-  @failingTest
-  test_futureOrNull_no_return_value() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOrNull_no_return_value();
-  }
-
-  @override
-  @failingTest
-  test_futureOrNull_return_null() {
-    // Failed to resolve 1 nodes
-    return super.test_futureOrNull_return_null();
-  }
-
-  @override
-  @failingTest
   test_generic_partial() async {
     // AnalysisException: Element mismatch in /test.dart at class A<T>
     await super.test_generic_partial();
@@ -331,34 +198,6 @@
 
   @override
   @failingTest
-  test_inference_simplePolymorphicRecursion_function() {
-    // Failed to resolve 4 nodes
-    return super.test_inference_simplePolymorphicRecursion_function();
-  }
-
-  @override
-  @failingTest
-  test_inference_simplePolymorphicRecursion_interface() {
-    // Failed to resolve 2 nodes
-    return super.test_inference_simplePolymorphicRecursion_interface();
-  }
-
-  @override
-  @failingTest
-  test_inference_simplePolymorphicRecursion_simple() {
-    // Failed to resolve 2 nodes
-    return super.test_inference_simplePolymorphicRecursion_simple();
-  }
-
-  @override
-  @failingTest
-  test_inferGenericInstantiation() {
-    // Failed to resolve 1 nodes
-    return super.test_inferGenericInstantiation();
-  }
-
-  @override
-  @failingTest
   test_inferGenericInstantiation2() async {
     // Expected 1 errors of type StrongModeCode.STRONG_MODE_COULD_NOT_INFER, found 0;
     //          1 errors of type StaticWarningCode.ARGUMENT_TYPE_NOT_ASSIGNABLE, found 0
@@ -378,13 +217,6 @@
 
   @override
   @failingTest
-  test_partialTypes1() {
-    // Failed to resolve 2 nodes
-    return super.test_partialTypes1();
-  }
-
-  @override
-  @failingTest
   test_pinning_multipleConstraints1() async {
     // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0
     await super.test_pinning_multipleConstraints1();
@@ -392,13 +224,6 @@
 
   @override
   @failingTest
-  test_pinning_multipleConstraints2() {
-    // Failed to resolve 1 nodes
-    return super.test_pinning_multipleConstraints2();
-  }
-
-  @override
-  @failingTest
   test_pinning_multipleConstraints3() async {
     // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_CAST_LITERAL, found 0
     await super.test_pinning_multipleConstraints3();
@@ -406,34 +231,6 @@
 
   @override
   @failingTest
-  test_pinning_multipleConstraints_contravariant1() {
-    // Failed to resolve 2 nodes
-    return super.test_pinning_multipleConstraints_contravariant1();
-  }
-
-  @override
-  @failingTest
-  test_pinning_multipleConstraints_contravariant2() {
-    // Failed to resolve 2 nodes
-    return super.test_pinning_multipleConstraints_contravariant2();
-  }
-
-  @override
-  @failingTest
-  test_pinning_multipleConstraints_contravariant3() {
-    // Failed to resolve 2 nodes
-    return super.test_pinning_multipleConstraints_contravariant3();
-  }
-
-  @override
-  @failingTest
-  test_pinning_multipleConstraints_contravariant4() {
-    // Failed to resolve 2 nodes
-    return super.test_pinning_multipleConstraints_contravariant4();
-  }
-
-  @override
-  @failingTest
   test_redirectedConstructor_named() {
     // Expected: 'A<T2, U2>'; Actual: 'A<T, U>'
     return super.test_redirectedConstructor_named();
@@ -454,48 +251,6 @@
     // TODO(brianwilkerson) Figure out why this test is flaky.
     fail('Flaky test');
   }
-
-  @override
-  @failingTest
-  test_returnType_variance1() {
-    // Failed to resolve 1 nodes
-    return super.test_returnType_variance1();
-  }
-
-  @override
-  @failingTest
-  test_returnType_variance2() {
-    // Failed to resolve 1 nodes
-    return super.test_returnType_variance2();
-  }
-
-  @override
-  @failingTest
-  test_returnType_variance3() {
-    // Failed to resolve 1 nodes
-    return super.test_returnType_variance3();
-  }
-
-  @override
-  @failingTest
-  test_returnType_variance4() {
-    // Failed to resolve 1 nodes
-    return super.test_returnType_variance4();
-  }
-
-  @override
-  @failingTest
-  test_returnType_variance5() {
-    // Failed to resolve 3 nodes
-    return super.test_returnType_variance5();
-  }
-
-  @override
-  @failingTest
-  test_returnType_variance6() {
-    // Failed to resolve 3 nodes
-    return super.test_returnType_variance6();
-  }
 }
 
 @reflectiveTest
@@ -512,34 +267,6 @@
 
   @override
   @failingTest
-  test_futureOr_promotion3() async {
-    // Failed to resolve 2 nodes
-    await super.test_futureOr_promotion3();
-  }
-
-  @override
-  @failingTest
-  test_futureOr_promotion4() {
-    // Failed to resolve 2 nodes
-    return super.test_futureOr_promotion4();
-  }
-
-  @override
-  @failingTest
-  test_genericFunction() {
-    // Failed to resolve 1 nodes
-    return super.test_genericFunction();
-  }
-
-  @override
-  @failingTest
-  test_genericFunction_bounds() {
-    // Failed to resolve 1 nodes
-    return super.test_genericFunction_bounds();
-  }
-
-  @override
-  @failingTest
   test_genericFunction_parameter() async {
     // Failed to resolve 1 nodes:
     await super.test_genericFunction_parameter();
@@ -547,20 +274,6 @@
 
   @override
   @failingTest
-  test_genericFunction_static() {
-    // Failed to resolve 1 nodes
-    return super.test_genericFunction_static();
-  }
-
-  @override
-  @failingTest
-  test_genericMethod() async {
-    // Failed to resolve 1 nodes
-    await super.test_genericMethod();
-  }
-
-  @override
-  @failingTest
   test_genericMethod_explicitTypeParams() async {
     // Bad state: Found 2 argument types for 1 type arguments
     await super.test_genericMethod_explicitTypeParams();
@@ -642,13 +355,6 @@
 
   @override
   @failingTest
-  test_genericMethod_nestedBound() async {
-    // Failed to resolve 1 nodes
-    await super.test_genericMethod_nestedBound();
-  }
-
-  @override
-  @failingTest
   test_genericMethod_nestedCapture() async {
     // Bad state: Found 2 argument types for 1 type arguments
     await super.test_genericMethod_nestedCapture();
@@ -656,34 +362,6 @@
 
   @override
   @failingTest
-  test_genericMethod_nestedFunctions() async {
-    // Failed to resolve 1 nodes
-    await super.test_genericMethod_nestedFunctions();
-  }
-
-  @override
-  @failingTest
-  test_genericMethod_override() async {
-    // Failed to resolve 2 nodes
-    await super.test_genericMethod_override();
-  }
-
-  @override
-  @failingTest
-  test_genericMethod_override_bounds() async {
-    // Failed to resolve 3 nodes
-    await super.test_genericMethod_override_bounds();
-  }
-
-  @override
-  @failingTest
-  test_genericMethod_override_differentContextsSameBounds() async {
-    // Failed to resolve 4 nodes
-    await super.test_genericMethod_override_differentContextsSameBounds();
-  }
-
-  @override
-  @failingTest
   test_genericMethod_override_invalidContravariantTypeParamBounds() async {
     // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0
     await super
@@ -700,13 +378,6 @@
 
   @override
   @failingTest
-  test_genericMethod_override_invalidReturnType() {
-    // Failed to resolve 2 nodes
-    return super.test_genericMethod_override_invalidReturnType();
-  }
-
-  @override
-  @failingTest
   test_genericMethod_override_invalidTypeParamCount() async {
     // Expected 1 errors of type StrongModeCode.STRONG_MODE_INVALID_METHOD_OVERRIDE, found 0
     await super.test_genericMethod_override_invalidTypeParamCount();
@@ -734,27 +405,6 @@
   }
 
   @override
-  @failingTest
-  test_instantiateToBounds_method_ok_referenceOther_before() {
-    // Failed to resolve 2 nodes
-    return super.test_instantiateToBounds_method_ok_referenceOther_before();
-  }
-
-  @override
-  @failingTest
-  test_instantiateToBounds_method_ok_simpleBounds() {
-    // Failed to resolve 1 nodes
-    return super.test_instantiateToBounds_method_ok_simpleBounds();
-  }
-
-  @override
-  @failingTest
-  test_issue32396() {
-    // Failed to resolve 1 nodes
-    return super.test_issue32396();
-  }
-
-  @override
   test_notInstantiatedBound_class_error_recursion_less_direct() async {
     return super.test_notInstantiatedBound_class_error_recursion_less_direct();
   }
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
index db34b81..d30217a 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_resolution_test.dart
@@ -5793,6 +5793,22 @@
     }
   }
 
+  test_reference_to_class_type_parameter() async {
+    addTestFile('''
+class C<T> {
+  void f() {
+    T x;
+  }
+}
+''');
+    await resolveTestFile();
+    var tElement = findElement.class_('C').typeParameters[0];
+    var tReference = findNode.simple('T x');
+    var tReferenceType = tReference.staticType as TypeParameterType;
+    expect(tReferenceType.element, same(tElement));
+    assertElement(tReference, tElement);
+  }
+
   test_stringInterpolation() async {
     String content = r'''
 void main() {