// Copyright (c) 2011, 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 const Symbol(String name)
/// Constructs a new Symbol.
///
/// The name must be a valid public Dart member name, public constructor name, or
/// library name, optionally qualified.
///
/// A qualified name is a valid name preceded by a public identifier name and
/// a '.', e.g., foo.bar.baz= is a qualified version of baz=. That means that the
/// content of the name String must be either
///
/// - a valid public Dart identifier (that is, an identifier not starting with "
///    _"), such an identifier followed by "=" (a setter name),
/// - the name of a declarable operator (one of "+", "-", "*", "/", "%", "~/",
///    "&", "|", "^", "~", "<<", ">>", "<", "<=", ">", ">=", "==", "[]", "[]=", or
///    "unary-"),
/// -  any of the above preceded by any number of qualifiers, where a qualifier
/// is a non-private identifier followed by '.', or the empty string (the default
/// name of a library with no library name declaration).
/// @description Checks that ArgumentError is thrown if name starts with an
/// underscore.
/// @author ilya
/// @issue 13715
/// @issue 11669

import "../../../Utils/expect.dart";

main() {
  Expect.throws(() {new Symbol('_foo');}, (e) => e is ArgumentError);
}
