/* * Shared string macros. * * Using shared macros helps minimize strings data size because it's easy * to check if an existing string could be used. String constants don't * need to be all defined here; defining a string here makes sense if there's * a high chance the string could be reused. Also, using macros allows * a call site express the exact string needed, but the macro may map to an * approximate string to reduce unique string count. Macros can also be * more easily tuned for low memory targets than #ifdefs throughout the * code base. * * Because format strings behave differently in the call site (they need to * be followed by format arguments), they use a special prefix DUK_STR_FMT_. * * On some compilers using explicit shared strings is preferable; on others * it may be better to use straight literals because the compiler will combine * them anyway, and such strings won't end up unnecessarily in a symbol table. */ #ifndef DUK_ERRMSG_H_INCLUDED #define DUK_ERRMSG_H_INCLUDED /* Mostly API and built-in method related */ #define DUK_STR_INTERNAL_ERROR "internal error" #define DUK_STR_UNSUPPORTED "unsupported" #define DUK_STR_INVALID_COUNT "invalid count" #define DUK_STR_INVALID_ARGS "invalid args" #define DUK_STR_INVALID_STATE "invalid state" #define DUK_STR_INVALID_INPUT "invalid input" #define DUK_STR_INVALID_LENGTH "invalid length" #define DUK_STR_NOT_CONSTRUCTABLE "not constructable" #define DUK_STR_CONSTRUCT_ONLY "constructor requires 'new'" #define DUK_STR_NOT_CALLABLE "not callable" #define DUK_STR_NOT_EXTENSIBLE "not extensible" #define DUK_STR_NOT_WRITABLE "not writable" #define DUK_STR_NOT_CONFIGURABLE "not configurable" #define DUK_STR_INVALID_CONTEXT "invalid context" #define DUK_STR_INVALID_INDEX "invalid args" #define DUK_STR_PUSH_BEYOND_ALLOC_STACK "cannot push beyond allocated stack" #define DUK_STR_NOT_UNDEFINED "unexpected type" #define DUK_STR_NOT_NULL "unexpected type" #define DUK_STR_NOT_BOOLEAN "unexpected type" #define DUK_STR_NOT_NUMBER "unexpected type" #define DUK_STR_NOT_STRING "unexpected type" #define DUK_STR_NOT_OBJECT "unexpected type" #define DUK_STR_NOT_POINTER "unexpected type" #define DUK_STR_NOT_BUFFER "not buffer" /* still in use with verbose messages */ #define DUK_STR_UNEXPECTED_TYPE "unexpected type" #define DUK_STR_NOT_THREAD "unexpected type" #define DUK_STR_NOT_COMPFUNC "unexpected type" #define DUK_STR_NOT_NATFUNC "unexpected type" #define DUK_STR_NOT_C_FUNCTION "unexpected type" #define DUK_STR_NOT_FUNCTION "unexpected type" #define DUK_STR_NOT_REGEXP "unexpected type" #define DUK_STR_TOPRIMITIVE_FAILED "coercion to primitive failed" #define DUK_STR_NUMBER_OUTSIDE_RANGE "number outside range" #define DUK_STR_NOT_OBJECT_COERCIBLE "not object coercible" #define DUK_STR_STRING_TOO_LONG "string too long" #define DUK_STR_BUFFER_TOO_LONG "buffer too long" #define DUK_STR_ALLOC_FAILED "alloc failed" #define DUK_STR_WRONG_BUFFER_TYPE "wrong buffer type" #define DUK_STR_ENCODE_FAILED "encode failed" #define DUK_STR_DECODE_FAILED "decode failed" #define DUK_STR_NO_SOURCECODE "no sourcecode" #define DUK_STR_RESULT_TOO_LONG "result too long" /* JSON */ #define DUK_STR_FMT_PTR "%p" #define DUK_STR_FMT_INVALID_JSON "invalid json (at offset %ld)" #define DUK_STR_JSONDEC_RECLIMIT "json decode recursion limit" #define DUK_STR_JSONENC_RECLIMIT "json encode recursion limit" #define DUK_STR_CYCLIC_INPUT "cyclic input" /* Object property access */ #define DUK_STR_PROXY_REVOKED "proxy revoked" #define DUK_STR_INVALID_BASE "invalid base value" #define DUK_STR_STRICT_CALLER_READ "cannot read strict 'caller'" #define DUK_STR_PROXY_REJECTED "proxy rejected" #define DUK_STR_INVALID_ARRAY_LENGTH "invalid array length" #define DUK_STR_SETTER_UNDEFINED "setter undefined" #define DUK_STR_INVALID_DESCRIPTOR "invalid descriptor" /* Proxy */ #define DUK_STR_INVALID_TRAP_RESULT "invalid trap result" /* Variables */ /* Lexer */ #define DUK_STR_INVALID_ESCAPE "invalid escape" #define DUK_STR_UNTERMINATED_STRING "unterminated string" #define DUK_STR_UNTERMINATED_COMMENT "unterminated comment" #define DUK_STR_UNTERMINATED_REGEXP "unterminated regexp" #define DUK_STR_TOKEN_LIMIT "token limit" #define DUK_STR_REGEXP_SUPPORT_DISABLED "regexp support disabled" #define DUK_STR_INVALID_NUMBER_LITERAL "invalid number literal" #define DUK_STR_INVALID_TOKEN "invalid token" /* Compiler */ #define DUK_STR_PARSE_ERROR "parse error" #define DUK_STR_DUPLICATE_LABEL "duplicate label" #define DUK_STR_INVALID_LABEL "invalid label" #define DUK_STR_INVALID_ARRAY_LITERAL "invalid array literal" #define DUK_STR_INVALID_OBJECT_LITERAL "invalid object literal" #define DUK_STR_INVALID_VAR_DECLARATION "invalid variable declaration" #define DUK_STR_CANNOT_DELETE_IDENTIFIER "cannot delete identifier" #define DUK_STR_INVALID_EXPRESSION "invalid expression" #define DUK_STR_INVALID_LVALUE "invalid lvalue" #define DUK_STR_EXPECTED_IDENTIFIER "expected identifier" #define DUK_STR_EMPTY_EXPR_NOT_ALLOWED "empty expression not allowed" #define DUK_STR_INVALID_FOR "invalid for statement" #define DUK_STR_INVALID_SWITCH "invalid switch statement" #define DUK_STR_INVALID_BREAK_CONT_LABEL "invalid break/continue label" #define DUK_STR_INVALID_RETURN "invalid return" #define DUK_STR_INVALID_TRY "invalid try" #define DUK_STR_INVALID_THROW "invalid throw" #define DUK_STR_WITH_IN_STRICT_MODE "with in strict mode" #define DUK_STR_FUNC_STMT_NOT_ALLOWED "function statement not allowed" #define DUK_STR_UNTERMINATED_STMT "unterminated statement" #define DUK_STR_INVALID_ARG_NAME "invalid argument name" #define DUK_STR_INVALID_FUNC_NAME "invalid function name" #define DUK_STR_INVALID_GETSET_NAME "invalid getter/setter name" #define DUK_STR_FUNC_NAME_REQUIRED "function name required" /* Regexp */ #define DUK_STR_INVALID_QUANTIFIER "invalid regexp quantifier" #define DUK_STR_INVALID_QUANTIFIER_NO_ATOM "quantifier without preceding atom" #define DUK_STR_INVALID_QUANTIFIER_VALUES "quantifier values invalid (qmin > qmax)" #define DUK_STR_QUANTIFIER_TOO_MANY_COPIES "quantifier requires too many atom copies" #define DUK_STR_UNEXPECTED_CLOSING_PAREN "unexpected closing parenthesis" #define DUK_STR_UNEXPECTED_END_OF_PATTERN "unexpected end of pattern" #define DUK_STR_UNEXPECTED_REGEXP_TOKEN "unexpected token in regexp" #define DUK_STR_INVALID_REGEXP_FLAGS "invalid regexp flags" #define DUK_STR_INVALID_REGEXP_ESCAPE "invalid regexp escape" #define DUK_STR_INVALID_BACKREFS "invalid backreference(s)" #define DUK_STR_INVALID_REGEXP_CHARACTER "invalid regexp character" #define DUK_STR_UNTERMINATED_CHARCLASS "unterminated character class" #define DUK_STR_INVALID_RANGE "invalid range" /* Limits */ #define DUK_STR_VALSTACK_LIMIT "valstack limit" #define DUK_STR_CALLSTACK_LIMIT "callstack limit" #define DUK_STR_CATCHSTACK_LIMIT "catchstack limit" #define DUK_STR_PROTOTYPE_CHAIN_LIMIT "prototype chain limit" #define DUK_STR_BOUND_CHAIN_LIMIT "function call bound chain limit" #define DUK_STR_C_CALLSTACK_LIMIT "C call stack depth limit" #define DUK_STR_COMPILER_RECURSION_LIMIT "compiler recursion limit" #define DUK_STR_BYTECODE_LIMIT "bytecode limit" #define DUK_STR_REG_LIMIT "register limit" #define DUK_STR_TEMP_LIMIT "temp limit" #define DUK_STR_CONST_LIMIT "const limit" #define DUK_STR_FUNC_LIMIT "function limit" #define DUK_STR_REGEXP_COMPILER_RECURSION_LIMIT "regexp compiler recursion limit" #define DUK_STR_REGEXP_EXECUTOR_RECURSION_LIMIT "regexp executor recursion limit" #define DUK_STR_REGEXP_EXECUTOR_STEP_LIMIT "regexp step limit" #endif /* DUK_ERRMSG_H_INCLUDED */