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

/// A set literal <E>{elem_1 ... elem_n} is evaluated as follows:
///   1. Create a fresh instance of set of a class that implements
///      [LinkedHashSet<E>].
///   ...
///   3. The result of the literal expression is [set].
/// @description Checks that instance of [LinkedHashSet<E>] is created for a
/// [set] literal.
/// @author iarkh@unipro.ru


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

List list1 = [1, 2, 3, 4, 5];
List list2 = [];
List? list3 = null;
List list4 = [1 ,2, 3, "checkme"];

main() {
  Expect.isTrue(<int>{...list1} is LinkedHashSet<int>);
  Expect.isTrue(<int>{1, 2, ...list1} is LinkedHashSet<int>);
  Expect.isTrue(<int>{1, ...?list1, 14, 9} is LinkedHashSet<int>);
//                       ^^^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
//                           ^
// [cfe] Operand of null-aware operation '...?' has type 'List<dynamic>' which excludes null.
  Expect.isTrue(<String>{...list2, "123"} is LinkedHashSet<String>);
  Expect.isTrue(<String>{...?list3} is LinkedHashSet<String>);
  Expect.isTrue(<int>{...?list3} is LinkedHashSet<int>);
  Expect.isTrue({...list4} is LinkedHashSet<Object?>);
}
