// 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.

// @dart = 2.9

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");
