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

// @dart = 2.9

/// @assertion In a constant list or set, a spread element expands at compile
/// time to the series of elements contained in the spread object list.
/// @description Checks that a spread list element expands at compile time to the
/// series of elements contained in the spread object list.
/// @author iarkh@unipro.ru


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

main() {
  const list1 = [2, 7, 9];
  const list2 = ["checkme"];
  const list3 = [];
  const List list4 = null;

  const res1 = [...list1];
  Expect.listEquals(list1, res1);
  const res2 = [...?list1];
  Expect.listEquals(list1, res2);

  const res3 = [...list2];
  Expect.listEquals(list2, res3);
  const res4 = [...?list2];
  Expect.listEquals(list2, res4);

  const res5 = [...list3];
  Expect.listEquals(list3, res5);
  const res6 = [...?list3];
  Expect.listEquals(list3, res6);

  const res7 = [...?list4];
  Expect.listEquals([], res7);

  const res8 = [1, 2, ...list1, 6];
  Expect.listEquals([1, 2, 2, 7, 9, 6], res8);

  const res9 = [1, ...list1, ...list2, ...list3, ...?list4, 18];
  Expect.listEquals([1, 2, 7, 9, "checkme", 18], res9);
}
