// 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 emptyName = new Name("");

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

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

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

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

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

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

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

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

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

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

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

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