// Copyright (c) 2018, 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.

/// @assertion It is a static error when the type of the iterator expression in a
/// synchronous for-in element may not be assigned to Iterable<T> for some type T
///
/// @description Checks that it is a static error when the type of the iterator
/// expression in a synchronous for-in element may not be assigned to
/// Iterable<T> for some type T.
/// @author sgrekhov@unipro.ru


main() {
  [for (var i in "not iterable") i];
  //             ^^^^^^^^^^^^^^
  // [analyzer] COMPILE_TIME_ERROR.FOR_IN_OF_INVALID_TYPE
  // [cfe] The type 'String' used in the 'for' loop must implement 'Iterable<dynamic>'.
  [for (var i in 3.14) i];
  //             ^^^^
  // [analyzer] COMPILE_TIME_ERROR.FOR_IN_OF_INVALID_TYPE
  // [cfe] The type 'double' used in the 'for' loop must implement 'Iterable<dynamic>'.
}
