// 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.

/// @assertion This enables in-place literals (which aren't very useful):
///   const list = [...["why"]];
/// @description Checks that in-place literals are enabled for lists
/// @author iarkh@unipro.ru


import "../../Utils/expect.dart";

main() {
  const res1 = [...["why"]];
  Expect.listEquals(["why"], res1);
  const res2 = [...?["not"]];
//              ^^^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
//                  ^
// [cfe] Operand of null-aware operation '...?' has type 'List<String>' which excludes null.
  Expect.listEquals(["not"], res2);

  const res3 = [...{"why"}];
  Expect.listEquals(["why"], res3);
  const res4 = [...?{"not"}];
//              ^^^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
//                  ^
// [cfe] Operand of null-aware operation '...?' has type 'Set<String>' which excludes null.
  Expect.listEquals(["not"], res4);

  const List aList = const [1, 2, 3];
  const res5 = [1, 2, ...[1, 2, 3], 4, 15, 1, ...[null], ...{12345}, aList];
  Expect.listEquals([1, 2, 1, 2, 3, 4, 15, 1, null, 12345, aList], res5);
  const res6 = [1, 2, 3, ...[4, 5, 6], ...?[7, 8, 9], aList];
//                                     ^^^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
//                                         ^
// [cfe] Operand of null-aware operation '...?' has type 'List<int>' which excludes null.
  Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, aList], res6);

  const Set aSet = {1, 2, 3};
  const res7 = [1, 2, 3, ...[4, 5, 6], ...?{7, 8, 9}, aSet];
//                                     ^^^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
//                                         ^
// [cfe] Operand of null-aware operation '...?' has type 'Set<int>' which excludes null.
  Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, aSet], res7);
}
