com.shapesecurity.shift.parser.ErrorMessages Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of shift Show documentation
Show all versions of shift Show documentation
Shift format ECMAScript 6 AST tooling
/*
* Copyright 2014 Shape Security, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.shapesecurity.shift.parser;
import com.shapesecurity.functional.F;
import com.shapesecurity.functional.F2;
import com.shapesecurity.shift.ast.BindingIdentifier;
import com.shapesecurity.shift.ast.BreakStatement;
import com.shapesecurity.shift.ast.ContinueStatement;
import com.shapesecurity.shift.ast.IdentifierExpression;
import com.shapesecurity.shift.ast.LabeledStatement;
import com.shapesecurity.shift.ast.MemberExpression;
import com.shapesecurity.shift.ast.Node;
import com.shapesecurity.shift.ast.Super;
import com.shapesecurity.shift.ast.YieldExpression;
import com.shapesecurity.shift.codegen.CodeGen;
import com.shapesecurity.shift.utils.Utils;
interface ErrorMessages {
// error messages in error.js
String UNEXPECTED_TOKEN = "Unexpected token \"%s\""; // TODO actual string escaping
String UNEXPECTED_ILLEGAL_TOKEN = "Unexpected %s";
String UNEXPECTED_NUMBER = "Unexpected number";
String UNEXPECTED_STRING = "Unexpected string";
String UNEXPECTED_IDENTIFIER = "Unexpected identifier";
String UNEXPECTED_RESERVED_WORD = "Unexpected reserved word";
String UNEXPECTED_TEMPLATE = "Unexpected template";
String UNEXPECTED_EOS = "Unexpected end of input";
String NEWLINE_AFTER_THROW = "Illegal newline after throw";
String NEWLINE_AFTER_ARROW_PARAMS = "Illegal newline after arrow parameters";
String UNTERMINATED_REGEXP = "Invalid regular expression: missing /";
String INVALID_REGEXP_FLAGS = "Invalid regular expression flags";
String INVALID_LHS_IN_ASSIGNMENT = "Invalid left-hand side in assignment";
String INVALID_LHS_IN_FOR_IN = "Invalid left-hand side in for-in";
String INVALID_LHS_IN_FOR_OF = "Invalid left-hand side in for-of";
String MULTIPLE_DEFAULTS_IN_SWITCH = "More than one default clause in switch statement";
String NO_CATCH_OR_FINALLY = "Missing catch or finally after try";
String ILLEGAL_RETURN = "Illegal return statement";
String ILLEGAL_ARROW_FUNCTION_PARAMS = "Illegal arrow function parameter list";
String INVALID_VAR_INIT_FOR_IN = "Invalid variable declaration in for-in statement";
String INVALID_VAR_INIT_FOR_OF = "Invalid variable declaration in for-of statement";
String ILLEGAL_PROPERTY = "Illegal property initializer";
// not in error.js, but already used in java version
String STRICT_RESERVED_WORD = "Use of future reserved word in strict mode";
String UNEXPECTED_OBJECT_BINDING = "Unexpected ObjectBinding in place of Expression";
String INVALID_REST = "Invalid rest";
// not in error.js, not used
String INVALID_REGULAR_EXPRESSION = "Invalid regular expression";
String INVALID_PROPERTY_NAME = "Property name in object literal must be identifier, string literal or number literal";
String UNKNOWN_LABEL = "Undefined label '%s'";
String LABEL_REDECLARATION = "Label '%s' has already been declared";
String ILLEGAL_CONTINUE = "Illegal continue statement";
String ILLEGAL_BREAK = "Illegal break statement";
String STRICT_MODE_WITH = "Strict mode code may not include a with statement";
String STRICT_CATCH_VARIABLE = "Catch variable may not be eval or arguments in strict mode";
String STRICT_VAR_NAME = "Variable name may not be eval or arguments in strict mode";
String STRICT_PARAM_NAME = "Parameter name eval or arguments is not allowed in strict mode";
String STRICT_PARAM_DUPE = "Strict mode function may not have duplicate parameter names";
String STRICT_FUNCTION_NAME = "Function name may not be eval or arguments in strict mode";
String STRICT_OCTAL_LITERAL = "Octal literals are not allowed in strict mode.";
String STRICT_DELETE = "Delete of an unqualified identifier in strict mode.";
String STRICT_DUPLICATE_PROPERTY = "Duplicate data property in object literal not allowed in strict mode";
String ACCESSOR_DATA_PROPERTY = "Object literal may not have data and accessor property with the same name";
String ACCESSOR_GET_SET = "Object literal may not have multiple get/set accessors with the same name";
String STRICT_LHS_ASSIGNMENT = "Assignment to eval or arguments is not allowed in strict mode";
String STRICT_LHS_POSTFIX = "Postfix increment/decrement may not have eval or arguments operand in strict mode";
String STRICT_LHS_PREFIX = "Prefix increment/decrement may not have eval or arguments operand in strict mode";
F SUPERCALL_ERROR = node -> new EarlyError(node, "Calls to super must be in the \"constructor\" method of a class expression or class declaration that has a superclass");
F SUPERPROPERTY_ERROR = node -> new EarlyError(node, "Member access on super must be in a method");
F DUPLICATE_BINDING = node -> new EarlyError(node, "Duplicate binding " + Utils.escapeStringLiteral(node.name));
F FREE_CONTINUE = node -> new EarlyError(node, "Continue statement must be nested within an iteration statement");
F UNBOUND_CONTINUE = node -> new EarlyError(node, "Continue statement must be nested within an iteration statement with label " + Utils.escapeStringLiteral(node.label.just()));
F FREE_BREAK = node -> new EarlyError(node, "Break statement must be nested within an iteration statement or a switch statement");
F UNBOUND_BREAK = node -> new EarlyError(node, "Break statement must be nested within a statement with label " + Utils.escapeStringLiteral(node.label.just()));
F DUPLICATE_CTOR = node -> new EarlyError(node, "Duplicate constructor method in class");
F BINDING_IDENTIFIER_STRICT = node -> new EarlyError(node, "The identifier " + Utils.escapeStringLiteral(node.name) + " must not be in binding position in strict mode");
F IDENTIFIER_EXP_STRICT = node -> new EarlyError(node, "The identifier " + Utils.escapeStringLiteral(node.name) + " must not be in expression position in strict mode");
F CTOR_SPECIAL = node -> new EarlyError(node, "Constructors cannot be generators, getters or setters");
F PROTOTYPE_METHOD = node -> new EarlyError(node, "Static class methods cannot be named \"prototype\"");
F DO_WHILE_LABELED_FN = node -> new EarlyError(node, "The body of a do-while statement must not be a labeled function declaration");
F FOR_IN_LABELED_FN = node -> new EarlyError(node, "The body of a for-in statement must not be a labeled function declaration");
F FOR_OF_LABELED_FN = node -> new EarlyError(node, "The body of a for-of statement must not be a labeled function declaration");
F FOR_LABELED_FN = node -> new EarlyError(node, "The body of a for statement must not be a labeled function declaration");
F WHILE_LABELED_FN = node -> new EarlyError(node, "The body of a while statement must not be a labeled function declaration");
F CONST_WITHOUT_INIT = node -> new EarlyError(node, "Constant lexical declarations must have an initialiser");
F CONSEQUENT_IS_LABELED_FN = node -> new EarlyError(node, "The consequent of an if statement must not be a labeled function declaration");
F ALTERNATE_IS_LABELED_FN = node -> new EarlyError(node, "The alternate of an if statement must not be a labeled function declaration");
F IF_FNDECL_STRICT = node -> new EarlyError(node, "FunctionDeclarations in IfStatements are disallowed in strict mode");
F YIELD_LABEL = node -> new EarlyError(node, "The identifier \"yield\" must not be in label position in strict mode");
F DUPLICATE_LABEL = node -> new EarlyError(node, "Label " + Utils.escapeStringLiteral(node.label) + " has already been declared");
F FN_LABEL_STRICT = node -> new EarlyError(node, "Labeled FunctionDeclarations are disallowed in strict mode");
F INVALID_REGEX_FLAG_MACHINE = node -> new EarlyError(node, INVALID_REGEXP_FLAGS);
F2 DUPLICATE_EXPORT = (node, str) -> new EarlyError(node, "Duplicate export " + Utils.escapeStringLiteral(str));
F2 UNDECLARED_EXPORT = (node, str) -> new EarlyError(node, "Exported binding " + Utils.escapeStringLiteral(str) + " is not declared");
F NEW_TARGET_TOP = node -> new EarlyError(node, "new.target must be within function (but not arrow expression) code");
F DUPLICATE_PROTO = node -> new EarlyError(node, "Duplicate __proto__ property in object literal not allowed");
F DELETE_IDENTIFIER_EXP_STRICT = node -> new EarlyError(node, "Identifier expressions must not be deleted in strict mode");
F UPDATE_NONSIMPLE = node -> new EarlyError(node, "Increment/decrement target must be an identifier or member expression");
F LEXICAL_LET_BINDING = node -> new EarlyError(node, "Lexical declarations must not have a binding named \"let\"");
F WITH_LABELED_FN = node -> new EarlyError(node, "The body of a with statement must not be a labeled function declaration");
F WITH_STRICT = node -> new EarlyError(node, "Strict mode code must not include a with statement");
F YIELD_IN_ARROW_BODY = node -> new EarlyError(node, "Concise arrow bodies must not contain yield expressions");
F YIELD_IN_ARROW_PARAMS = node -> new EarlyError(node, "Arrow parameters must not contain yield expressions");
F YIELD_IN_GENERATOR_PARAMS = node -> new EarlyError(node, "Generator parameters must not contain yield expressions");
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy