// Copyright (c) 2017, 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.

library front_end.src.fasta.names;

import 'package:kernel/ast.dart' show Name;

final Name ampersandName = new Name("&");

final Name barName = new Name("|");

final Name callName = new Name("call");

final Name caretName = new Name("^");

final Name divisionName = new Name("/");

final Name doubleAmpersandName = new Name("&&");

final Name doubleBarName = new Name("||");

final Name doubleQuestionName = new Name("??");

final Name emptyName = new Name("");

final Name equalsName = new Name('==');

final Name greaterThanName = new Name(">");

final Name greaterThanOrEqualsName = new Name(">=");

final Name identicalName = new Name("identical");

final Name indexGetName = new Name("[]");

final Name indexSetName = new Name("[]=");

final Name leftShiftName = new Name("<<");

final Name lengthName = new Name("length");

final Name lessThanName = new Name("<");

final Name lessThanOrEqualsName = new Name("<=");

final Name minusName = new Name("-");

final Name multiplyName = new Name("*");

final Name mustacheName = new Name("~/");

final Name negationName = new Name("!");

final Name noSuchMethodName = new Name("noSuchMethod");

final Name percentName = new Name("%");

final Name plusName = new Name("+");

final Name rightShiftName = new Name(">>");

final Name tripleShiftName = new Name(">>>");

final Name tildeName = new Name("~");

final Name unaryMinusName = new Name("unary-");

final Name hashCodeName = new Name("hashCode");

final Name toStringName = new Name("toString");

final Name runtimeTypeName = new Name("runtimeType");
