Fix Symbol's description default value (#4077)

In the standard if we create a Symbol object without adding a description value
default value is undefined not empty string.

JerryScript-DCO-1.0-Signed-off-by: bence gabor kis kisbg@inf.u-szeged.hu
This commit is contained in:
kisbg
2020-08-07 15:00:44 +02:00
committed by GitHub
parent 58a649ffe8
commit cebb6aee5c
6 changed files with 45 additions and 18 deletions
@@ -96,10 +96,15 @@ ecma_builtin_symbol_prototype_dispatch_routine (uint16_t builtin_routine_id, /**
JERRY_ASSERT (builtin_routine_id == ECMA_SYMBOL_PROTOTYPE_DESCRIPTION);
ecma_string_t *symbol_p = ecma_get_symbol_from_value (sym);
ecma_string_t *desc_p = ecma_get_symbol_description (symbol_p);
ecma_ref_ecma_string (desc_p);
ecma_value_t desc = ecma_get_symbol_description (symbol_p);
if (ecma_is_value_undefined (desc))
{
return desc;
}
return ecma_make_string_value (desc_p);
ecma_string_t *desc_p = ecma_get_string_from_value (desc);
ecma_ref_ecma_string (desc_p);
return desc;
} /* ecma_builtin_symbol_prototype_dispatch_routine */
/**
@@ -119,7 +119,15 @@ ecma_builtin_symbol_for_helper (ecma_value_t value_to_find) /**< symbol or ecma-
if (is_for)
{
ecma_string_t *symbol_desc_p = ecma_get_symbol_description (value_p);
ecma_value_t symbol_desc = ecma_get_symbol_description (value_p);
if (ecma_is_value_undefined (symbol_desc))
{
ecma_ref_ecma_string (value_p);
return ecma_make_symbol_value (value_p);
}
ecma_string_t *symbol_desc_p = ecma_get_string_from_value (symbol_desc);
if (ecma_compare_ecma_strings (symbol_desc_p, string_p))
{
@@ -133,9 +141,16 @@ ecma_builtin_symbol_for_helper (ecma_value_t value_to_find) /**< symbol or ecma-
{
if (string_p == value_p)
{
ecma_string_t *symbol_desc_p = ecma_get_symbol_description (string_p);
ecma_value_t symbol_desc = ecma_get_symbol_description (string_p);
if (ecma_is_value_undefined (symbol_desc))
{
return symbol_desc;
}
ecma_string_t *symbol_desc_p = ecma_get_string_from_value (symbol_desc);
ecma_ref_ecma_string (symbol_desc_p);
return ecma_make_string_value (symbol_desc_p);
return symbol_desc;
}
}
}