Fix unsafe cast in `iterable_contains_unrelated_type` (#267).

R=alexeidiaz@google.com, brianwilkerson@google.com

Review URL: https://codereview.chromium.org//2102693002 .

Fixes: https://github.com/dart-lang/linter/issues/267
diff --git a/lib/src/rules/iterable_contains_unrelated_type.dart b/lib/src/rules/iterable_contains_unrelated_type.dart
index b30bedf..23ffd48 100644
--- a/lib/src/rules/iterable_contains_unrelated_type.dart
+++ b/lib/src/rules/iterable_contains_unrelated_type.dart
@@ -134,7 +134,9 @@
 
 DartType _findIterableTypeArgument(InterfaceType type,
     {List<InterfaceType> accumulator: const []}) {
-  if (type == null || type.isObject || type.isDynamic ||
+  if (type == null ||
+      type.isObject ||
+      type.isDynamic ||
       accumulator.contains(type)) {
     return null;
   }
@@ -189,14 +191,15 @@
       return;
     }
 
-    ParameterizedType type = node.target != null
+    DartType type = node.target != null
         ? node.target.bestType
         : (node.getAncestor((a) => a is ClassDeclaration) as ClassDeclaration)
             ?.element
             ?.type;
     Expression argument = node.argumentList.arguments.first;
-    if (DartTypeUtilities.unrelatedTypes(
-        argument.bestType, _findIterableTypeArgument(type))) {
+    if (type is InterfaceType &&
+        DartTypeUtilities.unrelatedTypes(
+            argument.bestType, _findIterableTypeArgument(type))) {
       rule.reportLint(node);
     }
   }
diff --git a/test/rules/iterable_contains_unrelated_type.dart b/test/rules/iterable_contains_unrelated_type.dart
index f954d04..18bdc14 100644
--- a/test/rules/iterable_contains_unrelated_type.dart
+++ b/test/rules/iterable_contains_unrelated_type.dart
@@ -24,7 +24,7 @@
   if (list.contains(1)) print('someFunction4'); // OK
 }
 
-void someFucntion4_1() {
+void someFunction4_1() {
   List list;
   if(list.contains(null)) print('someFucntion4_1');
 }
@@ -96,6 +96,9 @@
   if (list.contains(instance)) print('someFunction12'); // LINT
 }
 
+void bug_267(list) {
+  if (list.contains('1')) print('someFunction'); // https://github.com/dart-lang/linter/issues/267
+}
 
 abstract class ClassBase {}