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

// Oracle is generic to test the inference in conditions of if-elements.
oracle<T>([T? t]) => true;

testIfElement(dynamic dynVar, List<int> listInt, List<double> listDouble,
    Map<String, int> mapToInt, Map<String, double> mapToDouble) {
  var list10 = [if (oracle("foo")) 42];
  var set10 = {if (oracle("foo")) 42, null};
  var map10 = {if (oracle("foo")) "bar": 42, "baz": null};
  var list11 = [if (oracle("foo")) dynVar];
  var set11 = {if (oracle("foo")) dynVar, null};
  var map11 = {if (oracle("foo")) "bar": dynVar, "baz": null};
  var list12 = [if (oracle("foo")) [42]];
  var set12 = {if (oracle("foo")) [42], null};
  var map12 = {if (oracle("foo")) "bar": [42], "baz": null};
  var list20 = [if (oracle("foo")) ...[42]];
  var set20 = {if (oracle("foo")) ...[42], null};
  var map20 = {if (oracle("foo")) ...{"bar": 42}, "baz": null};
  var list21 = [if (oracle("foo")) ...[dynVar]];
  var set21 = {if (oracle("foo")) ...[dynVar], null};
  var map21 = {if (oracle("foo")) ...{"bar": dynVar}, "baz": null};
  var list22 = [if (oracle("foo")) ...[[42]]];
  var set22 = {if (oracle("foo")) ...[[42]], null};
  var map22 = {if (oracle("foo")) ...{"bar": [42]}, "baz": null};
  var list30 = [if (oracle("foo")) if (oracle()) ...[42]];
  var set30 = {if (oracle("foo")) if (oracle()) ...[42], null};
  var map30 = {if (oracle("foo")) if (oracle()) ...{"bar": 42}, "baz": null};
  var list31 = [if (oracle("foo")) if (oracle()) ...[dynVar]];
  var set31 = {if (oracle("foo")) if (oracle()) ...[dynVar], null};
  var map31 = {if (oracle("foo")) if (oracle()) ...{"bar": dynVar}, "baz": null};
  var list33 = [if (oracle("foo")) if (oracle()) ...[[42]]];
  var set33 = {if (oracle("foo")) if (oracle()) ...[[42]], null};
  var map33 = {if (oracle("foo")) if (oracle()) ...{"bar": [42]}, "baz": null};
  List<List<int>> list40 = [if (oracle("foo")) ...[[]]];
  Set<List<int>?> set40 = {if (oracle("foo")) ...[[]], null};
  Map<String, List<int>?> map40 = {if (oracle("foo")) ...{"bar", []}, "baz": null};
  List<List<int>> list41 = [if (oracle("foo")) ...{[]}];
  Set<List<int>?> set41 = {if (oracle("foo")) ...{[]}, null};
  List<List<int>> list42 = [if (oracle("foo")) if (oracle()) ...[[]]];
  Set<List<int>?> set42 = {if (oracle("foo")) if (oracle()) ...[[]], null};
  Map<String, List<int>?> map42 = {if (oracle("foo")) if (oracle()) ...{"bar": []}, "baz": null};
  List<int> list50 = [if (oracle("foo")) ...[]];
  Set<int?> set50 = {if (oracle("foo")) ...[], null};
  Map<String, int?> map50 = {if (oracle("foo")) ...{}, "baz": null};
  List<int> list51 = [if (oracle("foo")) ...{}];
  Set<int?> set51 = {if (oracle("foo")) ...{}, null};
  List<int> list52 = [if (oracle("foo")) if (oracle()) ...[]];
  Set<int?> set52 = {if (oracle("foo")) if (oracle()) ...[], null};
  Map<String, int?> map52 = {if (oracle("foo")) if (oracle()) ...{}, "baz": null};
  List<List<int>> list60 = [if (oracle("foo")) ...[[]]];
  Set<List<int>?> set60 = {if (oracle("foo")) ...[[]], null};
  Map<String, List<int>?> map60 = {if (oracle("foo")) ...{"bar": []}, "baz": null};
  List<List<int>> list61 = [if (oracle("foo")) if (oracle()) ...[[]]];
  Set<List<int>?> set61 = {if (oracle("foo")) if (oracle()) ...[[]], null};
  Map<String, List<int>?> map61 = {if (oracle("foo")) if (oracle()) ...{"bar": []}, "baz": null};
  List<List<int>> list70 = [if (oracle("foo")) []];
  Set<List<int>?> set70 = {if (oracle("foo")) [], null};
  List<List<int>> list71 = [if (oracle("foo")) if (oracle()) []];
  Set<List<int>?> set71 = {if (oracle("foo")) if (oracle()) [], null};
  var list80 = [if (oracle("foo")) 42 else 3.14];
  var set80 = {if (oracle("foo")) 42 else 3.14, null};
  var map80 = {if (oracle("foo")) "bar": 42 else "bar": 3.14, "baz": null};
  var list81 = [if (oracle("foo")) ...listInt else ...listDouble];
  var set81 = {if (oracle("foo")) ...listInt else ...listDouble, null};
  var map81 = {if (oracle("foo")) ...mapToInt else ...mapToDouble, "baz": null};
  var list82 = [if (oracle("foo")) ...listInt else ...dynVar];
  var set82 = {if (oracle("foo")) ...listInt else ...dynVar, null};
  var map82 = {if (oracle("foo")) ...mapToInt else ...dynVar, null};
  var list83 = [if (oracle("foo")) 42 else ...listDouble];
  var set83 = {if (oracle("foo")) ...listInt else 3.14, null};
  var map83 = {if (oracle("foo")) ...mapToInt else "bar": 3.14, "baz": null};
  List<int> list90 = [if (oracle("foo")) dynVar];
  Set<int?> set90 = {if (oracle("foo")) dynVar, null};
  Map<String, int?> map90 = {if (oracle("foo")) "bar": dynVar, "baz": null};
  List<int> list91 = [if (oracle("foo")) ...dynVar];
  Set<int?> set91 = {if (oracle("foo")) ...dynVar, null};
  Map<String, int?> map91 = {if (oracle("foo")) ...dynVar, "baz": null};
  List<int> list100 = [if (dynVar) 42];
  Set<int> set100 = {if (dynVar) 42};
  Map<int, int> map100 = {if (dynVar) 42: 42};
}

testIfElementErrors(Map<int, int> map) {
  <int>[if (oracle("foo")) "bar"];
  <int?>{if (oracle("foo")) "bar", null};
  <String, int?>{if (oracle("foo")) "bar": "bar", "baz": null};
  <int>[if (oracle("foo")) ...["bar"]];
  <int?>{if (oracle("foo")) ...["bar"], null};
  <String, int?>{if (oracle("foo")) ...{"bar": "bar"}, "baz": null};
  <int>[if (oracle("foo")) ...map];
  <int?>{if (oracle("foo")) ...map, null};
  <String, int?>{if (oracle("foo")) ...["bar"], "baz": null};
  <String>[if (oracle("foo")) 42 else 3.14];
  <String?>{if (oracle("foo")) 42 else 3.14, null};
  <String, String?>{if (oracle("foo")) "bar": 42 else "baz": 3.14, "baz": null};
  <int>[if (oracle("foo")) ...map else 42];
  <int?>{if (oracle("foo")) ...map else 42, null};
  <String, int?>{if (oracle("foo")) ...[42] else "bar": 42, "baz": null};
  <int>[if (oracle("foo")) 42 else ...map];
  <int?>{if (oracle("foo")) ...map else 42, null};
  <String, int?>{if (oracle("foo")) "bar": 42 else ...[42], "baz": null};

  Set<dynamic> set10 = {if (oracle("foo")) 42 else "bar": 3.14};
  Map<dynamic, dynamic> map10 = {if (oracle("foo")) 42 else "bar": 3.14};
  Set<dynamic> set11 = {if (oracle("foo")) "bar": 3.14 else 42};
  Map<dynamic, dynamic> map11 = {if (oracle("foo")) "bar": 3.14 else 42};
  var map12 = {if (oracle("foo")) 42 else "bar": 3.14};
  var map13 = {if (oracle("foo")) "bar": 3.14 else 42};
  List<int> list20 = [if (42) 42];
  Set<int> set20 = {if (42) 42};
  Map<int, int> map30 = {if (42) 42: 42};
  List<String> list40 = <String>[if (oracle("foo")) true else 42];
  Set<String> set40 = <String>{if (oracle("foo")) true else 42};
  Map<String, int> map40 = <String, int>{if (oracle("foo")) true: 42 else 42: 42};
  Map<int, String> map41 = <int, String>{if (oracle("foo")) 42: true else 42: 42};
}

testForElement(dynamic dynVar, List<int> listInt, List<double> listDouble, int
index, Map<String, int> mapStringInt, Map<String, double> mapStringDouble) {
  var list10 = [for (int i = 0; oracle("foo"); i++) 42];
  var set10 = {for (int i = 0; oracle("foo"); i++) 42, null};
  var map10 = {for (int i = 0; oracle("foo"); i++) "bar": 42, "baz": null};
  var list11 = [for (int i = 0; oracle("foo"); i++) dynVar];
  var set11 = {for (int i = 0; oracle("foo"); i++) dynVar, null};
  var map11 = {for (int i = 0; oracle("foo"); i++) "bar": dynVar, "baz": null};
  var list12 = [for (int i = 0; oracle("foo"); i++) [42]];
  var set12 = {for (int i = 0; oracle("foo"); i++) [42], null};
  var map12 = {for (int i = 0; oracle("foo"); i++) "bar": [42], "baz": null};
  var list20 = [for (int i = 0; oracle("foo"); i++) ...[42]];
  var set20 = {for (int i = 0; oracle("foo"); i++) ...[42], null};
  var map20 = {for (int i = 0; oracle("foo"); i++) ...{"bar": 42}, "baz": null};
  var list21 = [for (int i = 0; oracle("foo"); i++) ...[dynVar]];
  var set21 = {for (int i = 0; oracle("foo"); i++) ...[dynVar], null};
  var map21 = {for (int i = 0; oracle("foo"); i++) ...{"bar": dynVar}, "baz": null};
  var list22 = [for (int i = 0; oracle("foo"); i++) ...[[42]]];
  var set22 = {for (int i = 0; oracle("foo"); i++) ...[[42]], null};
  var map22 = {for (int i = 0; oracle("foo"); i++) ...{"bar": [42]}, "baz": null};
  var list30 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[42]];
  var set30 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[42], null};
  var map30 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": 42}, "baz": null};
  var list31 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[dynVar]];
  var set31 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[dynVar], null};
  var map31 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": dynVar}, "baz": null};
  var list33 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[42]]];
  var set33 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[42]], null};
  var map33 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": [42]}, "baz": null};
  List<List<int>> list40 = [for (int i = 0; oracle("foo"); i++) ...[[]]];
  Set<List<int>?> set40 = {for (int i = 0; oracle("foo"); i++) ...[[]], null};
  Map<String, List<int>?> map40 = {for (int i = 0; oracle("foo"); i++) ...{"bar": []}, "baz": null};
  List<List<int>> list41 = [for (int i = 0; oracle("foo"); i++) ...{[]}];
  Set<List<int>?> set41 = {for (int i = 0; oracle("foo"); i++) ...{[]}, null};
  List<List<int>> list42 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]]];
  Set<List<int>?> set42 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]], null};
  Map<String, List<int>?> map42 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": []}, "baz": null};
  List<int> list50 = [for (int i = 0; oracle("foo"); i++) ...[]];
  Set<int?> set50 = {for (int i = 0; oracle("foo"); i++) ...[], null};
  Map<String, int?> map50 = {for (int i = 0; oracle("foo"); i++) ...{}, "baz": null};
  List<int> list51 = [for (int i = 0; oracle("foo"); i++) ...{}];
  Set<int?> set51 = {for (int i = 0; oracle("foo"); i++) ...{}, null};
  List<int> list52 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[]];
  Set<int?> set52 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[], null};
  List<List<int>> list60 = [for (int i = 0; oracle("foo"); i++) ...[[]]];
  Set<List<int>?> set60 = {for (int i = 0; oracle("foo"); i++) ...[[]], null};
  Map<String, List<int>?> map60 = {for (int i = 0; oracle("foo"); i++) ...{"bar": []}, "baz": null};
  List<List<int>> list61 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]]];
  Set<List<int>?> set61 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...[[]], null};
  Map<String, List<int>?> map61 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...{"bar": []}, "baz": null};
  List<List<int>> list70 = [for (int i = 0; oracle("foo"); i++) []];
  Set<List<int>?> set70 = {for (int i = 0; oracle("foo"); i++) [], null};
  Map<String, List<int>?> map70 = {for (int i = 0; oracle("foo"); i++) "bar": [], "baz": null};
  List<List<int>> list71 = [for (int i = 0; oracle("foo"); i++) if (oracle()) []];
  Set<List<int>?> set71 = {for (int i = 0; oracle("foo"); i++) if (oracle()) [], null};
  Map<String, List<int>?> map71 = {for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": [], "baz": null};
  var list80 = [for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14];
  var set80 = {for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14, null};
  var map80 = {for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": 42 else "bar": 3.14, "baz": null};
  var list81 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...listDouble];
  var set81 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...listDouble, null};
  var map81 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...mapStringInt else ...mapStringDouble, "baz": null};
  var list82 = [for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...dynVar];
  var set82 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else ...dynVar, null};
  var map82 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...mapStringInt else ...dynVar, "baz": null};
  var list83 = [for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else ...listDouble];
  var set83 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...listInt else 3.14, null};
  var map83 = {for (int i = 0; oracle("foo"); i++) if (oracle()) ...mapStringInt else "bar": 3.14, "baz": null};
  List<int> list90 = [for (int i = 0; oracle("foo"); i++) dynVar];
  Set<int?> set90 = {for (int i = 0; oracle("foo"); i++) dynVar, null};
  Map<String, int?> map90 = {for (int i = 0; oracle("foo"); i++) "bar": dynVar, "baz": null};
  List<int> list91 = [for (int i = 0; oracle("foo"); i++) ...dynVar];
  Set<int?> set91 = {for (int i = 0; oracle("foo"); i++) ...dynVar, null};
  Map<String, int?> map91 = {for (int i = 0; oracle("foo"); i++) ...dynVar, "baz": null};
  List<int> list100 = <int>[for (index = 0; oracle("foo"); index++) 42];
  Set<int> set100 = <int>{for (index = 0; oracle("foo"); index++) 42};
  Map<String, int> map100 = <String, int>{for (index = 0; oracle("foo"); index++) "bar": 42};
  var list110 = [for (var i in [1, 2, 3]) i];
  var set110 = {for (var i in [1, 2, 3]) i, null};
  var map110 = {for (var i in [1, 2, 3]) "bar": i, "baz": null};
  List<int> list120 = [for (var i in dynVar) i];
  Set<int?> set120 = {for (var i in dynVar) i, null};
  Map<String, int?> map120 = {for (var i in dynVar) "bar": i, "baz": null};
  List<int> list130 = [for (var i = 1; i < 2; i++) i];
  Set<int> set130 = {for (var i = 1; i < 2; i++) i};
  Map<int, int> map130 = {for (var i = 1; i < 2; i++) i: i};
}

testForElementErrors(Map<int, int> map, List<int> list) async {
  <int>[for (int i = 0; oracle("foo"); i++) "bar"];
  <int?>{for (int i = 0; oracle("foo"); i++) "bar", null};
  <int, int?>{for (int i = 0; oracle("foo"); i++) "bar": "bar", "baz": null};
  <int>[for (int i = 0; oracle("foo"); i++) ...["bar"]];
  <int?>{for (int i = 0; oracle("foo"); i++) ...["bar"], null};
  <int, int?>{for (int i = 0; oracle("foo"); i++) ...{"bar": "bar"}, "baz": null};
  <int>[for (int i = 0; oracle("foo"); i++) ...map];
  <int?>{for (int i = 0; oracle("foo"); i++) ...map, null};
  <int, int?>{for (int i = 0; oracle("foo"); i++) ...list, 42: null};
  <String>[for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14];
  <String?>{for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else 3.14, null};
  <String, String?>{for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": 42 else "bar": 3.14, "baz": null};
  <int>[for (int i = 0; oracle("foo"); i++) if (oracle()) ...map else 42];
  <int?>{for (int i = 0; oracle("foo"); i++) if (oracle()) ...map else 42, null};
  <String, int?>{for (int i = 0; oracle("foo"); i++) if (oracle()) ...list else "bar": 42, "baz": null};
  <int>[for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else ...map];
  <int?>{for (int i = 0; oracle("foo"); i++) if (oracle()) 42 else ...map, null};
  <String, int?>{for (int i = 0; oracle("foo"); i++) if (oracle()) "bar": 42 else ...list, "baz": null};

  final i = 0;
  <int>[for (i in <int>[1]) i];
  <int?>{for (i in <int>[1]) i, null};
  <String, int?>{for (i in <int>[1]) "bar": i, "baz": null};

  var list10 = [for (var i in "not iterable") i];
  var set10 = {for (var i in "not iterable") i, null};
  var map10 = {for (var i in "not iterable") "bar": i, "baz": null};
  var list20 = [for (int i in ["not", "int"]) i];
  var set20 = {for (int i in ["not", "int"]) i, null};
  var map20 = {for (int i in ["not", "int"]) "bar": i, "baz": null};
  var list30 = [await for (var i in "not stream") i];
  var set30 = {await for (var i in "not stream") i, null};
  var map30 = {await for (var i in "not stream") "bar": i, "baz": null};
  var list40 = [await for (int i in Stream.fromIterable(["not", "int"])) i];
  var set40 = {await for (int i in Stream.fromIterable(["not", "int"])) i, null};
  var map40 = {await for (int i in Stream.fromIterable(["not", "int"])) "bar": i, "baz": null};
  var list50 = [await for (;;) 42];
  var set50 = {await for (;;) 42, null};
  var map50 = {await for (;;) "bar": 42, "baz": null};
  var list60 = [for (; "not bool";) 42];
  var set60 = {for (; "not bool";) 42, null};
  var map60 = {for (; "not bool";) "bar": 42, "baz": null};
}

testForElementErrorsNotAsync(Stream<int> stream) {
  <int>[await for (int i in stream) i];
  <int>{await for (int i in stream) i};
  <String, int>{await for (int i in stream) "bar": i};
}

class A {}

class B extends A {
  int get foo => 42;
}

testPromotion(A a) {
  List<int> list10 = [if (a is B) a.foo];
  Set<int> set10 = {if (a is B) a.foo};
  Map<int, int> map10 = {if (a is B) a.foo: a.foo};
}

main() {}
