// 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 A list literal <E>[elem_1 ... elem_n] is evaluated as follows:
///
///  1. Create a fresh instance [list] of a class that implements [List<E>].
///    ...
/// 3. The result of the literal expression is [list].
/// @description Checks that instance of [List<E>] is created for a list literal
/// @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.isTrue(<int>[...list1] is List<int>);
  Expect.isTrue(<int>[1, 2, ...list1] is List<int>);
  Expect.isTrue(<int>[1, ...?list1, 14, 9] is List<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 List<String>);
  Expect.isTrue(<String>[...?list3] is List<String>);
  Expect.isTrue(<int>[...?list3] is List<int>);
  Expect.isTrue([...list4] is List<Object?>);
  Expect.runtimeIsType<List<String>>(<String>[...list2, "123"]);
  Expect.runtimeIsType<List<String>>(<String>[...?list3]);
  Expect.runtimeIsType<List<int>>(<int>[...?list3] );
  Expect.runtimeIsType<List<Object?>>([...list4]);
}
