// 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 From the Unified collection Spec:
/// A spreadElement starting with [...] is a constant element if its expression
/// is constant and it evaluates to a constant List, Set or Map instance
/// originally created by a list, set or map literal. It is a potentially
/// constant element if the expression is a potentially constant expression.
/// @description: Checks that constant set spread element can be constant list or
/// set.
/// @author iarkh@unipro.ru


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

const l1 = [];
const l2 = [1, 2, 3];

const Set s1 = {};
const s2 = {4, 5, 6};

main() {
  const Set res1 = const {...l1};
  Expect.setEquals(s1, res1);

  const Set res2 = const {...l2};
  Expect.setEquals({1, 2, 3}, res2);

  const Set res3 = const {...s1};
  Expect.setEquals(s1, res3);

  const Set res4 = const {...s2};
  Expect.setEquals(s2, res4);

  const Set res5 = const {...l1, ...l2, ...s1, ...s2};
  Expect.setEquals({1, 2, 3, 4, 5, 6}, res5);
}
