// 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 list.
/// @author iarkh@unipro.ru

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

List things = [2, null, 3];

main() {
  var more = [1, ...things, 4];
  Expect.listEquals([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.listEquals([1, 2, null, 3, 4], more);

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