diff --git a/jerry-core/ecma/operations/ecma-exceptions.c b/jerry-core/ecma/operations/ecma-exceptions.c index 33d04cd0d..8bb648261 100644 --- a/jerry-core/ecma/operations/ecma-exceptions.c +++ b/jerry-core/ecma/operations/ecma-exceptions.c @@ -21,6 +21,7 @@ #include "ecma-globals.h" #include "ecma-helpers.h" #include "ecma-objects.h" +#include "ecma-symbol-object.h" #include "jcontext.h" #include "jrt.h" @@ -289,6 +290,13 @@ ecma_raise_standard_error_with_format (ecma_standard_error_t error_type, /**< er lit_magic_string_id_t class_name = ecma_object_get_class_name (arg_object_p); arg_string_p = ecma_get_magic_string (class_name); } +#ifndef CONFIG_DISABLE_ES2015_SYMBOL_BUILTIN + else if (ecma_is_value_symbol (arg_val)) + { + ecma_value_t symbol_desc_value = ecma_get_symbol_descriptive_string (arg_val); + arg_string_p = ecma_get_string_from_value (symbol_desc_value); + } +#endif /* !CONFIG_DISABLE_ES2015_SYMBOL_BUILTIN */ else { ecma_value_t str_val = ecma_op_to_string (arg_val); diff --git a/tests/jerry/es2015/symbol-exception.js b/tests/jerry/es2015/symbol-exception.js new file mode 100644 index 000000000..34485bddd --- /dev/null +++ b/tests/jerry/es2015/symbol-exception.js @@ -0,0 +1,22 @@ +/* Copyright JS Foundation and other contributors, http://js.foundation + * + * 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. + */ + +try { + undefined[Symbol ("foo")]; + assert (false); +} catch (e) { + /* Error message: Cannot read property 'Symbol(foo)' of undefined */ + assert (e instanceof TypeError); +}