diff --git a/lib/src/rules/avoid_types_as_parameter_names.dart b/lib/src/rules/avoid_types_as_parameter_names.dart
index b5ad339..5ab51d0 100644
--- a/lib/src/rules/avoid_types_as_parameter_names.dart
+++ b/lib/src/rules/avoid_types_as_parameter_names.dart
@@ -4,7 +4,6 @@
 
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/ast/visitor.dart';
-import 'package:analyzer/dart/element/element.dart';
 
 import '../analyzer.dart';
 
@@ -37,7 +36,7 @@
   @override
   void registerNodeProcessors(
       NodeLintRegistry registry, LinterContext context) {
-    final visitor = _Visitor(this, context);
+    final visitor = _Visitor(this);
     registry.addFormalParameterList(this, visitor);
     registry.addCatchClause(this, visitor);
   }
@@ -45,14 +44,21 @@
 
 class _Visitor extends SimpleAstVisitor<void> {
   final LintRule rule;
-  final LinterContext context;
 
-  _Visitor(this.rule, this.context);
+  _Visitor(this.rule);
+
+  bool isTypeName(String name) =>
+      // TODO(a14n) test that parameter name matches a existing type. No api to do
+      // that for now.
+      // todo (pq): consider adding a lookup method to LinterContext.
+      name != null &&
+      (name.startsWith(RegExp('[A-Z]')) ||
+          ['num', 'int', 'double', 'bool', 'dynamic'].contains(name));
 
   @override
   void visitCatchClause(CatchClause node) {
     final parameter = node.exceptionParameter;
-    if (parameter != null && _isTypeName(node, parameter)) {
+    if (parameter != null && isTypeName(parameter.name)) {
       rule.reportLint(parameter);
     }
   }
@@ -63,18 +69,9 @@
 
     for (final parameter in node.parameters) {
       if (parameter.declaredElement.hasImplicitType &&
-          _isTypeName(node, parameter.identifier)) {
+          isTypeName(parameter.identifier.name)) {
         rule.reportLint(parameter.identifier);
       }
     }
   }
-
-  bool _isTypeName(AstNode scope, SimpleIdentifier node) {
-    final result = context.resolveNameInScope(node.name, false, scope);
-    if (result.isRequestedName) {
-      final element = result.element;
-      return element is ClassElement || element is FunctionTypeAliasElement;
-    }
-    return false;
-  }
 }
diff --git a/test/rules/avoid_types_as_parameter_names.dart b/test/rules/avoid_types_as_parameter_names.dart
index 75c7f76..9bb3af6 100644
--- a/test/rules/avoid_types_as_parameter_names.dart
+++ b/test/rules/avoid_types_as_parameter_names.dart
@@ -28,7 +28,7 @@
   bool, // LINT
 ]);
 typedef f6 = int Function(int); // OK
-typedef void f7(Undefined); // OK
+typedef void f7(Undefined); // LINT
 
 m1(f()) => null; // OK
 m2(f(int a)) => null; // OK
@@ -36,9 +36,6 @@
 m4(f(num a, {int})) => null; // LINT
 m5(f(double a, [bool])) => null; // LINT
 m6(int Function(int) f)=> null; // OK
-m7(f(Undefined)) => null; // OK
-m8(f6) => null; // LINT
-m9(f7) => null; // LINT
-m10(m1) => null; // OK
+m7(f(Undefined)) => null; // LINT
 
 final void Function(Object, [StackTrace]) onError = null; // OK
