// 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 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"]];
  Expect.listEquals(["not"], res2);

  const res3 = [...{"why"}];
  Expect.listEquals(["why"], res3);
  const res4 = [...?{"not"}];
  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];
  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];
  Expect.listEquals([1, 2, 3, 4, 5, 6, 7, 8, 9, aSet], res7);
}
