1425bb815Sopenharmony_ci/* Copyright JS Foundation and other contributors, http://js.foundation
2425bb815Sopenharmony_ci *
3425bb815Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4425bb815Sopenharmony_ci * you may not use this file except in compliance with the License.
5425bb815Sopenharmony_ci * You may obtain a copy of the License at
6425bb815Sopenharmony_ci *
7425bb815Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8425bb815Sopenharmony_ci *
9425bb815Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10425bb815Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS
11425bb815Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12425bb815Sopenharmony_ci * See the License for the specific language governing permissions and
13425bb815Sopenharmony_ci * limitations under the License.
14425bb815Sopenharmony_ci */
15425bb815Sopenharmony_ci
16425bb815Sopenharmony_ci#ifndef ECMA_EXCEPTIONS_H
17425bb815Sopenharmony_ci#define ECMA_EXCEPTIONS_H
18425bb815Sopenharmony_ci
19425bb815Sopenharmony_ci#include "ecma-globals.h"
20425bb815Sopenharmony_ci#include "jrt.h"
21425bb815Sopenharmony_ci
22425bb815Sopenharmony_ci/** \addtogroup ecma ECMA
23425bb815Sopenharmony_ci * @{
24425bb815Sopenharmony_ci *
25425bb815Sopenharmony_ci * \addtogroup exceptions Exceptions
26425bb815Sopenharmony_ci * @{
27425bb815Sopenharmony_ci */
28425bb815Sopenharmony_ci
29425bb815Sopenharmony_ci#if ENABLED (JERRY_ERROR_MESSAGES)
30425bb815Sopenharmony_ci#define ECMA_ERR_MSG(msg) msg
31425bb815Sopenharmony_ci#else /* !ENABLED (JERRY_ERROR_MESSAGES) */
32425bb815Sopenharmony_ci#define ECMA_ERR_MSG(msg) NULL
33425bb815Sopenharmony_ci#endif /* ENABLED (JERRY_ERROR_MESSAGES) */
34425bb815Sopenharmony_ci
35425bb815Sopenharmony_ci/**
36425bb815Sopenharmony_ci * Native errors.
37425bb815Sopenharmony_ci *
38425bb815Sopenharmony_ci * See also: 15.11.1, 15.11.6
39425bb815Sopenharmony_ci */
40425bb815Sopenharmony_citypedef enum
41425bb815Sopenharmony_ci{
42425bb815Sopenharmony_ci  ECMA_ERROR_NONE,      /**< Not an Error */
43425bb815Sopenharmony_ci
44425bb815Sopenharmony_ci  ECMA_ERROR_COMMON,    /**< Error */
45425bb815Sopenharmony_ci  ECMA_ERROR_EVAL,      /**< EvalError */
46425bb815Sopenharmony_ci  ECMA_ERROR_RANGE,     /**< RangeError */
47425bb815Sopenharmony_ci  ECMA_ERROR_REFERENCE, /**< ReferenceError */
48425bb815Sopenharmony_ci  ECMA_ERROR_SYNTAX,    /**< SyntaxError */
49425bb815Sopenharmony_ci  ECMA_ERROR_TYPE,      /**< TypeError */
50425bb815Sopenharmony_ci  ECMA_ERROR_URI        /**< URIError */
51425bb815Sopenharmony_ci} ecma_standard_error_t;
52425bb815Sopenharmony_ci
53425bb815Sopenharmony_ciecma_standard_error_t ecma_get_error_type (ecma_object_t *error_object);
54425bb815Sopenharmony_ciecma_object_t *ecma_new_standard_error (ecma_standard_error_t error_type);
55425bb815Sopenharmony_ciecma_object_t *ecma_new_standard_error_with_message (ecma_standard_error_t error_type, ecma_string_t *message_string_p);
56425bb815Sopenharmony_ci#if ENABLED (JERRY_ERROR_MESSAGES)
57425bb815Sopenharmony_ciecma_value_t ecma_raise_standard_error_with_format (ecma_standard_error_t error_type, const char *msg_p, ...);
58425bb815Sopenharmony_ci#endif /* ENABLED (JERRY_ERROR_MESSAGES) */
59425bb815Sopenharmony_ciecma_value_t ecma_raise_common_error (const char *msg_p);
60425bb815Sopenharmony_ciecma_value_t ecma_raise_range_error (const char *msg_p);
61425bb815Sopenharmony_ciecma_value_t ecma_raise_reference_error (const char *msg_p);
62425bb815Sopenharmony_ciecma_value_t ecma_raise_syntax_error (const char *msg_p);
63425bb815Sopenharmony_ciecma_value_t ecma_raise_type_error (const char *msg_p);
64425bb815Sopenharmony_ciecma_value_t ecma_raise_uri_error (const char *msg_p);
65425bb815Sopenharmony_ci
66425bb815Sopenharmony_ci/**
67425bb815Sopenharmony_ci * @}
68425bb815Sopenharmony_ci * @}
69425bb815Sopenharmony_ci */
70425bb815Sopenharmony_ci
71425bb815Sopenharmony_ci#endif /* !ECMA_EXCEPTIONS_H */
72