blob: 0a439b7a3b7cb0bc682e41ac296b784c992bcf8b [file] [log] [blame]
// 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 A list literal <E>[elem_1 ... elem_n] is evaluated as follows:
///
/// 2. For each element in the list literal:
/// i. Evaluate the element's expression to a value value.
/// ii. If element is a spread element:
/// a. If element is null-aware and value is [null], continue to the next
/// element in the literal.
/// b. Evaluate [value.iterator] to a [value] iterator.
/// c. Loop:
/// a. If [iterator.moveNext()] returns [false], exit the loop.
/// b. Evaluate [iterator.current] and append the result to list.
/// iii. Else:
/// a. Append value to list.
///
/// @description Checks that if element is null-aware and it's [null], nothing
/// added to the result list.
/// @author iarkh@unipro.ru
import "../../Utils/expect.dart";
main() {
List list1 = [1, 2, 3, 4, 5];
List list2 = [];
List list3 = null;
List list4 = [1 ,2, 3, "checkme"];
Expect.listEquals([], [...?list3]);
Expect.listEquals([1, 2, 4], [1, 2, ...?list3, 4]);
Expect.listEquals([1, 1, 2, 3, "checkme", 1, 2, 3, 4, 5],
[1, ...?list4, ...?list3, ...list1]);
Expect.listEquals([], [...?list3, ...?list3, ...?list3]);
Expect.listEquals([], [...list2, ...?list3]);
}