diff --git a/lib/src/rules/avoid_types_as_parameter_names.dart b/lib/src/rules/avoid_types_as_parameter_names.dart index 54a35aef7..1401a6c50 100644 --- a/lib/src/rules/avoid_types_as_parameter_names.dart +++ b/lib/src/rules/avoid_types_as_parameter_names.dart @@ -68,8 +68,6 @@ class _Visitor extends SimpleAstVisitor { @override void visitFormalParameterList(FormalParameterList node) { - if (node.parent is GenericFunctionType) return; - for (var parameter in node.parameters) { var declaredElement = parameter.declaredElement; var name = parameter.name; @@ -87,7 +85,9 @@ class _Visitor extends SimpleAstVisitor { var result = context.resolveNameInScope(name.lexeme, false, scope); if (result.isRequestedName) { var element = result.element; - return element is ClassElement || element is TypeAliasElement; + return element is ClassElement || + element is TypeAliasElement || + element is TypeParameterElement; } return false; } diff --git a/test_data/rules/avoid_types_as_parameter_names.dart b/test_data/rules/avoid_types_as_parameter_names.dart index 28f516121..3d4ce3445 100644 --- a/test_data/rules/avoid_types_as_parameter_names.dart +++ b/test_data/rules/avoid_types_as_parameter_names.dart @@ -45,4 +45,14 @@ m10(m1) => null; // OK class FieldFormalParameter { final int num; FieldFormalParameter(this.num); // OK -} \ No newline at end of file +} + +void m11(X) {} // LINT + +void m12(int Function(T) g) {} // OK + +class C { + C.name(); + factory C(X) => C.name(); // LINT + void m(void Function(X) h) {} // OK +}