// 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}));
}
