// 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 Note that neither the regular spread nor the null-aware spread
/// have any affect on [null] values inside the sequence being spread. As far as
/// the language is concerned, [null] is a perfectly valid value for a sequence
/// to contain:
///
///   var things = [2, null, 3];
///   var more = [1, ...things, 4]; // [1, 2, null, 3, 4].
///   var also = [1, ...?things, 4]; // [1, 2, null, 3, 4].
///
///   If you want to skip over [null] elements in a sequence, you can do so
///   explicitly:
///
///   var things = [2, null, 3];
///   var more = [1, ...things.where((thing) => thing != null), 4];
///   // [1, 2, 3, 4].
/// @description Checks that [null] element is allowed inside the spreadable
/// element in the set.
/// @author iarkh@unipro.ru


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

List things = [2, null, 3];

main() {
  Set more = {1, ...things, 4};
  Expect.setEquals({1, 2, null, 3, 4}, more);

  var also = {1, ...?things, 4};
//               ^^^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
//                   ^
// [cfe] Operand of null-aware operation '...?' has type 'List<dynamic>' which excludes null.
  Expect.setEquals({1, 2, null, 3, 4}, more);

  more = {1, ...(things as List).where((thing) => thing != null), 4};
  Expect.setEquals({1, 2, 3, 4}, more);

  more = {1, ...?(things as List).where((thing) => thing != null), 4};
//           ^^^^
// [analyzer] STATIC_WARNING.INVALID_NULL_AWARE_OPERATOR
//                                ^
// [cfe] Operand of null-aware operation '...?' has type 'Iterable<dynamic>' which excludes null.
  Expect.setEquals({1, 2, 3, 4}, more);
}
