library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:33:32: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error4 = {if (b) 0: 1 else for (var a in list) a};
//                                ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:34:22: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error5 = {if (b) for (var a in list) a else 0: 1};
//                      ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:41:32: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error8 = {if (b) 0: 1 else for (var i = 0; i < list.length; i++) list[i]};
//                                ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:42:22: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error9 = {if (b) for (var i = 0; i < list.length; i++) list[i] else 0: 1};
//                      ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:35:14: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error6 = {
//              ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:38:14: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error7 = {
//              ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:43:15: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error10 = {
//               ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:46:15: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error11 = {
//               ^
//
// pkg/front_end/testcases/unified_collections/mixed_entries.dart:49:15: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
// var error12 = {
//               ^
//
import self as self;
import "dart:core" as core;

static field core::bool b = false;
static field core::List<dynamic> list = <dynamic>[];
static field core::Map<dynamic, dynamic> map0 = <dynamic, dynamic>{};
static field core::Map<dynamic, dynamic> map1 = block {
  final core::Map<dynamic, dynamic> #t1 = <dynamic, dynamic>{};
  if(self::b)
    #t1.{core::Map::[]=}{Invariant}(0, 1){(dynamic, dynamic) → void};
  else
    #t1.{core::Map::addAll}{Invariant}(self::map0){(core::Map<dynamic, dynamic>) → void};
} =>#t1;
static field core::Map<dynamic, dynamic> map2 = block {
  final core::Map<dynamic, dynamic> #t2 = <dynamic, dynamic>{};
  if(self::b)
    #t2.{core::Map::addAll}{Invariant}(self::map0){(core::Map<dynamic, dynamic>) → void};
  else
    #t2.{core::Map::[]=}{Invariant}(0, 1){(dynamic, dynamic) → void};
} =>#t2;
static field core::Map<dynamic, dynamic> map3 = block {
  final core::Map<dynamic, dynamic> #t3 = <dynamic, dynamic>{};
  if(self::b)
    #t3.{core::Map::addAll}{Invariant}(self::map0){(core::Map<dynamic, dynamic>) → void};
  else
    #t3.{core::Map::addAll}{Invariant}(self::map0){(core::Map<dynamic, dynamic>) → void};
} =>#t3;
static field core::Map<dynamic, core::int> map4 = block {
  final core::Map<dynamic, core::int> #t4 = <dynamic, core::int>{};
  if(self::b)
    #t4.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
  else
    for (dynamic a in self::list)
      #t4.{core::Map::[]=}{Invariant}(a, 1){(dynamic, core::int) → void};
} =>#t4;
static field core::Map<dynamic, core::int> map5 = block {
  final core::Map<dynamic, core::int> #t5 = <dynamic, core::int>{};
  if(self::b)
    for (dynamic a in self::list)
      #t5.{core::Map::[]=}{Invariant}(a, 1){(dynamic, core::int) → void};
  else
    #t5.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
} =>#t5;
static field core::Map<dynamic, core::int> map6 = block {
  final core::Map<dynamic, core::int> #t6 = <dynamic, core::int>{};
  if(self::b)
    #t6.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
  else
    for (dynamic a in self::list)
      #t6.{core::Map::addAll}{Invariant}(<dynamic, core::int>{a: 1}){(core::Map<dynamic, core::int>) → void};
} =>#t6;
static field core::Map<dynamic, core::int> map7 = block {
  final core::Map<dynamic, core::int> #t7 = <dynamic, core::int>{};
  if(self::b)
    for (dynamic a in self::list)
      #t7.{core::Map::addAll}{Invariant}(<dynamic, core::int>{a: 1}){(core::Map<dynamic, core::int>) → void};
  else
    #t7.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
} =>#t7;
static field core::Map<dynamic, core::int> map8 = block {
  final core::Map<dynamic, core::int> #t8 = <dynamic, core::int>{};
  if(self::b)
    #t8.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
  else
    for (core::int i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
      #t8.{core::Map::[]=}{Invariant}(self::list.{core::List::[]}(i){(core::int) → dynamic}, 1){(dynamic, core::int) → void};
} =>#t8;
static field core::Map<dynamic, core::int> map9 = block {
  final core::Map<dynamic, core::int> #t9 = <dynamic, core::int>{};
  if(self::b)
    for (core::int i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
      #t9.{core::Map::[]=}{Invariant}(self::list.{core::List::[]}(i){(core::int) → dynamic}, 1){(dynamic, core::int) → void};
  else
    #t9.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
} =>#t9;
static field core::Map<dynamic, core::int> map10 = block {
  final core::Map<dynamic, core::int> #t10 = <dynamic, core::int>{};
  if(self::b)
    #t10.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
  else
    for (core::int i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
      #t10.{core::Map::addAll}{Invariant}(<dynamic, core::int>{self::list.{core::List::[]}(i){(core::int) → dynamic}: 1}){(core::Map<dynamic, core::int>) → void};
} =>#t10;
static field core::Map<dynamic, core::int> map11 = block {
  final core::Map<dynamic, core::int> #t11 = <dynamic, core::int>{};
  if(self::b)
    for (core::int i = 0; i.{core::num::<}(self::list.{core::List::length}{core::int}){(core::num) → core::bool}; i = i.{core::num::+}(1){(core::num) → core::int})
      #t11.{core::Map::addAll}{Invariant}(<dynamic, core::int>{self::list.{core::List::[]}(i){(core::int) → dynamic}: 1}){(core::Map<dynamic, core::int>) → void};
  else
    #t11.{core::Map::[]=}{Invariant}(0, 1){(dynamic, core::int) → void};
} =>#t11;
static field core::Map<core::int, core::int> map12 = block {
  final core::Map<core::int, core::int> #t12 = <core::int, core::int>{};
  if(self::b)
    #t12.{core::Map::[]=}{Invariant}(0, 1){(core::int, core::int) → void};
  else
    if(self::b)
      #t12.{core::Map::addAll}{Invariant}(<core::int, core::int>{0: 1}){(core::Map<core::int, core::int>) → void};
} =>#t12;
static field core::Map<dynamic, Null> error4 = <dynamic, Null>{invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:33:32: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error4 = {if (b) 0: 1 else for (var a in list) a};
                               ^": null};
static field core::Map<dynamic, Null> error5 = <dynamic, Null>{invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:34:22: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error5 = {if (b) for (var a in list) a else 0: 1};
                     ^": null};
static field Never error6 = invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:35:14: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error6 = {
             ^";
static field Never error7 = invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:38:14: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error7 = {
             ^";
static field core::Map<dynamic, Null> error8 = <dynamic, Null>{invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:41:32: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error8 = {if (b) 0: 1 else for (var i = 0; i < list.length; i++) list[i]};
                               ^": null};
static field core::Map<dynamic, Null> error9 = <dynamic, Null>{invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:42:22: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error9 = {if (b) for (var i = 0; i < list.length; i++) list[i] else 0: 1};
                     ^": null};
static field Never error10 = invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:43:15: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error10 = {
              ^";
static field Never error11 = invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:46:15: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error11 = {
              ^";
static field Never error12 = invalid-expression "pkg/front_end/testcases/unified_collections/mixed_entries.dart:49:15: Error: Both Iterable and Map spread elements encountered in ambiguous literal.
var error12 = {
              ^";
static method main() → dynamic {}
