1 /* 2 * Shared error messages: declarations and macros 3 * 4 * Error messages are accessed through macros with fine-grained, explicit 5 * error message distinctions. Concrete error messages are selected by the 6 * macros and multiple macros can map to the same concrete string to save 7 * on code footprint. This allows flexible footprint/verbosity tuning with 8 * minimal code impact. There are a few limitations to this approach: 9 * (1) switching between plain messages and format strings doesn't work 10 * conveniently, and (2) conditional strings are a bit awkward to handle. 11 * 12 * Because format strings behave differently in the call site (they need to 13 * be followed by format arguments), they have a special prefix (DUK_STR_FMT_ 14 * and duk_str_fmt_). 15 * 16 * On some compilers using explicit shared strings is preferable; on others 17 * it may be better to use straight literals because the compiler will combine 18 * them anyway, and such strings won't end up unnecessarily in a symbol table. 19 */ 20 21 #ifndef DUK_ERRMSG_H_INCLUDED 22 #define DUK_ERRMSG_H_INCLUDED 23 24 #define DUK_STR_INTERNAL_ERROR duk_str_internal_error 25 #define DUK_STR_INVALID_COUNT duk_str_invalid_count 26 #define DUK_STR_INVALID_CALL_ARGS duk_str_invalid_call_args 27 #define DUK_STR_NOT_CONSTRUCTABLE duk_str_not_constructable 28 #define DUK_STR_NOT_CALLABLE duk_str_not_callable 29 #define DUK_STR_NOT_EXTENSIBLE duk_str_not_extensible 30 #define DUK_STR_NOT_WRITABLE duk_str_not_writable 31 #define DUK_STR_NOT_CONFIGURABLE duk_str_not_configurable 32 33 #if !defined(DUK_SINGLE_FILE) 34 DUK_INTERNAL_DECL const char *duk_str_internal_error; 35 DUK_INTERNAL_DECL const char *duk_str_invalid_count; 36 DUK_INTERNAL_DECL const char *duk_str_invalid_call_args; 37 DUK_INTERNAL_DECL const char *duk_str_not_constructable; 38 DUK_INTERNAL_DECL const char *duk_str_not_callable; 39 DUK_INTERNAL_DECL const char *duk_str_not_extensible; 40 DUK_INTERNAL_DECL const char *duk_str_not_writable; 41 DUK_INTERNAL_DECL const char *duk_str_not_configurable; 42 #endif /* !DUK_SINGLE_FILE */ 43 44 #define DUK_STR_INVALID_CONTEXT duk_str_invalid_context 45 #define DUK_STR_INVALID_INDEX duk_str_invalid_call_args 46 #define DUK_STR_PUSH_BEYOND_ALLOC_STACK duk_str_push_beyond_alloc_stack 47 #define DUK_STR_NOT_UNDEFINED duk_str_unexpected_type 48 #define DUK_STR_NOT_NULL duk_str_unexpected_type 49 #define DUK_STR_NOT_BOOLEAN duk_str_unexpected_type 50 #define DUK_STR_NOT_NUMBER duk_str_unexpected_type 51 #define DUK_STR_NOT_STRING duk_str_unexpected_type 52 #define DUK_STR_NOT_OBJECT duk_str_unexpected_type 53 #define DUK_STR_NOT_POINTER duk_str_unexpected_type 54 #define DUK_STR_NOT_BUFFER duk_str_not_buffer /* still in use with verbose messages */ 55 #define DUK_STR_UNEXPECTED_TYPE duk_str_unexpected_type 56 #define DUK_STR_NOT_THREAD duk_str_unexpected_type 57 #define DUK_STR_NOT_COMPILEDFUNCTION duk_str_unexpected_type 58 #define DUK_STR_NOT_NATIVEFUNCTION duk_str_unexpected_type 59 #define DUK_STR_NOT_C_FUNCTION duk_str_unexpected_type 60 #define DUK_STR_NOT_FUNCTION duk_str_unexpected_type 61 #define DUK_STR_NOT_REGEXP duk_str_unexpected_type 62 #define DUK_STR_DEFAULTVALUE_COERCE_FAILED duk_str_defaultvalue_coerce_failed 63 #define DUK_STR_NUMBER_OUTSIDE_RANGE duk_str_number_outside_range 64 #define DUK_STR_NOT_OBJECT_COERCIBLE duk_str_not_object_coercible 65 #define DUK_STR_STRING_TOO_LONG duk_str_string_too_long 66 #define DUK_STR_BUFFER_TOO_LONG duk_str_buffer_too_long 67 #define DUK_STR_SPRINTF_TOO_LONG duk_str_sprintf_too_long 68 #define DUK_STR_ALLOC_FAILED duk_str_alloc_failed 69 #define DUK_STR_POP_TOO_MANY duk_str_pop_too_many 70 #define DUK_STR_WRONG_BUFFER_TYPE duk_str_wrong_buffer_type 71 #define DUK_STR_ENCODE_FAILED duk_str_encode_failed 72 #define DUK_STR_DECODE_FAILED duk_str_decode_failed 73 #define DUK_STR_NO_SOURCECODE duk_str_no_sourcecode 74 #define DUK_STR_CONCAT_RESULT_TOO_LONG duk_str_concat_result_too_long 75 #define DUK_STR_UNIMPLEMENTED duk_str_unimplemented 76 #define DUK_STR_UNSUPPORTED duk_str_unsupported 77 #define DUK_STR_ARRAY_LENGTH_OVER_2G duk_str_array_length_over_2g 78 79 #if !defined(DUK_SINGLE_FILE) 80 DUK_INTERNAL_DECL const char *duk_str_invalid_context; 81 DUK_INTERNAL_DECL const char *duk_str_push_beyond_alloc_stack; 82 DUK_INTERNAL_DECL const char *duk_str_not_buffer; 83 DUK_INTERNAL_DECL const char *duk_str_unexpected_type; 84 DUK_INTERNAL_DECL const char *duk_str_defaultvalue_coerce_failed; 85 DUK_INTERNAL_DECL const char *duk_str_number_outside_range; 86 DUK_INTERNAL_DECL const char *duk_str_not_object_coercible; 87 DUK_INTERNAL_DECL const char *duk_str_string_too_long; 88 DUK_INTERNAL_DECL const char *duk_str_buffer_too_long; 89 DUK_INTERNAL_DECL const char *duk_str_sprintf_too_long; 90 DUK_INTERNAL_DECL const char *duk_str_alloc_failed; 91 DUK_INTERNAL_DECL const char *duk_str_pop_too_many; 92 DUK_INTERNAL_DECL const char *duk_str_wrong_buffer_type; 93 DUK_INTERNAL_DECL const char *duk_str_encode_failed; 94 DUK_INTERNAL_DECL const char *duk_str_decode_failed; 95 DUK_INTERNAL_DECL const char *duk_str_no_sourcecode; 96 DUK_INTERNAL_DECL const char *duk_str_concat_result_too_long; 97 DUK_INTERNAL_DECL const char *duk_str_unimplemented; 98 DUK_INTERNAL_DECL const char *duk_str_unsupported; 99 DUK_INTERNAL_DECL const char *duk_str_array_length_over_2g; 100 #endif /* !DUK_SINGLE_FILE */ 101 102 #define DUK_STR_FMT_PTR duk_str_fmt_ptr 103 #define DUK_STR_FMT_INVALID_JSON duk_str_fmt_invalid_json 104 #define DUK_STR_JSONDEC_RECLIMIT duk_str_jsondec_reclimit 105 #define DUK_STR_JSONENC_RECLIMIT duk_str_jsonenc_reclimit 106 #define DUK_STR_CYCLIC_INPUT duk_str_cyclic_input 107 108 #if !defined(DUK_SINGLE_FILE) 109 DUK_INTERNAL_DECL const char *duk_str_fmt_ptr; 110 DUK_INTERNAL_DECL const char *duk_str_fmt_invalid_json; 111 DUK_INTERNAL_DECL const char *duk_str_jsondec_reclimit; 112 DUK_INTERNAL_DECL const char *duk_str_jsonenc_reclimit; 113 DUK_INTERNAL_DECL const char *duk_str_cyclic_input; 114 #endif /* !DUK_SINGLE_FILE */ 115 116 #define DUK_STR_PROXY_REVOKED duk_str_proxy_revoked 117 #define DUK_STR_INVALID_BASE duk_str_invalid_base 118 #define DUK_STR_STRICT_CALLER_READ duk_str_strict_caller_read 119 #define DUK_STR_PROXY_REJECTED duk_str_proxy_rejected 120 #define DUK_STR_INVALID_ARRAY_LENGTH duk_str_invalid_array_length 121 #define DUK_STR_ARRAY_LENGTH_WRITE_FAILED duk_str_array_length_write_failed 122 #define DUK_STR_ARRAY_LENGTH_NOT_WRITABLE duk_str_array_length_not_writable 123 #define DUK_STR_SETTER_UNDEFINED duk_str_setter_undefined 124 #define DUK_STR_REDEFINE_VIRT_PROP duk_str_redefine_virt_prop 125 #define DUK_STR_INVALID_DESCRIPTOR duk_str_invalid_descriptor 126 #define DUK_STR_PROPERTY_IS_VIRTUAL duk_str_property_is_virtual 127 128 #if !defined(DUK_SINGLE_FILE) 129 DUK_INTERNAL_DECL const char *duk_str_proxy_revoked; 130 DUK_INTERNAL_DECL const char *duk_str_invalid_base; 131 DUK_INTERNAL_DECL const char *duk_str_strict_caller_read; 132 DUK_INTERNAL_DECL const char *duk_str_proxy_rejected; 133 DUK_INTERNAL_DECL const char *duk_str_invalid_array_length; 134 DUK_INTERNAL_DECL const char *duk_str_array_length_write_failed; 135 DUK_INTERNAL_DECL const char *duk_str_array_length_not_writable; 136 DUK_INTERNAL_DECL const char *duk_str_setter_undefined; 137 DUK_INTERNAL_DECL const char *duk_str_redefine_virt_prop; 138 DUK_INTERNAL_DECL const char *duk_str_invalid_descriptor; 139 DUK_INTERNAL_DECL const char *duk_str_property_is_virtual; 140 #endif /* !DUK_SINGLE_FILE */ 141 142 #define DUK_STR_PARSE_ERROR duk_str_parse_error 143 #define DUK_STR_DUPLICATE_LABEL duk_str_duplicate_label 144 #define DUK_STR_INVALID_LABEL duk_str_invalid_label 145 #define DUK_STR_INVALID_ARRAY_LITERAL duk_str_invalid_array_literal 146 #define DUK_STR_INVALID_OBJECT_LITERAL duk_str_invalid_object_literal 147 #define DUK_STR_INVALID_VAR_DECLARATION duk_str_invalid_var_declaration 148 #define DUK_STR_CANNOT_DELETE_IDENTIFIER duk_str_cannot_delete_identifier 149 #define DUK_STR_INVALID_EXPRESSION duk_str_invalid_expression 150 #define DUK_STR_INVALID_LVALUE duk_str_invalid_lvalue 151 #define DUK_STR_EXPECTED_IDENTIFIER duk_str_expected_identifier 152 #define DUK_STR_EMPTY_EXPR_NOT_ALLOWED duk_str_empty_expr_not_allowed 153 #define DUK_STR_INVALID_FOR duk_str_invalid_for 154 #define DUK_STR_INVALID_SWITCH duk_str_invalid_switch 155 #define DUK_STR_INVALID_BREAK_CONT_LABEL duk_str_invalid_break_cont_label 156 #define DUK_STR_INVALID_RETURN duk_str_invalid_return 157 #define DUK_STR_INVALID_TRY duk_str_invalid_try 158 #define DUK_STR_INVALID_THROW duk_str_invalid_throw 159 #define DUK_STR_WITH_IN_STRICT_MODE duk_str_with_in_strict_mode 160 #define DUK_STR_FUNC_STMT_NOT_ALLOWED duk_str_func_stmt_not_allowed 161 #define DUK_STR_UNTERMINATED_STMT duk_str_unterminated_stmt 162 #define DUK_STR_INVALID_ARG_NAME duk_str_invalid_arg_name 163 #define DUK_STR_INVALID_FUNC_NAME duk_str_invalid_func_name 164 #define DUK_STR_INVALID_GETSET_NAME duk_str_invalid_getset_name 165 #define DUK_STR_FUNC_NAME_REQUIRED duk_str_func_name_required 166 167 #if !defined(DUK_SINGLE_FILE) 168 DUK_INTERNAL_DECL const char *duk_str_parse_error; 169 DUK_INTERNAL_DECL const char *duk_str_duplicate_label; 170 DUK_INTERNAL_DECL const char *duk_str_invalid_label; 171 DUK_INTERNAL_DECL const char *duk_str_invalid_array_literal; 172 DUK_INTERNAL_DECL const char *duk_str_invalid_object_literal; 173 DUK_INTERNAL_DECL const char *duk_str_invalid_var_declaration; 174 DUK_INTERNAL_DECL const char *duk_str_cannot_delete_identifier; 175 DUK_INTERNAL_DECL const char *duk_str_invalid_expression; 176 DUK_INTERNAL_DECL const char *duk_str_invalid_lvalue; 177 DUK_INTERNAL_DECL const char *duk_str_expected_identifier; 178 DUK_INTERNAL_DECL const char *duk_str_empty_expr_not_allowed; 179 DUK_INTERNAL_DECL const char *duk_str_invalid_for; 180 DUK_INTERNAL_DECL const char *duk_str_invalid_switch; 181 DUK_INTERNAL_DECL const char *duk_str_invalid_break_cont_label; 182 DUK_INTERNAL_DECL const char *duk_str_invalid_return; 183 DUK_INTERNAL_DECL const char *duk_str_invalid_try; 184 DUK_INTERNAL_DECL const char *duk_str_invalid_throw; 185 DUK_INTERNAL_DECL const char *duk_str_with_in_strict_mode; 186 DUK_INTERNAL_DECL const char *duk_str_func_stmt_not_allowed; 187 DUK_INTERNAL_DECL const char *duk_str_unterminated_stmt; 188 DUK_INTERNAL_DECL const char *duk_str_invalid_arg_name; 189 DUK_INTERNAL_DECL const char *duk_str_invalid_func_name; 190 DUK_INTERNAL_DECL const char *duk_str_invalid_getset_name; 191 DUK_INTERNAL_DECL const char *duk_str_func_name_required; 192 #endif /* !DUK_SINGLE_FILE */ 193 194 #define DUK_STR_INVALID_QUANTIFIER_NO_ATOM duk_str_invalid_quantifier_no_atom 195 #define DUK_STR_INVALID_QUANTIFIER_VALUES duk_str_invalid_quantifier_values 196 #define DUK_STR_QUANTIFIER_TOO_MANY_COPIES duk_str_quantifier_too_many_copies 197 #define DUK_STR_UNEXPECTED_CLOSING_PAREN duk_str_unexpected_closing_paren 198 #define DUK_STR_UNEXPECTED_END_OF_PATTERN duk_str_unexpected_end_of_pattern 199 #define DUK_STR_UNEXPECTED_REGEXP_TOKEN duk_str_unexpected_regexp_token 200 #define DUK_STR_INVALID_REGEXP_FLAGS duk_str_invalid_regexp_flags 201 #define DUK_STR_INVALID_BACKREFS duk_str_invalid_backrefs 202 203 #if !defined(DUK_SINGLE_FILE) 204 DUK_INTERNAL_DECL const char *duk_str_invalid_quantifier_no_atom; 205 DUK_INTERNAL_DECL const char *duk_str_invalid_quantifier_values; 206 DUK_INTERNAL_DECL const char *duk_str_quantifier_too_many_copies; 207 DUK_INTERNAL_DECL const char *duk_str_unexpected_closing_paren; 208 DUK_INTERNAL_DECL const char *duk_str_unexpected_end_of_pattern; 209 DUK_INTERNAL_DECL const char *duk_str_unexpected_regexp_token; 210 DUK_INTERNAL_DECL const char *duk_str_invalid_regexp_flags; 211 DUK_INTERNAL_DECL const char *duk_str_invalid_backrefs; 212 #endif /* !DUK_SINGLE_FILE */ 213 214 #define DUK_STR_VALSTACK_LIMIT duk_str_valstack_limit 215 #define DUK_STR_CALLSTACK_LIMIT duk_str_callstack_limit 216 #define DUK_STR_CATCHSTACK_LIMIT duk_str_catchstack_limit 217 #define DUK_STR_PROTOTYPE_CHAIN_LIMIT duk_str_prototype_chain_limit 218 #define DUK_STR_BOUND_CHAIN_LIMIT duk_str_bound_chain_limit 219 #define DUK_STR_C_CALLSTACK_LIMIT duk_str_c_callstack_limit 220 #define DUK_STR_COMPILER_RECURSION_LIMIT duk_str_compiler_recursion_limit 221 #define DUK_STR_BYTECODE_LIMIT duk_str_bytecode_limit 222 #define DUK_STR_REG_LIMIT duk_str_reg_limit 223 #define DUK_STR_TEMP_LIMIT duk_str_temp_limit 224 #define DUK_STR_CONST_LIMIT duk_str_const_limit 225 #define DUK_STR_FUNC_LIMIT duk_str_func_limit 226 #define DUK_STR_REGEXP_COMPILER_RECURSION_LIMIT duk_str_regexp_compiler_recursion_limit 227 #define DUK_STR_REGEXP_EXECUTOR_RECURSION_LIMIT duk_str_regexp_executor_recursion_limit 228 #define DUK_STR_REGEXP_EXECUTOR_STEP_LIMIT duk_str_regexp_executor_step_limit 229 230 #if !defined(DUK_SINGLE_FILE) 231 DUK_INTERNAL_DECL const char *duk_str_valstack_limit; 232 DUK_INTERNAL_DECL const char *duk_str_callstack_limit; 233 DUK_INTERNAL_DECL const char *duk_str_catchstack_limit; 234 DUK_INTERNAL_DECL const char *duk_str_prototype_chain_limit; 235 DUK_INTERNAL_DECL const char *duk_str_bound_chain_limit; 236 DUK_INTERNAL_DECL const char *duk_str_c_callstack_limit; 237 DUK_INTERNAL_DECL const char *duk_str_compiler_recursion_limit; 238 DUK_INTERNAL_DECL const char *duk_str_bytecode_limit; 239 DUK_INTERNAL_DECL const char *duk_str_reg_limit; 240 DUK_INTERNAL_DECL const char *duk_str_temp_limit; 241 DUK_INTERNAL_DECL const char *duk_str_const_limit; 242 DUK_INTERNAL_DECL const char *duk_str_func_limit; 243 DUK_INTERNAL_DECL const char *duk_str_regexp_compiler_recursion_limit; 244 DUK_INTERNAL_DECL const char *duk_str_regexp_executor_recursion_limit; 245 DUK_INTERNAL_DECL const char *duk_str_regexp_executor_step_limit; 246 #endif /* !DUK_SINGLE_FILE */ 247 248 #if !defined(DUK_SINGLE_FILE) 249 DUK_INTERNAL_DECL const char *duk_str_anon; 250 #endif /* !DUK_SINGLE_FILE */ 251 252 #endif /* DUK_ERRMSG_H_INCLUDED */ 253