| // Copyright (c) 2017, 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. |
| |
| // test w/ `dart test -N omit_local_variable_types` |
| |
| // ignore_for_file: prefer_foreach |
| |
| f() { |
| dynamic x = 0; // OK |
| dynamic y = x; // OK |
| print(y); |
| } |
| |
| abstract class StringIterator<E> implements Iterable<E> {} |
| |
| void printItems2(StringIterator<String> items) { |
| for (String item in items) { // LINT |
| print(item); |
| } |
| } |
| |
| void printItems2a(StringIterator<String> items) { |
| for (dynamic item in items) { // OK |
| print(item); |
| } |
| } |
| |
| abstract class StringIterator2 implements StringIterator<String> {} |
| |
| void printItems3(StringIterator2 items) { |
| for (String item in items) { // LINT |
| print(item); |
| } |
| } |
| |
| void printItems(Iterable items) { |
| for (String item in items) { // OK |
| print(item); |
| } |
| } |
| |
| void foo() { |
| final array = []; |
| for (a in array) { // OK |
| |
| } |
| } |
| |
| int goodGlobalVariable = 3, a = 4; // OK |
| |
| Map<int, List<Person>> badGroupByZip(Iterable<Person> people) { |
| Map<int, List<Person>> peopleByZip = <int, List<Person>>{}; // LINT |
| |
| for (Person person in people) { // LINT |
| peopleByZip.putIfAbsent(person.zip, () => <Person>[]); |
| peopleByZip[person.zip].add(person); |
| } |
| |
| return peopleByZip; |
| } |
| |
| Map<int, List<Person>> goodGroupByZip(Iterable<Person> people) { |
| var peopleByZip = <int, List<Person>>{}; // OK |
| |
| for (final person in people) { // OK |
| peopleByZip.putIfAbsent(person.zip, () => <Person>[]); |
| peopleByZip[person.zip].add(person); |
| } |
| |
| return peopleByZip; |
| } |
| |
| class Person { |
| int zip = 3; // OK |
| |
| Person() { |
| Iterable a = [], b = new Iterable.empty(); // OK |
| Iterable c = new Iterable.empty(), d = new Iterable.empty(); // LINT |
| } |
| } |
| |
| class LinkedListNode { |
| LinkedListNode next; |
| } |
| void traverse(LinkedListNode head) { |
| for (LinkedListNode node = head; node != null; node = node.next) { // LINT |
| // doSomething |
| } |
| } |