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

// SharedOptions=--enable-experiment=control-flow-collections

void main() {
  Object obj = true;

  // Non-Boolean if condition.
  var _ = <int>[if (1) 2]; //# 00: compile-time error
  var _ = <int, int>{if (1) 2: 2}; //# 01: compile-time error
  var _ = <int>{if (1) 2}; //# 02: compile-time error

  // Wrong then element type.
  var _ = <int>[if (true) "s"]; //# 06: compile-time error
  var _ = <int, int>{if (true) "s": 1}; //# 07: compile-time error
  var _ = <int, int>{if (true) 1: "s"}; //# 08: compile-time error
  var _ = <int>{if (true) "s"}; //# 09: compile-time error

  // Wrong else element type.
  var _ = <int>[if (false) 1 else "s"]; //# 10: compile-time error
  var _ = <int, int>{if (false) 1: 1 else "s": 2}; //# 11: compile-time error
  var _ = <int, int>{if (false) 1: 1 else 2: "s"}; //# 12: compile-time error
  var _ = <int>{if (false) 1 else "s"}; //# 13: compile-time error

  // Non-Boolean for condition.
  var _ = <int>[for (; 1;) 2]; //# 14: compile-time error
  var _ = <int, int>{for (; 1;) 2: 2}; //# 15: compile-time error
  var _ = <int>{for (; 1;) 2}; //# 16: compile-time error

  // Wrong for-in element type.
  List<String> s = ["s"];
  var _ = <int>[for (int i in s) 1]; //# 20: compile-time error
  var _ = <int, int>[for (int i in s) 1: 1]; //# 21: compile-time error
  var _ = <int>{for (int i in s) 1}; //# 22: compile-time error

  // Wrong for declaration element type.
  var _ = <int>[for (int i = "s";;) 1]; //# 23: compile-time error
  var _ = <int, int>[for (int i = "s";;) 1: 1]; //# 24: compile-time error
  var _ = <int>{for (int i = "s";;) 1}; //# 25: compile-time error

  // Wrong for body element type.
  var _ = <int>[for (; false;) "s"]; //# 26: compile-time error
  var _ = <int, int>{for (; false;) "s": 1}; //# 27: compile-time error
  var _ = <int, int>{for (; false;) 1: "s"}; //# 28: compile-time error
  var _ = <int>{for (; false;) "s"}; //# 29: compile-time error
}
