blob: 65268a3c8fd79de322c0f27afceaf0ac13e83be8 [file] [log] [blame]
/*
* Copyright (c) 2018, 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 That could make it ambiguous whether { … ? … : … } is a
* one-element set or a one-entry map. Luckily, the current grammar does not
* allow for an ambiguous parsing. The token following a question mark dictates
* whether it's part of a null-aware operation or the beginning of a new
* expression.
*
* @description Checks usage of a conditional expression when a set literal is
* declared.
* @author ngl@unipro.ru
*/
import "../../Utils/expect.dart";
main() {
bool b = true;
const bool b1 = true;
var v1 = {!b ? 1 : 11};
Expect.isTrue(v1 is Set);
var v2 = {b ? 1 : 11, b ? 2 : 12, b ? 3 : 13};
Expect.isTrue(v2 is Set);
const v3 = const <num>{b1 ? 1 : 1.0, !b1 ? 2 : 12, 13};
Expect.isTrue(v3 is Set);
Expect.isTrue(identical(v3, const <num>{1, 12, 13}));
}