blob: dcc62e4fb46c4db8ba3d9a71c17ec6af9850d2ad [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.
/// @assertion If element is an ifElement with two elements, e1 and e2:
/// ...
/// It is a compile error if e1 must be a set and e2 must be a map or vice versa.
///
/// @description Checks that it is a compile error if e1 must be a set and e2
/// must be a map or vice versa.
/// @author sgrekhov@unipro.ru
main() {
var i = 1;
var v1 = {if (i > 0) "" else "": "",};
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.AMBIGUOUS_SET_OR_MAP_LITERAL_EITHER
// ^
// [cfe] Expected ':' after this.
List? x = [1, 2, 3];
Map? y = {1: "1", 2: "2", 3: "3"};
var v2 = {"", if (i < 0) ...x else ...y,};
// ^
// [analyzer] COMPILE_TIME_ERROR.NOT_ITERABLE_SPREAD
// [cfe] Unexpected type 'Map<dynamic, dynamic>' of a spread. Expected 'dynamic' or an Iterable.
var v3 = {"", if (i < 0) ...?x else ...?y,};
// ^
// [analyzer] unspecified
// [cfe] unspecified
}