Initial implementation of class fields (#4191)
Missing features: - this binding in static fields are not supported - static field evaluation order is wrong - function names are not supported JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -192,7 +192,8 @@ ecma_gc_mark_properties (ecma_property_pair_t *property_pair_p) /**< property pa
|
||||
case ECMA_PROPERTY_TYPE_INTERNAL:
|
||||
{
|
||||
JERRY_ASSERT (ECMA_PROPERTY_GET_NAME_TYPE (property) == ECMA_DIRECT_STRING_MAGIC
|
||||
&& property_pair_p->names_cp[index] >= LIT_FIRST_INTERNAL_MAGIC_STRING);
|
||||
&& property_pair_p->names_cp[index] >= LIT_INTERNAL_MAGIC_STRING_FIRST_DATA
|
||||
&& property_pair_p->names_cp[index] < LIT_MAGIC_STRING__COUNT);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -1054,33 +1055,51 @@ ecma_gc_free_properties (ecma_object_t *object_p) /**< object */
|
||||
ecma_property_t *property_p = (ecma_property_t *) (prop_iter_p->types + i);
|
||||
jmem_cpointer_t name_cp = prop_pair_p->names_cp[i];
|
||||
|
||||
if (ECMA_PROPERTY_GET_NAME_TYPE (*property_p) == ECMA_DIRECT_STRING_MAGIC)
|
||||
if (ECMA_PROPERTY_GET_TYPE (*property_p) == ECMA_PROPERTY_TYPE_INTERNAL)
|
||||
{
|
||||
JERRY_ASSERT (ECMA_PROPERTY_GET_NAME_TYPE (*property_p) == ECMA_DIRECT_STRING_MAGIC);
|
||||
|
||||
/* Call the native's free callback. */
|
||||
if (JERRY_UNLIKELY (name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER))
|
||||
switch (name_cp)
|
||||
{
|
||||
ecma_gc_free_native_pointer (property_p);
|
||||
}
|
||||
#if ENABLED (JERRY_BUILTIN_WEAKMAP) || ENABLED (JERRY_BUILTIN_WEAKSET)
|
||||
else if (JERRY_UNLIKELY (name_cp == LIT_INTERNAL_MAGIC_STRING_WEAK_REFS))
|
||||
{
|
||||
ecma_collection_t *refs_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_collection_t,
|
||||
ECMA_PROPERTY_VALUE_PTR (property_p)->value);
|
||||
for (uint32_t j = 0; j < refs_p->item_count; j++)
|
||||
case LIT_INTERNAL_MAGIC_STRING_WEAK_REFS:
|
||||
{
|
||||
const ecma_value_t value = refs_p->buffer_p[j];
|
||||
if (!ecma_is_value_empty (value))
|
||||
ecma_collection_t *refs_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_collection_t,
|
||||
prop_pair_p->values[i].value);
|
||||
for (uint32_t j = 0; j < refs_p->item_count; j++)
|
||||
{
|
||||
ecma_object_t *container_p = ecma_get_object_from_value (value);
|
||||
const ecma_value_t value = refs_p->buffer_p[j];
|
||||
if (!ecma_is_value_empty (value))
|
||||
{
|
||||
ecma_object_t *container_p = ecma_get_object_from_value (value);
|
||||
|
||||
ecma_op_container_remove_weak_entry (container_p,
|
||||
ecma_make_object_value (object_p));
|
||||
ecma_op_container_remove_weak_entry (container_p,
|
||||
ecma_make_object_value (object_p));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ecma_collection_destroy (refs_p);
|
||||
}
|
||||
ecma_collection_destroy (refs_p);
|
||||
break;
|
||||
}
|
||||
#endif /* ENABLED (JERRY_BUILTIN_WEAKMAP) || ENABLED (JERRY_BUILTIN_WEAKSET) */
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
case LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_COMPUTED:
|
||||
{
|
||||
ecma_value_t *compact_collection_p;
|
||||
compact_collection_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_value_t,
|
||||
prop_pair_p->values[i].value);
|
||||
ecma_compact_collection_free (compact_collection_p);
|
||||
break;
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
default:
|
||||
{
|
||||
JERRY_ASSERT (name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER);
|
||||
ecma_gc_free_native_pointer (property_p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (prop_iter_p->types[i] != ECMA_PROPERTY_TYPE_DELETED)
|
||||
|
||||
@@ -113,17 +113,21 @@ typedef enum
|
||||
ECMA_PARSE_DIRECT_EVAL = (1u << 3), /**< eval is called directly (ECMA-262 v5, 15.1.2.1.1) */
|
||||
ECMA_PARSE_CLASS_CONSTRUCTOR = (1u << 4), /**< a class constructor is being parsed */
|
||||
|
||||
/* These four status flags must be in this order. The first three are also parser status flags.
|
||||
/* These five status flags must be in this order. The first four are also parser status flags.
|
||||
* See PARSER_SAVE_STATUS_FLAGS / PARSER_RESTORE_STATUS_FLAGS. */
|
||||
ECMA_PARSE_ALLOW_SUPER = (1u << 5), /**< allow super property access */
|
||||
ECMA_PARSE_ALLOW_SUPER_CALL = (1u << 6), /**< allow super constructor call */
|
||||
ECMA_PARSE_ALLOW_NEW_TARGET = (1u << 7), /**< allow new.target access */
|
||||
ECMA_PARSE_FUNCTION_CONTEXT = (1u << 8), /**< function context is present (ECMA_PARSE_DIRECT_EVAL must be set) */
|
||||
ECMA_PARSE_INSIDE_CLASS_FIELD = (1u << 7), /**< a class field is being parsed */
|
||||
ECMA_PARSE_ALLOW_NEW_TARGET = (1u << 8), /**< allow new.target access */
|
||||
ECMA_PARSE_FUNCTION_CONTEXT = (1u << 9), /**< function context is present (ECMA_PARSE_DIRECT_EVAL must be set) */
|
||||
|
||||
ECMA_PARSE_GENERATOR_FUNCTION = (1u << 9), /**< generator function is parsed */
|
||||
ECMA_PARSE_ASYNC_FUNCTION = (1u << 10), /**< async function is parsed */
|
||||
ECMA_PARSE_GENERATOR_FUNCTION = (1u << 10), /**< generator function is parsed */
|
||||
ECMA_PARSE_ASYNC_FUNCTION = (1u << 11), /**< async function is parsed */
|
||||
|
||||
/* These flags are internally used by the parser. */
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
ECMA_PARSE_INTERNAL_PRE_SCANNING = (1u << 12),
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
#ifndef JERRY_NDEBUG
|
||||
/**
|
||||
* This flag represents an error in for in/of statements, which cannot be set
|
||||
@@ -1439,6 +1443,17 @@ typedef struct
|
||||
*/
|
||||
#define ECMA_COLLECTION_INITIAL_SIZE ECMA_COLLECTION_ALLOCATED_SIZE (ECMA_COLLECTION_INITIAL_CAPACITY)
|
||||
|
||||
/**
|
||||
* Size shift of a compact collection
|
||||
*/
|
||||
#define ECMA_COMPACT_COLLECTION_SIZE_SHIFT 3
|
||||
|
||||
/**
|
||||
* Get the size of the compact collection
|
||||
*/
|
||||
#define ECMA_COMPACT_COLLECTION_GET_SIZE(compact_collection_p) \
|
||||
((compact_collection_p)[0] >> ECMA_COMPACT_COLLECTION_SIZE_SHIFT)
|
||||
|
||||
/**
|
||||
* Direct string types (2 bit).
|
||||
*/
|
||||
|
||||
@@ -248,6 +248,134 @@ ecma_collection_has_string_value (ecma_collection_t *collection_p, /**< collecti
|
||||
return false;
|
||||
} /* ecma_collection_has_string_value */
|
||||
|
||||
/**
|
||||
* Initial capacity of an ecma-collection
|
||||
*/
|
||||
#define ECMA_COMPACT_COLLECTION_GROWTH 8
|
||||
|
||||
/**
|
||||
* Set the size of the compact collection
|
||||
*/
|
||||
#define ECMA_COMPACT_COLLECTION_SET_SIZE(compact_collection_p, item_count, unused_items) \
|
||||
((compact_collection_p)[0] = (((item_count) << ECMA_COMPACT_COLLECTION_SIZE_SHIFT) | (unused_items)))
|
||||
|
||||
/**
|
||||
* Set the size of the compact collection
|
||||
*/
|
||||
#define ECMA_COMPACT_COLLECTION_GET_UNUSED_ITEM_COUNT(compact_collection_p) \
|
||||
((compact_collection_p)[0] & ((1 << ECMA_COMPACT_COLLECTION_SIZE_SHIFT) - 1))
|
||||
|
||||
/**
|
||||
* Allocate a compact collection of ecma values
|
||||
*
|
||||
* @return pointer to the compact collection
|
||||
*/
|
||||
ecma_value_t *
|
||||
ecma_new_compact_collection (void)
|
||||
{
|
||||
size_t size = (ECMA_COMPACT_COLLECTION_GROWTH / 2) * sizeof (ecma_value_t);
|
||||
ecma_value_t *compact_collection_p = (ecma_value_t *) jmem_heap_alloc_block (size);
|
||||
|
||||
ECMA_COMPACT_COLLECTION_SET_SIZE (compact_collection_p,
|
||||
ECMA_COMPACT_COLLECTION_GROWTH / 2,
|
||||
(ECMA_COMPACT_COLLECTION_GROWTH / 2) - 1);
|
||||
return compact_collection_p;
|
||||
} /* ecma_new_compact_collection */
|
||||
|
||||
/**
|
||||
* Append a value to the compact collection
|
||||
*
|
||||
* @return updated pointer to the compact collection
|
||||
*/
|
||||
ecma_value_t *
|
||||
ecma_compact_collection_push_back (ecma_value_t *compact_collection_p, /**< compact collection */
|
||||
ecma_value_t value) /**< ecma value to append */
|
||||
{
|
||||
ecma_value_t size = ECMA_COMPACT_COLLECTION_GET_SIZE (compact_collection_p);
|
||||
ecma_value_t unused_items = ECMA_COMPACT_COLLECTION_GET_UNUSED_ITEM_COUNT (compact_collection_p);
|
||||
|
||||
if (unused_items > 0)
|
||||
{
|
||||
compact_collection_p[size - unused_items] = value;
|
||||
(*compact_collection_p)--;
|
||||
return compact_collection_p;
|
||||
}
|
||||
|
||||
if (size == ECMA_COMPACT_COLLECTION_GROWTH / 2)
|
||||
{
|
||||
size_t old_size = (ECMA_COMPACT_COLLECTION_GROWTH / 2) * sizeof (ecma_value_t);
|
||||
size_t new_size = ECMA_COMPACT_COLLECTION_GROWTH * sizeof (ecma_value_t);
|
||||
compact_collection_p = jmem_heap_realloc_block (compact_collection_p, old_size, new_size);
|
||||
|
||||
compact_collection_p[ECMA_COMPACT_COLLECTION_GROWTH / 2] = value;
|
||||
|
||||
ECMA_COMPACT_COLLECTION_SET_SIZE (compact_collection_p,
|
||||
ECMA_COMPACT_COLLECTION_GROWTH,
|
||||
(ECMA_COMPACT_COLLECTION_GROWTH / 2) - 1);
|
||||
return compact_collection_p;
|
||||
}
|
||||
|
||||
size_t old_size = size * sizeof (ecma_value_t);
|
||||
size_t new_size = old_size + (ECMA_COMPACT_COLLECTION_GROWTH * sizeof (ecma_value_t));
|
||||
|
||||
compact_collection_p = jmem_heap_realloc_block (compact_collection_p, old_size, new_size);
|
||||
compact_collection_p[size] = value;
|
||||
|
||||
ECMA_COMPACT_COLLECTION_SET_SIZE (compact_collection_p,
|
||||
size + ECMA_COMPACT_COLLECTION_GROWTH,
|
||||
ECMA_COMPACT_COLLECTION_GROWTH - 1);
|
||||
return compact_collection_p;
|
||||
} /* ecma_compact_collection_push_back */
|
||||
|
||||
/**
|
||||
* Discard the unused elements of a compact collection
|
||||
*
|
||||
* Note:
|
||||
* further items should not be added after this call
|
||||
*
|
||||
* @return updated pointer to the compact collection
|
||||
*/
|
||||
ecma_value_t *
|
||||
ecma_compact_collection_shrink (ecma_value_t *compact_collection_p) /**< compact collection */
|
||||
{
|
||||
ecma_value_t unused_items = ECMA_COMPACT_COLLECTION_GET_UNUSED_ITEM_COUNT (compact_collection_p);
|
||||
|
||||
if (unused_items == 0)
|
||||
{
|
||||
return compact_collection_p;
|
||||
}
|
||||
|
||||
ecma_value_t size = ECMA_COMPACT_COLLECTION_GET_SIZE (compact_collection_p);
|
||||
|
||||
size_t old_size = size * sizeof (ecma_value_t);
|
||||
size_t new_size = (size - unused_items) * sizeof (ecma_value_t);
|
||||
|
||||
compact_collection_p = jmem_heap_realloc_block (compact_collection_p, old_size, new_size);
|
||||
|
||||
ECMA_COMPACT_COLLECTION_SET_SIZE (compact_collection_p, size - unused_items, 0);
|
||||
return compact_collection_p;
|
||||
} /* ecma_compact_collection_shrink */
|
||||
|
||||
/**
|
||||
* Free a compact collection
|
||||
*/
|
||||
void
|
||||
ecma_compact_collection_free (ecma_value_t *compact_collection_p) /**< compact collection */
|
||||
{
|
||||
ecma_value_t size = ECMA_COMPACT_COLLECTION_GET_SIZE (compact_collection_p);
|
||||
ecma_value_t unused_items = ECMA_COMPACT_COLLECTION_GET_UNUSED_ITEM_COUNT (compact_collection_p);
|
||||
|
||||
ecma_value_t *end_p = compact_collection_p + size - unused_items;
|
||||
ecma_value_t *current_p = compact_collection_p + 1;
|
||||
|
||||
while (current_p < end_p)
|
||||
{
|
||||
ecma_free_value (*current_p++);
|
||||
}
|
||||
|
||||
jmem_heap_free_block (compact_collection_p, size * sizeof (ecma_value_t));
|
||||
} /* ecma_compact_collection_free */
|
||||
|
||||
/**
|
||||
* @}
|
||||
* @}
|
||||
|
||||
@@ -784,7 +784,8 @@ ecma_free_property (ecma_object_t *object_p, /**< object the property belongs to
|
||||
|
||||
/* Must be a native pointer. */
|
||||
JERRY_ASSERT (ECMA_PROPERTY_GET_NAME_TYPE (*property_p) == ECMA_DIRECT_STRING_MAGIC
|
||||
&& name_cp >= LIT_FIRST_INTERNAL_MAGIC_STRING);
|
||||
&& name_cp >= LIT_INTERNAL_MAGIC_STRING_FIRST_DATA
|
||||
&& name_cp < LIT_MAGIC_STRING__COUNT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -464,6 +464,11 @@ void ecma_collection_free_objects (ecma_collection_t *collection_p);
|
||||
bool ecma_collection_check_duplicated_entries (ecma_collection_t *collection_p);
|
||||
bool ecma_collection_has_string_value (ecma_collection_t *collection_p, ecma_string_t *string_p);
|
||||
|
||||
ecma_value_t *ecma_new_compact_collection (void);
|
||||
ecma_value_t *ecma_compact_collection_push_back (ecma_value_t *compact_collection_p, ecma_value_t value);
|
||||
ecma_value_t *ecma_compact_collection_shrink (ecma_value_t *compact_collection_p);
|
||||
void ecma_compact_collection_free (ecma_value_t *compact_collection_p);
|
||||
|
||||
/* ecma-helpers.c */
|
||||
ecma_object_t *ecma_create_object (ecma_object_t *prototype_object_p, size_t ext_object_size, ecma_object_type_t type);
|
||||
ecma_object_t *ecma_create_decl_lex_env (ecma_object_t *outer_lexical_environment_p);
|
||||
|
||||
@@ -137,6 +137,9 @@ struct jerry_context_t
|
||||
#endif /* ENABLED (JERRY_CPOINTER_32_BIT) */
|
||||
const lit_utf8_byte_t * const *lit_magic_string_ex_array; /**< array of external magic strings */
|
||||
const lit_utf8_size_t *lit_magic_string_ex_sizes; /**< external magic string lengths */
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
ecma_value_t *computed_class_fields_p; /**< names of the computed class fields */
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
jmem_cpointer_t string_list_first_cp; /**< first item of the literal string list */
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
jmem_cpointer_t symbol_list_first_cp; /**< first item of the global symbol list */
|
||||
|
||||
@@ -61,16 +61,16 @@ typedef enum
|
||||
LIT_GLOBAL_SYMBOL_TO_STRING_TAG, /**< @@toStringTag well known symbol */
|
||||
LIT_GLOBAL_SYMBOL_UNSCOPABLES, /**< @@unscopables well known symbol */
|
||||
LIT_GLOBAL_SYMBOL__LAST = LIT_GLOBAL_SYMBOL_UNSCOPABLES, /**< last global symbol */
|
||||
LIT_GC_MARK_REQUIRED_MAGIC_STRING__COUNT, /**< number of internal magic strings which will be used as
|
||||
* property names, and their values need to be marked during gc. */
|
||||
LIT_INTERNAL_MAGIC_STRING_DELETED = LIT_GC_MARK_REQUIRED_MAGIC_STRING__COUNT, /**< special value for
|
||||
* deleted properties */
|
||||
|
||||
LIT_INTERNAL_MAGIC_STRING_DELETED, /**< special value for deleted properties */
|
||||
LIT_INTERNAL_MAGIC_STRING_INTERNAL_OBJECT, /**< Internal object ID for internal properties */
|
||||
LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_INIT, /**< function which initializes properties */
|
||||
|
||||
LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER, /**< native pointer info associated with an object */
|
||||
LIT_FIRST_INTERNAL_MAGIC_STRING = LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER, /**< first index of internal
|
||||
* magic strings */
|
||||
LIT_INTERNAL_MAGIC_STRING_FIRST_DATA = LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER, /**< first index of special
|
||||
* data properties */
|
||||
LIT_INTERNAL_MAGIC_STRING_WEAK_REFS, /**< Weak references to the current object */
|
||||
LIT_INTERNAL_MAGIC_STRING_INTERNAL_OBJECT, /**< Internal object ID for internal properties */
|
||||
LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_COMPUTED, /**< computed class field name list */
|
||||
LIT_MAGIC_STRING__COUNT /**< number of magic strings */
|
||||
} lit_magic_string_id_t;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ JERRY_STATIC_ASSERT ((sizeof (cbc_uint16_arguments_t) % sizeof (jmem_cpointer_t)
|
||||
*/
|
||||
JERRY_STATIC_ASSERT (CBC_END == 238,
|
||||
number_of_cbc_opcodes_changed);
|
||||
JERRY_STATIC_ASSERT (CBC_EXT_END == 135,
|
||||
JERRY_STATIC_ASSERT (CBC_EXT_END == 140,
|
||||
number_of_cbc_ext_opcodes_changed);
|
||||
|
||||
#if ENABLED (JERRY_PARSER)
|
||||
|
||||
@@ -634,6 +634,8 @@
|
||||
VM_OC_SET_GETTER | VM_OC_NON_STATIC_FLAG | VM_OC_GET_STACK_STACK) \
|
||||
CBC_OPCODE (CBC_EXT_SET_COMPUTED_SETTER, CBC_NO_FLAG, -2, \
|
||||
VM_OC_SET_SETTER | VM_OC_NON_STATIC_FLAG | VM_OC_GET_STACK_STACK) \
|
||||
CBC_OPCODE (CBC_EXT_SET_STATIC_PROPERTY, CBC_HAS_LITERAL_ARG, -1, \
|
||||
VM_OC_SET_PROPERTY | VM_OC_GET_STACK_LITERAL) \
|
||||
CBC_OPCODE (CBC_EXT_SET_STATIC_PROPERTY_LITERAL, CBC_HAS_LITERAL_ARG | CBC_HAS_LITERAL_ARG2, 0, \
|
||||
VM_OC_SET_PROPERTY | VM_OC_GET_LITERAL_LITERAL) \
|
||||
CBC_OPCODE (CBC_EXT_SET_STATIC_COMPUTED_PROPERTY, CBC_NO_FLAG, -2, \
|
||||
@@ -648,6 +650,8 @@
|
||||
VM_OC_SET_SETTER | VM_OC_GET_STACK_STACK) \
|
||||
CBC_OPCODE (CBC_EXT_SET__PROTO__, CBC_NO_FLAG, -1, \
|
||||
VM_OC_SET__PROTO__ | VM_OC_GET_STACK) \
|
||||
CBC_OPCODE (CBC_EXT_ADD_COMPUTED_FIELD, CBC_NO_FLAG, -1, \
|
||||
VM_OC_ADD_COMPUTED_FIELD | VM_OC_GET_STACK) \
|
||||
\
|
||||
/* Class related opcodes. */ \
|
||||
CBC_OPCODE (CBC_EXT_PUSH_NAMED_CLASS_ENV, CBC_HAS_LITERAL_ARG, 1, \
|
||||
@@ -664,6 +668,12 @@
|
||||
VM_OC_FINALIZE_CLASS | VM_OC_GET_LITERAL) \
|
||||
CBC_OPCODE (CBC_EXT_FINALIZE_ANONYMOUS_CLASS, CBC_NO_FLAG, -2, \
|
||||
VM_OC_FINALIZE_CLASS) \
|
||||
CBC_OPCODE (CBC_EXT_SET_CLASS_FIELD_INIT, CBC_HAS_LITERAL_ARG, 0, \
|
||||
VM_OC_SET_CLASS_FIELD_INIT | VM_OC_GET_LITERAL) \
|
||||
CBC_OPCODE (CBC_EXT_RUN_CLASS_FIELD_INIT, CBC_NO_FLAG, 0, \
|
||||
VM_OC_RUN_CLASS_FIELD_INIT) \
|
||||
CBC_OPCODE (CBC_EXT_SET_NEXT_COMPUTED_FIELD, CBC_NO_FLAG, -1, \
|
||||
VM_OC_SET_NEXT_COMPUTED_FIELD | VM_OC_PUT_REFERENCE) \
|
||||
CBC_OPCODE (CBC_EXT_PUSH_SUPER, CBC_NO_FLAG, 1, \
|
||||
VM_OC_NONE) \
|
||||
CBC_OPCODE (CBC_EXT_PUSH_SUPER_CONSTRUCTOR, CBC_NO_FLAG, 1, \
|
||||
|
||||
+115
-44
@@ -433,6 +433,7 @@ lexer_skip_spaces (parser_context_t *context_p) /**< context */
|
||||
} /* lexer_skip_spaces */
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
|
||||
/**
|
||||
* Skip all the continuous empty statements.
|
||||
*/
|
||||
@@ -450,6 +451,22 @@ lexer_skip_empty_statements (parser_context_t *context_p) /**< context */
|
||||
|
||||
context_p->token.flags = (uint8_t) (context_p->token.flags | LEXER_NO_SKIP_SPACES);
|
||||
} /* lexer_skip_empty_statements */
|
||||
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
/**
|
||||
* Checks whether the keyword has escape sequences.
|
||||
*/
|
||||
#define LEXER_CHECK_INVALID_KEYWORD(ident_start_p, buffer_p) \
|
||||
(JERRY_UNLIKELY ((ident_start_p) == (buffer_p)) \
|
||||
&& !(context_p->global_status_flags & ECMA_PARSE_INTERNAL_PRE_SCANNING))
|
||||
#else /* !ENABLED (JERRY_ESNEXT) */
|
||||
/**
|
||||
* Checks whether the keyword has escape sequences.
|
||||
*/
|
||||
#define LEXER_CHECK_INVALID_KEYWORD(ident_start_p, buffer_p) \
|
||||
(JERRY_UNLIKELY ((ident_start_p) == (buffer_p)))
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
/**
|
||||
@@ -807,7 +824,6 @@ lexer_parse_identifier (parser_context_t *context_p, /**< context */
|
||||
JERRY_ASSERT (length > 0);
|
||||
|
||||
context_p->token.type = LEXER_LITERAL;
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.lit_location.type = LEXER_IDENT_LITERAL;
|
||||
context_p->token.lit_location.has_escape = has_escape;
|
||||
|
||||
@@ -865,7 +881,7 @@ lexer_parse_identifier (parser_context_t *context_p, /**< context */
|
||||
|
||||
if (context_p->status_flags & PARSER_DISALLOW_AWAIT_YIELD)
|
||||
{
|
||||
if (ident_start_p == buffer_p)
|
||||
if (LEXER_CHECK_INVALID_KEYWORD (ident_start_p, buffer_p))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_INVALID_KEYWORD);
|
||||
}
|
||||
@@ -877,7 +893,7 @@ lexer_parse_identifier (parser_context_t *context_p, /**< context */
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
if (ident_start_p == buffer_p)
|
||||
if (LEXER_CHECK_INVALID_KEYWORD (ident_start_p, buffer_p))
|
||||
{
|
||||
/* Escape sequences are not allowed in a keyword. */
|
||||
parser_raise_error (context_p, PARSER_ERR_INVALID_KEYWORD);
|
||||
@@ -890,7 +906,7 @@ lexer_parse_identifier (parser_context_t *context_p, /**< context */
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if (keyword_p->type == LEXER_KEYW_LET && (context_p->status_flags & PARSER_IS_STRICT))
|
||||
{
|
||||
if (ident_start_p == buffer_p)
|
||||
if (LEXER_CHECK_INVALID_KEYWORD (ident_start_p, buffer_p))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_INVALID_KEYWORD);
|
||||
}
|
||||
@@ -903,7 +919,7 @@ lexer_parse_identifier (parser_context_t *context_p, /**< context */
|
||||
{
|
||||
if (context_p->status_flags & PARSER_DISALLOW_AWAIT_YIELD)
|
||||
{
|
||||
if (ident_start_p == buffer_p)
|
||||
if (LEXER_CHECK_INVALID_KEYWORD (ident_start_p, buffer_p))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_INVALID_KEYWORD);
|
||||
}
|
||||
@@ -913,6 +929,11 @@ lexer_parse_identifier (parser_context_t *context_p, /**< context */
|
||||
context_p->token.type = (uint8_t) LEXER_KEYW_YIELD;
|
||||
break;
|
||||
}
|
||||
|
||||
if (keyword_p->type == LEXER_KEYW_ARGUMENTS && (context_p->status_flags & PARSER_INSIDE_CLASS_FIELD))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_ARGUMENTS_IN_CLASS_FIELD);
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
if (keyword_p->type >= LEXER_FIRST_FUTURE_STRICT_RESERVED_WORD
|
||||
@@ -944,6 +965,8 @@ lexer_parse_identifier (parser_context_t *context_p, /**< context */
|
||||
return true;
|
||||
} /* lexer_parse_identifier */
|
||||
|
||||
#undef LEXER_CHECK_INVALID_KEYWORD
|
||||
|
||||
/**
|
||||
* Parse string.
|
||||
*/
|
||||
@@ -1118,9 +1141,6 @@ lexer_parse_string (parser_context_t *context_p, /**< context */
|
||||
uint32_t escape_length = (*source_p == LIT_CHAR_LOWERCASE_X) ? 3 : 5;
|
||||
lit_code_point_t code_point = UINT32_MAX;
|
||||
|
||||
context_p->token.line = line;
|
||||
context_p->token.column = (parser_line_counter_t) (column - 1);
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if (source_p + 4 <= source_end_p
|
||||
&& source_p[0] == LIT_CHAR_LOWERCASE_U
|
||||
@@ -1142,6 +1162,8 @@ lexer_parse_string (parser_context_t *context_p, /**< context */
|
||||
|
||||
if (code_point == UINT32_MAX)
|
||||
{
|
||||
context_p->token.line = line;
|
||||
context_p->token.column = (parser_line_counter_t) (column - 1);
|
||||
parser_raise_error (context_p, PARSER_ERR_INVALID_UNICODE_ESCAPE_SEQUENCE);
|
||||
}
|
||||
|
||||
@@ -1312,7 +1334,6 @@ lexer_parse_number (parser_context_t *context_p) /**< context */
|
||||
size_t length;
|
||||
|
||||
context_p->token.type = LEXER_LITERAL;
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.extra_value = LEXER_NUMBER_DECIMAL;
|
||||
context_p->token.lit_location.char_p = source_p;
|
||||
context_p->token.lit_location.type = LEXER_NUMBER_LITERAL;
|
||||
@@ -1571,6 +1592,7 @@ lexer_next_token (parser_context_t *context_p) /**< context */
|
||||
|
||||
lexer_skip_spaces (context_p);
|
||||
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.line = context_p->line;
|
||||
context_p->token.column = context_p->column;
|
||||
|
||||
@@ -2079,6 +2101,33 @@ lexer_consume_generator (parser_context_t *context_p) /**< context */
|
||||
return true;
|
||||
} /* lexer_consume_generator */
|
||||
|
||||
/**
|
||||
* Checks whether the next token is an equal sign and consumes it.
|
||||
*
|
||||
* @return true if the next token is an equal sign
|
||||
*/
|
||||
bool
|
||||
lexer_consume_assign (parser_context_t *context_p) /**< context */
|
||||
{
|
||||
if (!(context_p->token.flags & LEXER_NO_SKIP_SPACES))
|
||||
{
|
||||
lexer_skip_spaces (context_p);
|
||||
context_p->token.flags = (uint8_t) (context_p->token.flags | LEXER_NO_SKIP_SPACES);
|
||||
}
|
||||
|
||||
if (context_p->source_p >= context_p->source_end_p
|
||||
|| context_p->source_p[0] != LIT_CHAR_EQUALS
|
||||
|| (context_p->source_p + 1 < context_p->source_end_p
|
||||
&& (context_p->source_p[1] == LIT_CHAR_EQUALS || context_p->source_p[1] == LIT_CHAR_GREATER_THAN)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
lexer_consume_next_character (context_p);
|
||||
context_p->token.type = LEXER_ASSIGN;
|
||||
return true;
|
||||
} /* lexer_consume_assign */
|
||||
|
||||
/**
|
||||
* Update await / yield keywords after an arrow function with expression.
|
||||
*/
|
||||
@@ -2409,6 +2458,27 @@ lexer_convert_literal_to_chars (parser_context_t *context_p, /**< context */
|
||||
return destination_start_p;
|
||||
} /* lexer_convert_literal_to_chars */
|
||||
|
||||
/**
|
||||
* Construct an unused literal.
|
||||
*
|
||||
* @return a newly allocated literal
|
||||
*/
|
||||
lexer_literal_t *
|
||||
lexer_construct_unused_literal (parser_context_t *context_p) /**< context */
|
||||
{
|
||||
lexer_literal_t *literal_p;
|
||||
|
||||
if (context_p->literal_count >= PARSER_MAXIMUM_NUMBER_OF_LITERALS)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_LITERAL_LIMIT_REACHED);
|
||||
}
|
||||
|
||||
literal_p = (lexer_literal_t *) parser_list_append (context_p, &context_p->literal_pool);
|
||||
literal_p->type = LEXER_UNUSED_LITERAL;
|
||||
literal_p->status_flags = 0;
|
||||
return literal_p;
|
||||
} /* lexer_construct_unused_literal */
|
||||
|
||||
/**
|
||||
* Construct a literal object from an identifier.
|
||||
*/
|
||||
@@ -2755,34 +2825,32 @@ lexer_construct_function_object (parser_context_t *context_p, /**< context */
|
||||
lexer_literal_t *literal_p;
|
||||
uint16_t result_index;
|
||||
|
||||
if (context_p->literal_count >= PARSER_MAXIMUM_NUMBER_OF_LITERALS)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_LITERAL_LIMIT_REACHED);
|
||||
}
|
||||
|
||||
parser_flush_cbc (context_p);
|
||||
|
||||
if (context_p->status_flags & PARSER_INSIDE_WITH)
|
||||
{
|
||||
extra_status_flags |= PARSER_INSIDE_WITH;
|
||||
}
|
||||
|
||||
literal_p = (lexer_literal_t *) parser_list_append (context_p, &context_p->literal_pool);
|
||||
literal_p->type = LEXER_UNUSED_LITERAL;
|
||||
literal_p->status_flags = 0;
|
||||
|
||||
literal_p = lexer_construct_unused_literal (context_p);
|
||||
result_index = context_p->literal_count;
|
||||
context_p->literal_count++;
|
||||
|
||||
parser_flush_cbc (context_p);
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if (!(extra_status_flags & PARSER_IS_ARROW_FUNCTION))
|
||||
if (JERRY_LIKELY (!(extra_status_flags & PARSER_IS_ARROW_FUNCTION)))
|
||||
{
|
||||
compiled_code_p = parser_parse_function (context_p, extra_status_flags);
|
||||
}
|
||||
else
|
||||
else if (JERRY_LIKELY (!(extra_status_flags & PARSER_CLASS_CONSTRUCTOR)))
|
||||
{
|
||||
compiled_code_p = parser_parse_arrow_function (context_p, extra_status_flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Since PARSER_IS_ARROW_FUNCTION and PARSER_CLASS_CONSTRUCTOR bits cannot
|
||||
* be set at the same time, this bit combination triggers class field parsing. */
|
||||
compiled_code_p = parser_parse_class_fields (context_p);
|
||||
}
|
||||
#else /* !ENABLED (JERRY_ESNEXT) */
|
||||
compiled_code_p = parser_parse_function (context_p, extra_status_flags);
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
@@ -3031,14 +3099,12 @@ lexer_construct_regexp_object (parser_context_t *context_p, /**< context */
|
||||
literal_p->type = literal_type;
|
||||
literal_p->prop.length = (prop_length_t) length;
|
||||
literal_p->status_flags = 0;
|
||||
context_p->literal_count++;
|
||||
|
||||
context_p->token.type = LEXER_LITERAL;
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.lit_location.type = LEXER_REGEXP_LITERAL;
|
||||
|
||||
context_p->lit_object.literal_p = literal_p;
|
||||
context_p->lit_object.index = (uint16_t) (context_p->literal_count - 1);
|
||||
context_p->lit_object.index = context_p->literal_count++;
|
||||
#else /* !ENABLED (JERRY_BUILTIN_REGEXP) */
|
||||
JERRY_UNUSED (parse_only);
|
||||
parser_raise_error (context_p, PARSER_ERR_UNSUPPORTED_REGEXP);
|
||||
@@ -3057,6 +3123,7 @@ lexer_expect_identifier (parser_context_t *context_p, /**< context */
|
||||
|| literal_type == LEXER_NEW_IDENT_LITERAL);
|
||||
|
||||
lexer_skip_spaces (context_p);
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.line = context_p->line;
|
||||
context_p->token.column = context_p->column;
|
||||
|
||||
@@ -3093,7 +3160,6 @@ lexer_expect_identifier (parser_context_t *context_p, /**< context */
|
||||
/* When parsing default exports for modules, it is not required by functions or classes to have identifiers.
|
||||
* In this case we use a synthetic name for them. */
|
||||
context_p->token.type = LEXER_LITERAL;
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.lit_location = lexer_default_literal;
|
||||
lexer_construct_literal_object (context_p, &context_p->token.lit_location, literal_type);
|
||||
context_p->status_flags &= (uint32_t) ~(PARSER_MODULE_DEFAULT_CLASS_OR_FUNC);
|
||||
@@ -3128,16 +3194,14 @@ lexer_expect_object_literal_id (parser_context_t *context_p, /**< context */
|
||||
parser_raise_error (context_p, PARSER_ERR_PROPERTY_IDENTIFIER_EXPECTED);
|
||||
}
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
int is_class_method = ((ident_opts & LEXER_OBJ_IDENT_CLASS_METHOD)
|
||||
&& !(ident_opts & LEXER_OBJ_IDENT_ONLY_IDENTIFIERS)
|
||||
&& (context_p->token.type != LEXER_KEYW_STATIC));
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.line = context_p->line;
|
||||
context_p->token.column = context_p->column;
|
||||
bool create_literal_object = false;
|
||||
|
||||
JERRY_ASSERT ((ident_opts & LEXER_OBJ_IDENT_CLASS_IDENTIFIER)
|
||||
|| !(ident_opts & LEXER_OBJ_IDENT_CLASS_NO_STATIC));
|
||||
|
||||
if (lexer_parse_identifier (context_p, LEXER_PARSE_NO_OPTS))
|
||||
{
|
||||
if (!(ident_opts & (LEXER_OBJ_IDENT_ONLY_IDENTIFIERS | LEXER_OBJ_IDENT_OBJECT_PATTERN)))
|
||||
@@ -3150,6 +3214,8 @@ lexer_expect_object_literal_id (parser_context_t *context_p, /**< context */
|
||||
&& context_p->source_p[0] != LIT_CHAR_COMMA
|
||||
&& context_p->source_p[0] != LIT_CHAR_RIGHT_BRACE
|
||||
&& context_p->source_p[0] != LIT_CHAR_LEFT_PAREN
|
||||
&& context_p->source_p[0] != LIT_CHAR_SEMICOLON
|
||||
&& context_p->source_p[0] != LIT_CHAR_EQUALS
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
&& context_p->source_p[0] != LIT_CHAR_COLON)
|
||||
{
|
||||
@@ -3171,18 +3237,19 @@ lexer_expect_object_literal_id (parser_context_t *context_p, /**< context */
|
||||
context_p->token.type = LEXER_KEYW_ASYNC;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ident_opts & LEXER_OBJ_IDENT_CLASS_NO_STATIC)
|
||||
{
|
||||
if (lexer_compare_literal_to_string (context_p, "static", 6))
|
||||
{
|
||||
context_p->token.type = LEXER_KEYW_STATIC;
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
}
|
||||
}
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if (is_class_method && lexer_compare_literal_to_string (context_p, "static", 6))
|
||||
{
|
||||
context_p->token.type = LEXER_KEYW_STATIC;
|
||||
return;
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
create_literal_object = true;
|
||||
}
|
||||
else
|
||||
@@ -3263,7 +3330,11 @@ lexer_expect_object_literal_id (parser_context_t *context_p, /**< context */
|
||||
&& char_p[0] <= LIT_CHAR_9)
|
||||
{
|
||||
lexer_parse_number (context_p);
|
||||
lexer_construct_number_object (context_p, false, false);
|
||||
|
||||
if (!(ident_opts & LEXER_OBJ_IDENT_CLASS_IDENTIFIER))
|
||||
{
|
||||
lexer_construct_number_object (context_p, false, false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@@ -3274,10 +3345,8 @@ lexer_expect_object_literal_id (parser_context_t *context_p, /**< context */
|
||||
if (create_literal_object)
|
||||
{
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if (is_class_method && lexer_compare_literal_to_string (context_p, "constructor", 11))
|
||||
if (ident_opts & LEXER_OBJ_IDENT_CLASS_IDENTIFIER)
|
||||
{
|
||||
context_p->token.type = LEXER_CLASS_CONSTRUCTOR;
|
||||
context_p->token.flags &= (uint8_t) ~LEXER_NO_SKIP_SPACES;
|
||||
return;
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
@@ -3300,6 +3369,7 @@ bool
|
||||
lexer_scan_identifier (parser_context_t *context_p) /**< context */
|
||||
{
|
||||
lexer_skip_spaces (context_p);
|
||||
context_p->token.keyword_type = LEXER_EOS;
|
||||
context_p->token.line = context_p->line;
|
||||
context_p->token.column = context_p->column;
|
||||
|
||||
@@ -3309,6 +3379,7 @@ lexer_scan_identifier (parser_context_t *context_p) /**< context */
|
||||
return true;
|
||||
}
|
||||
|
||||
context_p->token.flags |= LEXER_NO_SKIP_SPACES;
|
||||
lexer_next_token (context_p);
|
||||
return false;
|
||||
} /* lexer_scan_identifier */
|
||||
|
||||
@@ -198,7 +198,6 @@ typedef enum
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
LEXER_ASSIGN_GROUP_EXPR, /**< indetifier for the assignment is located in a group expression */
|
||||
LEXER_ASSIGN_CONST, /**< a const binding is reassigned */
|
||||
LEXER_CLASS_CONSTRUCTOR, /**< special value for class constructor method */
|
||||
LEXER_INVALID_PATTERN, /**< special value for invalid destructuring pattern */
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
@@ -276,8 +275,9 @@ typedef enum
|
||||
{
|
||||
LEXER_OBJ_IDENT_NO_OPTS = (1u << 0), /**< no options */
|
||||
LEXER_OBJ_IDENT_ONLY_IDENTIFIERS = (1u << 1), /**< only identifiers are accepted */
|
||||
LEXER_OBJ_IDENT_CLASS_METHOD = (1u << 2), /**< expect identifier inside a class body */
|
||||
LEXER_OBJ_IDENT_OBJECT_PATTERN = (1u << 3), /**< parse "get"/"set" as string literal in object pattern */
|
||||
LEXER_OBJ_IDENT_CLASS_IDENTIFIER = (1u << 2), /**< expect identifier inside a class body */
|
||||
LEXER_OBJ_IDENT_CLASS_NO_STATIC = (1u << 3), /**< static keyword was not present before the identifier */
|
||||
LEXER_OBJ_IDENT_OBJECT_PATTERN = (1u << 4), /**< parse "get"/"set" as string literal in object pattern */
|
||||
} lexer_obj_ident_opts_t;
|
||||
|
||||
/**
|
||||
|
||||
@@ -491,22 +491,6 @@ parser_parse_array_initializer (parser_context_t *context_p, parser_pattern_flag
|
||||
static void
|
||||
parser_parse_object_initializer (parser_context_t *context_p, parser_pattern_flags_t flags);
|
||||
|
||||
/**
|
||||
* Description of "get" literal string.
|
||||
*/
|
||||
static const lexer_lit_location_t lexer_get_literal =
|
||||
{
|
||||
(const uint8_t *) "get", 3, LEXER_STRING_LITERAL, false
|
||||
};
|
||||
|
||||
/**
|
||||
* Description of "set" literal string.
|
||||
*/
|
||||
static const lexer_lit_location_t lexer_set_literal =
|
||||
{
|
||||
(const uint8_t *) "set", 3, LEXER_STRING_LITERAL, false
|
||||
};
|
||||
|
||||
/**
|
||||
* Class literal parsing options.
|
||||
*/
|
||||
@@ -517,6 +501,18 @@ typedef enum
|
||||
PARSER_CLASS_LITERAL_HERTIAGE_PRESENT = (1 << 1), /**< class heritage is present */
|
||||
} parser_class_literal_opts_t;
|
||||
|
||||
/**
|
||||
* Checks whether the current string or identifier literal is constructor
|
||||
*
|
||||
* @return true, if constructor and false otherwise
|
||||
*/
|
||||
static inline bool JERRY_ATTR_ALWAYS_INLINE
|
||||
parser_is_constructor_literal (parser_context_t *context_p) /**< context */
|
||||
{
|
||||
return (LEXER_IS_IDENT_OR_STRING (context_p->token.lit_location.type)
|
||||
&& lexer_compare_literal_to_string (context_p, "constructor", 11));
|
||||
} /* parser_is_constructor_literal */
|
||||
|
||||
/**
|
||||
* Parse class literal.
|
||||
*/
|
||||
@@ -526,20 +522,11 @@ parser_parse_class_literal (parser_context_t *context_p, /**< context */
|
||||
{
|
||||
JERRY_ASSERT (context_p->token.type == LEXER_LEFT_BRACE);
|
||||
|
||||
uint32_t status_flags = PARSER_FUNCTION_CLOSURE | PARSER_ALLOW_SUPER;
|
||||
|
||||
lexer_literal_t *ctor_literal_p = NULL;
|
||||
|
||||
if (opts & PARSER_CLASS_LITERAL_CTOR_PRESENT)
|
||||
{
|
||||
if (context_p->literal_count >= PARSER_MAXIMUM_NUMBER_OF_LITERALS)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_LITERAL_LIMIT_REACHED);
|
||||
}
|
||||
|
||||
ctor_literal_p = (lexer_literal_t *) parser_list_append (context_p, &context_p->literal_pool);
|
||||
ctor_literal_p->type = LEXER_UNUSED_LITERAL;
|
||||
ctor_literal_p->status_flags = 0;
|
||||
ctor_literal_p = lexer_construct_unused_literal (context_p);
|
||||
parser_emit_cbc_literal (context_p, CBC_PUSH_LITERAL, (uint16_t) (context_p->literal_count++));
|
||||
}
|
||||
else if (opts & PARSER_CLASS_LITERAL_HERTIAGE_PRESENT)
|
||||
@@ -554,6 +541,7 @@ parser_parse_class_literal (parser_context_t *context_p, /**< context */
|
||||
parser_emit_cbc_ext (context_p, CBC_EXT_INIT_CLASS);
|
||||
|
||||
bool is_static = false;
|
||||
size_t fields_size = 0;
|
||||
|
||||
while (true)
|
||||
{
|
||||
@@ -562,17 +550,56 @@ parser_parse_class_literal (parser_context_t *context_p, /**< context */
|
||||
lexer_skip_empty_statements (context_p);
|
||||
}
|
||||
|
||||
lexer_expect_object_literal_id (context_p, LEXER_OBJ_IDENT_CLASS_METHOD);
|
||||
lexer_expect_object_literal_id (context_p, (LEXER_OBJ_IDENT_CLASS_IDENTIFIER
|
||||
| (is_static ? 0 : LEXER_OBJ_IDENT_CLASS_NO_STATIC)));
|
||||
|
||||
if (context_p->token.type == LEXER_RIGHT_BRACE)
|
||||
{
|
||||
if (JERRY_UNLIKELY (is_static))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_IDENTIFIER_EXPECTED);
|
||||
}
|
||||
JERRY_ASSERT (!is_static);
|
||||
break;
|
||||
}
|
||||
|
||||
if (context_p->token.type == LEXER_KEYW_STATIC)
|
||||
{
|
||||
JERRY_ASSERT (!is_static);
|
||||
is_static = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!is_static && context_p->token.type == LEXER_LITERAL && parser_is_constructor_literal (context_p))
|
||||
{
|
||||
JERRY_ASSERT (!is_static);
|
||||
JERRY_ASSERT (opts & PARSER_CLASS_LITERAL_CTOR_PRESENT);
|
||||
JERRY_ASSERT (ctor_literal_p != NULL);
|
||||
|
||||
if (ctor_literal_p->type == LEXER_FUNCTION_LITERAL)
|
||||
{
|
||||
/* 14.5.1 */
|
||||
parser_raise_error (context_p, PARSER_ERR_MULTIPLE_CLASS_CONSTRUCTORS);
|
||||
}
|
||||
|
||||
uint32_t constructor_status_flags = (PARSER_FUNCTION_CLOSURE
|
||||
| PARSER_ALLOW_SUPER
|
||||
| PARSER_CLASS_CONSTRUCTOR
|
||||
| PARSER_LEXICAL_ENV_NEEDED);
|
||||
|
||||
if (opts & PARSER_CLASS_LITERAL_HERTIAGE_PRESENT)
|
||||
{
|
||||
constructor_status_flags |= PARSER_ALLOW_SUPER_CALL;
|
||||
}
|
||||
|
||||
if (context_p->status_flags & PARSER_INSIDE_WITH)
|
||||
{
|
||||
constructor_status_flags |= PARSER_INSIDE_WITH;
|
||||
}
|
||||
|
||||
parser_flush_cbc (context_p);
|
||||
ecma_compiled_code_t *compiled_code_p = parser_parse_function (context_p, constructor_status_flags);
|
||||
ctor_literal_p->u.bytecode_p = compiled_code_p;
|
||||
ctor_literal_p->type = LEXER_FUNCTION_LITERAL;
|
||||
continue;
|
||||
}
|
||||
|
||||
bool is_computed = false;
|
||||
|
||||
if (context_p->token.type == LEXER_PROPERTY_GETTER || context_p->token.type == LEXER_PROPERTY_SETTER)
|
||||
@@ -580,28 +607,17 @@ parser_parse_class_literal (parser_context_t *context_p, /**< context */
|
||||
uint16_t literal_index, function_literal_index;
|
||||
bool is_getter = (context_p->token.type == LEXER_PROPERTY_GETTER);
|
||||
|
||||
if (lexer_check_next_character (context_p, LIT_CHAR_LEFT_PAREN))
|
||||
{
|
||||
lexer_construct_literal_object (context_p,
|
||||
(is_getter ? (lexer_lit_location_t *) &lexer_get_literal
|
||||
: (lexer_lit_location_t *) &lexer_set_literal),
|
||||
LEXER_STRING_LITERAL);
|
||||
goto parse_class_method;
|
||||
}
|
||||
|
||||
uint32_t accessor_status_flags = status_flags;
|
||||
uint32_t accessor_status_flags = PARSER_FUNCTION_CLOSURE | PARSER_ALLOW_SUPER;
|
||||
accessor_status_flags |= (is_getter ? PARSER_IS_PROPERTY_GETTER : PARSER_IS_PROPERTY_SETTER);
|
||||
|
||||
lexer_expect_object_literal_id (context_p, LEXER_OBJ_IDENT_CLASS_METHOD | LEXER_OBJ_IDENT_ONLY_IDENTIFIERS);
|
||||
lexer_expect_object_literal_id (context_p, LEXER_OBJ_IDENT_ONLY_IDENTIFIERS);
|
||||
literal_index = context_p->lit_object.index;
|
||||
|
||||
if (context_p->token.type == LEXER_RIGHT_SQUARE)
|
||||
{
|
||||
is_computed = true;
|
||||
}
|
||||
else if (!is_static
|
||||
&& LEXER_IS_IDENT_OR_STRING (context_p->token.lit_location.type)
|
||||
&& lexer_compare_literal_to_string (context_p, "constructor", 11))
|
||||
else if (!is_static && parser_is_constructor_literal (context_p))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_CLASS_CONSTRUCTOR_AS_ACCESSOR);
|
||||
}
|
||||
@@ -659,45 +675,7 @@ parser_parse_class_literal (parser_context_t *context_p, /**< context */
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!is_static)
|
||||
{
|
||||
if (context_p->token.type == LEXER_KEYW_STATIC)
|
||||
{
|
||||
is_static = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (context_p->token.type == LEXER_CLASS_CONSTRUCTOR)
|
||||
{
|
||||
JERRY_ASSERT (opts & PARSER_CLASS_LITERAL_CTOR_PRESENT);
|
||||
JERRY_ASSERT (ctor_literal_p != NULL);
|
||||
|
||||
if (ctor_literal_p->type == LEXER_FUNCTION_LITERAL)
|
||||
{
|
||||
/* 14.5.1 */
|
||||
parser_raise_error (context_p, PARSER_ERR_MULTIPLE_CLASS_CONSTRUCTORS);
|
||||
}
|
||||
|
||||
uint32_t constructor_status_flags = (status_flags
|
||||
| PARSER_CLASS_CONSTRUCTOR
|
||||
| PARSER_LEXICAL_ENV_NEEDED);
|
||||
|
||||
if (opts & PARSER_CLASS_LITERAL_HERTIAGE_PRESENT)
|
||||
{
|
||||
constructor_status_flags |= PARSER_ALLOW_SUPER_CALL;
|
||||
}
|
||||
|
||||
parser_flush_cbc (context_p);
|
||||
ecma_compiled_code_t *compiled_code_p = parser_parse_function (context_p, constructor_status_flags);
|
||||
ctor_literal_p->u.bytecode_p = compiled_code_p;
|
||||
ctor_literal_p->type = LEXER_FUNCTION_LITERAL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
status_flags &= (uint32_t) ~(PARSER_IS_GENERATOR_FUNCTION
|
||||
| PARSER_IS_ASYNC_FUNCTION
|
||||
| PARSER_DISALLOW_AWAIT_YIELD);
|
||||
uint32_t status_flags = PARSER_FUNCTION_CLOSURE | PARSER_ALLOW_SUPER;
|
||||
|
||||
if (context_p->token.type == LEXER_KEYW_ASYNC)
|
||||
{
|
||||
@@ -728,15 +706,164 @@ parser_parse_class_literal (parser_context_t *context_p, /**< context */
|
||||
parser_raise_error (context_p, PARSER_ERR_CLASS_STATIC_PROTOTYPE);
|
||||
}
|
||||
}
|
||||
else if ((status_flags & PARSER_IS_GENERATOR_FUNCTION)
|
||||
else if ((status_flags & (PARSER_IS_ASYNC_FUNCTION | PARSER_IS_GENERATOR_FUNCTION))
|
||||
&& lexer_compare_literal_to_string (context_p, "constructor", 11))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_CLASS_CONSTRUCTOR_AS_GENERATOR);
|
||||
parser_raise_error (context_p, PARSER_ERR_INVALID_CLASS_CONSTRUCTOR);
|
||||
}
|
||||
}
|
||||
|
||||
if (!(status_flags & (PARSER_IS_ASYNC_FUNCTION | PARSER_IS_GENERATOR_FUNCTION)))
|
||||
{
|
||||
if (!is_static && !lexer_check_next_character (context_p, LIT_CHAR_LEFT_PAREN))
|
||||
{
|
||||
/* Class field. */
|
||||
if (fields_size == 0)
|
||||
{
|
||||
parser_stack_push_uint8 (context_p, PARSER_CLASS_FIELD_END);
|
||||
}
|
||||
|
||||
scanner_range_t range;
|
||||
uint8_t class_field_type = 0;
|
||||
|
||||
if (!is_computed)
|
||||
{
|
||||
range.start_location.source_p = context_p->token.lit_location.char_p;
|
||||
range.start_location.line = context_p->token.line;
|
||||
range.start_location.column = context_p->token.column;
|
||||
class_field_type = PARSER_CLASS_FIELD_NORMAL;
|
||||
|
||||
if (context_p->token.lit_location.type == LEXER_STRING_LITERAL)
|
||||
{
|
||||
range.start_location.source_p--;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parser_emit_cbc_ext (context_p, CBC_EXT_ADD_COMPUTED_FIELD);
|
||||
}
|
||||
|
||||
if (lexer_consume_assign (context_p))
|
||||
{
|
||||
class_field_type |= PARSER_CLASS_FIELD_INITIALIZED;
|
||||
|
||||
if (context_p->next_scanner_info_p->source_p != context_p->source_p)
|
||||
{
|
||||
lexer_next_token (context_p);
|
||||
parser_parse_expression (context_p, PARSE_EXPR_NO_COMMA);
|
||||
parser_raise_error (context_p, PARSER_ERR_SEMICOLON_EXPECTED);
|
||||
}
|
||||
|
||||
if (is_computed)
|
||||
{
|
||||
scanner_get_location (&range.start_location, context_p);
|
||||
}
|
||||
|
||||
JERRY_ASSERT (context_p->next_scanner_info_p->type == SCANNER_TYPE_CLASS_FIELD_INITIALIZER_END);
|
||||
range.source_end_p = ((scanner_location_info_t *) context_p->next_scanner_info_p)->location.source_p;
|
||||
|
||||
scanner_set_location (context_p, &((scanner_location_info_t *) context_p->next_scanner_info_p)->location);
|
||||
scanner_release_next (context_p, sizeof (scanner_location_info_t));
|
||||
scanner_seek (context_p);
|
||||
|
||||
parser_stack_push (context_p, &range, sizeof (scanner_range_t));
|
||||
fields_size += sizeof (scanner_range_t);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(context_p->token.flags & LEXER_WAS_NEWLINE)
|
||||
&& !lexer_check_next_characters (context_p, LIT_CHAR_SEMICOLON, LIT_CHAR_RIGHT_BRACE))
|
||||
{
|
||||
lexer_next_token (context_p);
|
||||
parser_raise_error (context_p, PARSER_ERR_SEMICOLON_EXPECTED);
|
||||
}
|
||||
|
||||
if (!is_computed)
|
||||
{
|
||||
parser_stack_push (context_p, &range.start_location, sizeof (scanner_location_t));
|
||||
fields_size += sizeof (scanner_location_t);
|
||||
}
|
||||
}
|
||||
|
||||
parser_stack_push_uint8 (context_p, class_field_type);
|
||||
fields_size++;
|
||||
is_static = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!is_computed)
|
||||
{
|
||||
if (context_p->token.lit_location.type != LEXER_NUMBER_LITERAL)
|
||||
{
|
||||
JERRY_ASSERT (context_p->token.lit_location.type == LEXER_IDENT_LITERAL
|
||||
|| context_p->token.lit_location.type == LEXER_STRING_LITERAL);
|
||||
lexer_construct_literal_object (context_p,
|
||||
&context_p->token.lit_location,
|
||||
LEXER_STRING_LITERAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
lexer_construct_number_object (context_p, false, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (is_static && !lexer_check_next_character (context_p, LIT_CHAR_LEFT_PAREN))
|
||||
{
|
||||
if (!is_computed && parser_is_constructor_literal (context_p))
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_ARGUMENT_LIST_EXPECTED);
|
||||
}
|
||||
|
||||
uint16_t literal_index = context_p->lit_object.index;
|
||||
context_p->status_flags |= PARSER_INSIDE_CLASS_FIELD;
|
||||
|
||||
if (lexer_consume_assign (context_p))
|
||||
{
|
||||
if (context_p->next_scanner_info_p->source_p != context_p->source_p)
|
||||
{
|
||||
lexer_next_token (context_p);
|
||||
parser_parse_expression (context_p, PARSE_EXPR_NO_COMMA);
|
||||
parser_raise_error (context_p, PARSER_ERR_SEMICOLON_EXPECTED);
|
||||
}
|
||||
|
||||
JERRY_ASSERT (context_p->next_scanner_info_p->type == SCANNER_TYPE_CLASS_FIELD_INITIALIZER_END);
|
||||
|
||||
/* Changing the source_end_p prevents the lexer to process the name of the next class field
|
||||
* as normal token which may cause issues if the name is also a keyword (e.g. var). */
|
||||
const uint8_t *source_end_p = context_p->source_end_p;
|
||||
context_p->source_end_p = ((scanner_location_info_t *) context_p->next_scanner_info_p)->location.source_p;
|
||||
scanner_release_next (context_p, sizeof (scanner_location_info_t));
|
||||
|
||||
lexer_next_token (context_p);
|
||||
parser_parse_expression (context_p, PARSE_EXPR_NO_COMMA);
|
||||
|
||||
if (context_p->token.type != LEXER_EOS)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_SEMICOLON_EXPECTED);
|
||||
}
|
||||
|
||||
context_p->source_end_p = source_end_p;
|
||||
}
|
||||
else
|
||||
{
|
||||
parser_emit_cbc (context_p, CBC_PUSH_UNDEFINED);
|
||||
}
|
||||
|
||||
if (!is_computed)
|
||||
{
|
||||
parser_emit_cbc_ext_literal (context_p, CBC_EXT_SET_STATIC_PROPERTY, literal_index);
|
||||
}
|
||||
else
|
||||
{
|
||||
parser_emit_cbc_ext (context_p, CBC_EXT_SET_STATIC_COMPUTED_PROPERTY);
|
||||
}
|
||||
|
||||
context_p->status_flags &= (uint32_t) ~PARSER_INSIDE_CLASS_FIELD;
|
||||
is_static = false;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
parse_class_method:
|
||||
; /* Empty statement to make compiler happy. */
|
||||
uint16_t literal_index = context_p->lit_object.index;
|
||||
uint16_t function_literal_index = lexer_construct_function_object (context_p, status_flags | PARSER_IS_METHOD);
|
||||
|
||||
@@ -769,6 +896,17 @@ parse_class_method:
|
||||
context_p->last_cbc_opcode = CBC_SET_LITERAL_PROPERTY;
|
||||
}
|
||||
}
|
||||
|
||||
if (fields_size > 0)
|
||||
{
|
||||
parser_reverse_class_fields (context_p, fields_size);
|
||||
|
||||
/* Since PARSER_IS_ARROW_FUNCTION and PARSER_CLASS_CONSTRUCTOR bits cannot
|
||||
* be set at the same time, this bit combination triggers class field parsing. */
|
||||
uint16_t function_literal_index = lexer_construct_function_object (context_p, (PARSER_IS_ARROW_FUNCTION
|
||||
| PARSER_CLASS_CONSTRUCTOR));
|
||||
parser_emit_cbc_ext_literal (context_p, CBC_EXT_SET_CLASS_FIELD_INIT, function_literal_index);
|
||||
}
|
||||
} /* parser_parse_class_literal */
|
||||
|
||||
/**
|
||||
@@ -1813,7 +1951,9 @@ parser_parse_unary_expression (parser_context_t *context_p, /**< context */
|
||||
{
|
||||
JERRY_ASSERT (context_p->next_scanner_info_p->type == SCANNER_TYPE_FUNCTION);
|
||||
|
||||
uint32_t arrow_status_flags = (PARSER_IS_FUNCTION | PARSER_IS_ARROW_FUNCTION);
|
||||
uint32_t arrow_status_flags = (PARSER_IS_FUNCTION
|
||||
| PARSER_IS_ARROW_FUNCTION
|
||||
| (context_p->status_flags & PARSER_INSIDE_CLASS_FIELD));
|
||||
|
||||
if (context_p->next_scanner_info_p->u8_arg & SCANNER_FUNCTION_ASYNC)
|
||||
{
|
||||
@@ -2073,7 +2213,10 @@ parser_parse_unary_expression (parser_context_t *context_p, /**< context */
|
||||
|
||||
parser_check_assignment_expr (context_p);
|
||||
|
||||
parser_parse_function_expression (context_p, PARSER_IS_FUNCTION | PARSER_IS_ARROW_FUNCTION);
|
||||
uint32_t arrow_status_flags = (PARSER_IS_FUNCTION
|
||||
| PARSER_IS_ARROW_FUNCTION
|
||||
| (context_p->status_flags & PARSER_INSIDE_CLASS_FIELD));
|
||||
parser_parse_function_expression (context_p, arrow_status_flags);
|
||||
return parser_abort_parsing_after_assignment_expression (context_p);
|
||||
}
|
||||
case LEXER_KEYW_YIELD:
|
||||
@@ -3442,11 +3585,6 @@ parser_parse_object_initializer (parser_context_t *context_p, /**< context */
|
||||
}
|
||||
|
||||
parser_reparse_as_common_identifier (context_p, start_line, start_column);
|
||||
lexer_next_token (context_p);
|
||||
|
||||
JERRY_ASSERT (context_p->token.type == LEXER_RIGHT_BRACE
|
||||
|| context_p->token.type == LEXER_ASSIGN
|
||||
|| context_p->token.type == LEXER_COMMA);
|
||||
|
||||
if (flags & PARSER_PATTERN_ARGUMENTS)
|
||||
{
|
||||
@@ -3462,6 +3600,12 @@ parser_parse_object_initializer (parser_context_t *context_p, /**< context */
|
||||
#endif /* ENABLED (JERRY_MODULE_SYSTEM) */
|
||||
|
||||
parser_emit_cbc_literal_from_token (context_p, CBC_PUSH_LITERAL);
|
||||
|
||||
lexer_next_token (context_p);
|
||||
JERRY_ASSERT (context_p->token.type == LEXER_RIGHT_BRACE
|
||||
|| context_p->token.type == LEXER_ASSIGN
|
||||
|| context_p->token.type == LEXER_COMMA);
|
||||
|
||||
parser_pattern_form_assignment (context_p, flags, push_prop_opcode, prop_index, start_line);
|
||||
}
|
||||
|
||||
|
||||
@@ -69,16 +69,17 @@ typedef enum
|
||||
PARSER_FUNCTION_HAS_REST_PARAM = (1u << 19), /**< function has rest parameter */
|
||||
PARSER_CLASS_CONSTRUCTOR = (1u << 20), /**< a class constructor is parsed
|
||||
* Note: PARSER_ALLOW_SUPER must be present */
|
||||
/* These three status flags must be in this order. See PARSER_SAVED_FLAGS_OFFSET. */
|
||||
/* These four status flags must be in this order. See PARSER_SAVED_FLAGS_OFFSET. */
|
||||
PARSER_ALLOW_SUPER = (1u << 21), /**< allow super property access */
|
||||
PARSER_ALLOW_SUPER_CALL = (1u << 22), /**< allow super constructor call
|
||||
* Note: PARSER_CLASS_CONSTRUCTOR must be present */
|
||||
PARSER_ALLOW_NEW_TARGET = (1u << 23), /**< allow new.target parsing in the current context */
|
||||
PARSER_IS_METHOD = (1u << 24), /**< method is parsed */
|
||||
PARSER_INSIDE_CLASS_FIELD = (1u << 23), /**< a class field is being parsed */
|
||||
PARSER_ALLOW_NEW_TARGET = (1u << 24), /**< allow new.target parsing in the current context */
|
||||
PARSER_IS_METHOD = (1u << 25), /**< method is parsed */
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
#if ENABLED (JERRY_MODULE_SYSTEM)
|
||||
PARSER_MODULE_DEFAULT_CLASS_OR_FUNC = (1u << 25), /**< parsing a function or class default export */
|
||||
PARSER_MODULE_STORE_IDENT = (1u << 26), /**< store identifier of the current export statement */
|
||||
PARSER_MODULE_DEFAULT_CLASS_OR_FUNC = (1u << 26), /**< parsing a function or class default export */
|
||||
PARSER_MODULE_STORE_IDENT = (1u << 27), /**< store identifier of the current export statement */
|
||||
#endif /* ENABLED (JERRY_MODULE_SYSTEM) */
|
||||
PARSER_HAS_LATE_LIT_INIT = (1u << 30), /**< there are identifier or string literals which construction
|
||||
* is postponed after the local parser data is freed */
|
||||
@@ -129,6 +130,20 @@ typedef enum
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
} parser_check_context_type_t;
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
|
||||
/**
|
||||
* Class field bits.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
PARSER_CLASS_FIELD_END = (1u << 0), /**< last class field */
|
||||
PARSER_CLASS_FIELD_NORMAL = (1u << 1), /**< normal (non-computed) class field */
|
||||
PARSER_CLASS_FIELD_INITIALIZED = (1u << 2), /**< class field is initialized */
|
||||
} parser_class_field_type_t;
|
||||
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
/**
|
||||
* Mask for strict mode code
|
||||
*/
|
||||
@@ -704,6 +719,10 @@ void parser_set_continues_to_current_position (parser_context_t *context_p, pars
|
||||
#define parser_emit_cbc_ext_backward_branch(context_p, opcode, offset) \
|
||||
parser_emit_cbc_backward_branch ((context_p), PARSER_TO_EXT_OPCODE (opcode), (offset))
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
void parser_reverse_class_fields (parser_context_t *context_p, size_t fields_size);
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*
|
||||
@@ -725,6 +744,7 @@ bool lexer_check_arrow (parser_context_t *context_p);
|
||||
bool lexer_check_arrow_param (parser_context_t *context_p);
|
||||
bool lexer_check_yield_no_arg (parser_context_t *context_p);
|
||||
bool lexer_consume_generator (parser_context_t *context_p);
|
||||
bool lexer_consume_assign (parser_context_t *context_p);
|
||||
void lexer_update_await_yield (parser_context_t *context_p, uint32_t status_flags);
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
void lexer_parse_string (parser_context_t *context_p, lexer_string_options_t opts);
|
||||
@@ -736,7 +756,7 @@ void lexer_convert_ident_to_cesu8 (uint8_t *destination_p, const uint8_t *source
|
||||
const uint8_t *lexer_convert_literal_to_chars (parser_context_t *context_p, const lexer_lit_location_t *literal_p,
|
||||
uint8_t *local_byte_array_p, lexer_string_options_t opts);
|
||||
void lexer_expect_object_literal_id (parser_context_t *context_p, uint32_t ident_opts);
|
||||
uint16_t scanner_save_literal (parser_context_t *context_p, uint16_t ident_index);
|
||||
lexer_literal_t *lexer_construct_unused_literal (parser_context_t *context_p);
|
||||
void lexer_construct_literal_object (parser_context_t *context_p, const lexer_lit_location_t *lit_location_p,
|
||||
uint8_t literal_type);
|
||||
bool lexer_construct_number_object (parser_context_t *context_p, bool is_expr, bool is_negative_number);
|
||||
@@ -804,6 +824,7 @@ void scanner_get_location (scanner_location_t *location_p, parser_context_t *con
|
||||
void scanner_set_location (parser_context_t *context_p, scanner_location_t *location_p);
|
||||
uint16_t scanner_decode_map_to (parser_scope_stack_t *stack_item_p);
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
uint16_t scanner_save_literal (parser_context_t *context_p, uint16_t ident_index);
|
||||
bool scanner_literal_is_const_reg (parser_context_t *context_p, uint16_t literal_index);
|
||||
bool scanner_literal_is_created (parser_context_t *context_p, uint16_t literal_index);
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
@@ -859,6 +880,7 @@ void parser_module_add_names_to_node (parser_context_t *context_p,
|
||||
ecma_compiled_code_t *parser_parse_function (parser_context_t *context_p, uint32_t status_flags);
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
ecma_compiled_code_t *parser_parse_arrow_function (parser_context_t *context_p, uint32_t status_flags);
|
||||
ecma_compiled_code_t *parser_parse_class_fields (parser_context_t *context_p);
|
||||
void parser_set_function_name (parser_context_t *context_p, uint16_t function_literal_index, uint16_t name_index,
|
||||
uint32_t status_flags);
|
||||
void parser_compiled_code_set_function_name (parser_context_t *context_p, ecma_compiled_code_t *bytecode_p,
|
||||
|
||||
@@ -790,6 +790,78 @@ parser_set_continues_to_current_position (parser_context_t *context_p, /**< cont
|
||||
}
|
||||
} /* parser_set_continues_to_current_position */
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
|
||||
/**
|
||||
* Reverse the field list of a class
|
||||
*/
|
||||
void
|
||||
parser_reverse_class_fields (parser_context_t *context_p, /**< context */
|
||||
size_t fields_size) /**< size of consumed memory */
|
||||
{
|
||||
uint8_t *data_p = (uint8_t *) parser_malloc (context_p, fields_size);
|
||||
uint8_t *data_end_p = data_p + fields_size;
|
||||
uint8_t *current_p = data_p;
|
||||
parser_stack_iterator_t iterator;
|
||||
|
||||
parser_stack_iterator_init (context_p, &iterator);
|
||||
|
||||
do
|
||||
{
|
||||
uint8_t class_field_type = parser_stack_iterator_read_uint8 (&iterator);
|
||||
parser_stack_iterator_skip (&iterator, 1);
|
||||
|
||||
if (class_field_type & PARSER_CLASS_FIELD_INITIALIZED)
|
||||
{
|
||||
parser_stack_iterator_read (&iterator, current_p, sizeof (scanner_range_t));
|
||||
parser_stack_iterator_skip (&iterator, sizeof (scanner_range_t));
|
||||
current_p += sizeof (scanner_range_t);
|
||||
}
|
||||
else if (class_field_type & PARSER_CLASS_FIELD_NORMAL)
|
||||
{
|
||||
parser_stack_iterator_read (&iterator, current_p, sizeof (scanner_location_t));
|
||||
parser_stack_iterator_skip (&iterator, sizeof (scanner_location_t));
|
||||
current_p += sizeof (scanner_location_t);
|
||||
}
|
||||
|
||||
*current_p++ = class_field_type;
|
||||
}
|
||||
while (current_p < data_end_p);
|
||||
|
||||
parser_stack_iterator_init (context_p, &iterator);
|
||||
current_p = data_end_p;
|
||||
context_p->stack_top_uint8 = current_p[-1];
|
||||
|
||||
do
|
||||
{
|
||||
uint8_t class_field_type = current_p[-1];
|
||||
|
||||
if (class_field_type & PARSER_CLASS_FIELD_INITIALIZED)
|
||||
{
|
||||
current_p -= sizeof (scanner_range_t) + 1;
|
||||
parser_stack_iterator_write (&iterator, current_p, sizeof (scanner_range_t) + 1);
|
||||
parser_stack_iterator_skip (&iterator, sizeof (scanner_range_t) + 1);
|
||||
}
|
||||
else if (class_field_type & PARSER_CLASS_FIELD_NORMAL)
|
||||
{
|
||||
current_p -= sizeof (scanner_location_t) + 1;
|
||||
parser_stack_iterator_write (&iterator, current_p, sizeof (scanner_location_t) + 1);
|
||||
parser_stack_iterator_skip (&iterator, sizeof (scanner_location_t) + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
current_p--;
|
||||
parser_stack_iterator_write (&iterator, current_p, 1);
|
||||
parser_stack_iterator_skip (&iterator, 1);
|
||||
}
|
||||
}
|
||||
while (current_p > data_p);
|
||||
|
||||
parser_free (data_p, fields_size);
|
||||
} /* parser_reverse_class_fields */
|
||||
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
#if ENABLED (JERRY_ERROR_MESSAGES)
|
||||
/**
|
||||
* Returns with the string representation of the error
|
||||
@@ -1170,9 +1242,9 @@ parser_error_to_string (parser_error_t error) /**< error code */
|
||||
{
|
||||
return "Class constructor may not be an accessor.";
|
||||
}
|
||||
case PARSER_ERR_CLASS_CONSTRUCTOR_AS_GENERATOR:
|
||||
case PARSER_ERR_INVALID_CLASS_CONSTRUCTOR:
|
||||
{
|
||||
return "Class constructor may not be a generator.";
|
||||
return "Class constructor may not be a generator or async function.";
|
||||
}
|
||||
case PARSER_ERR_CLASS_STATIC_PROTOTYPE:
|
||||
{
|
||||
@@ -1182,6 +1254,10 @@ parser_error_to_string (parser_error_t error) /**< error code */
|
||||
{
|
||||
return "Super is not allowed to be used here.";
|
||||
}
|
||||
case PARSER_ERR_ARGUMENTS_IN_CLASS_FIELD:
|
||||
{
|
||||
return "In class field declarations 'arguments' is not allowed.";
|
||||
}
|
||||
case PARSER_ERR_RIGHT_BRACE_EXPECTED:
|
||||
{
|
||||
return "Expected '}' token.";
|
||||
|
||||
@@ -2578,6 +2578,13 @@ parser_parse_function (parser_context_t *context_p, /**< context */
|
||||
parser_raise_error (context_p, PARSER_ERR_ONE_ARGUMENT_EXPECTED);
|
||||
}
|
||||
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
if ((context_p->status_flags & (PARSER_CLASS_CONSTRUCTOR | PARSER_ALLOW_SUPER_CALL)) == PARSER_CLASS_CONSTRUCTOR)
|
||||
{
|
||||
parser_emit_cbc_ext (context_p, CBC_EXT_RUN_CLASS_FIELD_INIT);
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
#if ENABLED (JERRY_PARSER_DUMP_BYTE_CODE)
|
||||
if (context_p->is_show_opcodes
|
||||
&& (context_p->status_flags & PARSER_HAS_NON_STRICT_ARG))
|
||||
@@ -2712,6 +2719,152 @@ parser_parse_arrow_function (parser_context_t *context_p, /**< context */
|
||||
return compiled_code_p;
|
||||
} /* parser_parse_arrow_function */
|
||||
|
||||
/**
|
||||
* Parse class fields
|
||||
*
|
||||
* @return compiled code
|
||||
*/
|
||||
ecma_compiled_code_t *
|
||||
parser_parse_class_fields (parser_context_t *context_p) /**< context */
|
||||
{
|
||||
parser_saved_context_t saved_context;
|
||||
ecma_compiled_code_t *compiled_code_p;
|
||||
|
||||
JERRY_ASSERT (context_p->token.type == LEXER_RIGHT_BRACE);
|
||||
parser_save_context (context_p, &saved_context);
|
||||
context_p->status_flags |= (PARSER_IS_FUNCTION
|
||||
| PARSER_ALLOW_SUPER
|
||||
| PARSER_INSIDE_CLASS_FIELD
|
||||
| PARSER_ALLOW_NEW_TARGET);
|
||||
|
||||
#if ENABLED (JERRY_PARSER_DUMP_BYTE_CODE)
|
||||
if (context_p->is_show_opcodes)
|
||||
{
|
||||
JERRY_DEBUG_MSG ("\n--- Class fields parsing start ---\n\n");
|
||||
}
|
||||
#endif /* ENABLED (JERRY_PARSER_DUMP_BYTE_CODE) */
|
||||
|
||||
#if ENABLED (JERRY_DEBUGGER)
|
||||
if (JERRY_CONTEXT (debugger_flags) & JERRY_DEBUGGER_CONNECTED)
|
||||
{
|
||||
jerry_debugger_send_parse_function (context_p->token.line, context_p->token.column);
|
||||
}
|
||||
#endif /* ENABLED (JERRY_DEBUGGER) */
|
||||
|
||||
const uint8_t *source_end_p = context_p->source_end_p;
|
||||
bool first_computed_class_field = true;
|
||||
scanner_location_t end_location;
|
||||
scanner_get_location (&end_location, context_p);
|
||||
|
||||
do
|
||||
{
|
||||
uint8_t class_field_type = context_p->stack_top_uint8;
|
||||
parser_stack_pop_uint8 (context_p);
|
||||
|
||||
scanner_range_t range;
|
||||
|
||||
if (class_field_type & PARSER_CLASS_FIELD_INITIALIZED)
|
||||
{
|
||||
parser_stack_pop (context_p, &range, sizeof (scanner_range_t));
|
||||
}
|
||||
else if (class_field_type & PARSER_CLASS_FIELD_NORMAL)
|
||||
{
|
||||
parser_stack_pop (context_p, &range.start_location, sizeof (scanner_location_t));
|
||||
}
|
||||
|
||||
uint16_t literal_index = 0;
|
||||
|
||||
if (class_field_type & PARSER_CLASS_FIELD_NORMAL)
|
||||
{
|
||||
scanner_set_location (context_p, &range.start_location);
|
||||
context_p->source_end_p = source_end_p;
|
||||
scanner_seek (context_p);
|
||||
|
||||
lexer_expect_object_literal_id (context_p, LEXER_OBJ_IDENT_ONLY_IDENTIFIERS);
|
||||
|
||||
literal_index = context_p->lit_object.index;
|
||||
|
||||
if (class_field_type & PARSER_CLASS_FIELD_INITIALIZED)
|
||||
{
|
||||
lexer_next_token (context_p);
|
||||
JERRY_ASSERT (context_p->token.type == LEXER_ASSIGN);
|
||||
}
|
||||
}
|
||||
else if (first_computed_class_field)
|
||||
{
|
||||
parser_emit_cbc (context_p, CBC_PUSH_NUMBER_0);
|
||||
first_computed_class_field = false;
|
||||
}
|
||||
|
||||
if (class_field_type & PARSER_CLASS_FIELD_INITIALIZED)
|
||||
{
|
||||
if (!(class_field_type & PARSER_CLASS_FIELD_NORMAL))
|
||||
{
|
||||
scanner_set_location (context_p, &range.start_location);
|
||||
scanner_seek (context_p);
|
||||
}
|
||||
|
||||
context_p->source_end_p = range.source_end_p;
|
||||
lexer_next_token (context_p);
|
||||
parser_parse_expression (context_p, PARSE_EXPR_NO_COMMA);
|
||||
|
||||
if (context_p->token.type != LEXER_EOS)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_SEMICOLON_EXPECTED);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
parser_emit_cbc (context_p, CBC_PUSH_UNDEFINED);
|
||||
}
|
||||
|
||||
if (class_field_type & PARSER_CLASS_FIELD_NORMAL)
|
||||
{
|
||||
parser_emit_cbc_literal (context_p, CBC_ASSIGN_PROP_THIS_LITERAL, literal_index);
|
||||
}
|
||||
else
|
||||
{
|
||||
parser_flush_cbc (context_p);
|
||||
|
||||
/* The next opcode pushes two more temporary values onto the stack */
|
||||
if (context_p->stack_depth + 1 > context_p->stack_limit)
|
||||
{
|
||||
context_p->stack_limit = (uint16_t) (context_p->stack_depth + 1);
|
||||
if (context_p->stack_limit > PARSER_MAXIMUM_STACK_LIMIT)
|
||||
{
|
||||
parser_raise_error (context_p, PARSER_ERR_STACK_LIMIT_REACHED);
|
||||
}
|
||||
}
|
||||
|
||||
parser_emit_cbc_ext (context_p, CBC_EXT_SET_NEXT_COMPUTED_FIELD);
|
||||
}
|
||||
}
|
||||
while (context_p->stack_top_uint8 != PARSER_CLASS_FIELD_END);
|
||||
|
||||
if (!first_computed_class_field)
|
||||
{
|
||||
parser_emit_cbc (context_p, CBC_POP);
|
||||
}
|
||||
|
||||
parser_stack_pop_uint8 (context_p);
|
||||
parser_flush_cbc (context_p);
|
||||
context_p->source_end_p = source_end_p;
|
||||
scanner_set_location (context_p, &end_location);
|
||||
|
||||
compiled_code_p = parser_post_processing (context_p);
|
||||
|
||||
#if ENABLED (JERRY_PARSER_DUMP_BYTE_CODE)
|
||||
if (context_p->is_show_opcodes)
|
||||
{
|
||||
JERRY_DEBUG_MSG ("\n--- Class fields parsing end ---\n\n");
|
||||
}
|
||||
#endif /* ENABLED (JERRY_PARSER_DUMP_BYTE_CODE) */
|
||||
|
||||
parser_restore_context (context_p, &saved_context);
|
||||
|
||||
return compiled_code_p;
|
||||
} /* parser_parse_class_fields */
|
||||
|
||||
/**
|
||||
* Check whether the last emitted cbc opcode was an anonymous function declaration
|
||||
*
|
||||
|
||||
@@ -142,9 +142,10 @@ typedef enum
|
||||
|
||||
PARSER_ERR_MULTIPLE_CLASS_CONSTRUCTORS, /**< multiple class constructor */
|
||||
PARSER_ERR_CLASS_CONSTRUCTOR_AS_ACCESSOR, /**< class constructor cannot be an accessor */
|
||||
PARSER_ERR_CLASS_CONSTRUCTOR_AS_GENERATOR, /**< class constructor cannot be a generator */
|
||||
PARSER_ERR_INVALID_CLASS_CONSTRUCTOR, /**< class constructor cannot be a generator or async function */
|
||||
PARSER_ERR_CLASS_STATIC_PROTOTYPE, /**< static method name 'prototype' is not allowed */
|
||||
PARSER_ERR_UNEXPECTED_SUPER_KEYWORD, /**< unexpected super keyword */
|
||||
PARSER_ERR_ARGUMENTS_IN_CLASS_FIELD, /**< arguments is not allowed in class fields */
|
||||
|
||||
PARSER_ERR_RIGHT_BRACE_EXPECTED, /**< right brace expected */
|
||||
PARSER_ERR_OF_EXPECTED, /**< of keyword expected */
|
||||
|
||||
@@ -45,7 +45,8 @@ typedef enum
|
||||
SCAN_MODE_CONTINUE_FUNCTION_ARGUMENTS, /**< continue scanning function arguments */
|
||||
SCAN_MODE_BINDING, /**< array or object binding */
|
||||
SCAN_MODE_CLASS_DECLARATION, /**< scanning class declaration */
|
||||
SCAN_MODE_CLASS_METHOD, /**< scanning class method */
|
||||
SCAN_MODE_CLASS_BODY, /**< scanning class body */
|
||||
SCAN_MODE_CLASS_BODY_NO_SCAN, /**< scanning class body without calling lexer_scan_identifier */
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
} scan_modes_t;
|
||||
|
||||
@@ -59,7 +60,7 @@ typedef enum
|
||||
SCAN_STACK_BLOCK_STATEMENT, /**< block statement group */
|
||||
SCAN_STACK_FUNCTION_STATEMENT, /**< function statement */
|
||||
SCAN_STACK_FUNCTION_EXPRESSION, /**< function expression */
|
||||
SCAN_STACK_FUNCTION_PROPERTY, /**< function expression in an object literal or class */
|
||||
SCAN_STACK_FUNCTION_PROPERTY, /**< function expression in an object literal */
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
SCAN_STACK_FUNCTION_ARROW, /**< arrow function expression */
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
@@ -113,6 +114,7 @@ typedef enum
|
||||
SCAN_STACK_CLASS_STATEMENT, /**< class statement */
|
||||
SCAN_STACK_CLASS_EXPRESSION, /**< class expression */
|
||||
SCAN_STACK_CLASS_EXTENDS, /**< class extends expression */
|
||||
SCAN_STACK_CLASS_FIELD_INITIALIZER, /**< class field initializer */
|
||||
SCAN_STACK_FUNCTION_PARAMETERS, /**< function parameter initializer */
|
||||
SCAN_STACK_FOR_START_PATTERN, /**< possible assignment pattern for "for" iterator */
|
||||
SCAN_STACK_USE_ASYNC, /**< an "async" identifier is used */
|
||||
@@ -387,6 +389,7 @@ void scanner_detect_eval_call (parser_context_t *context_p, scanner_context_t *s
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
void scanner_push_class_declaration (parser_context_t *context_p, scanner_context_t *scanner_context_p,
|
||||
uint8_t stack_mode);
|
||||
void scanner_push_class_field_initializer (parser_context_t *context_p, scanner_context_t *scanner_context_p);
|
||||
void scanner_push_destructuring_pattern (parser_context_t *context_p, scanner_context_t *scanner_context_p,
|
||||
uint8_t binding_type, bool is_nested);
|
||||
void scanner_pop_binding_list (scanner_context_t *scanner_context_p);
|
||||
|
||||
@@ -1494,6 +1494,21 @@ scanner_push_class_declaration (parser_context_t *context_p, /**< context */
|
||||
lexer_next_token (context_p);
|
||||
} /* scanner_push_class_declaration */
|
||||
|
||||
/**
|
||||
* Push the start of a class field initializer.
|
||||
*/
|
||||
void
|
||||
scanner_push_class_field_initializer (parser_context_t *context_p, /**< context */
|
||||
scanner_context_t *scanner_context_p) /* scanner context */
|
||||
{
|
||||
scanner_source_start_t source_start;
|
||||
source_start.source_p = context_p->source_p;
|
||||
|
||||
parser_stack_push (context_p, &source_start, sizeof (scanner_source_start_t));
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_CLASS_FIELD_INITIALIZER);
|
||||
scanner_context_p->mode = SCAN_MODE_PRIMARY_EXPRESSION;
|
||||
} /* scanner_push_class_field_initializer */
|
||||
|
||||
/**
|
||||
* Push the values required for destructuring assignment or binding parsing.
|
||||
*/
|
||||
@@ -1658,6 +1673,7 @@ scanner_cleanup (parser_context_t *context_p) /**< context */
|
||||
case SCANNER_TYPE_CASE:
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
case SCANNER_TYPE_INITIALIZER:
|
||||
case SCANNER_TYPE_CLASS_FIELD_INITIALIZER_END:
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
{
|
||||
size = sizeof (scanner_location_info_t);
|
||||
|
||||
@@ -430,6 +430,11 @@ scanner_scan_primary_expression_end (parser_context_t *context_p, /**< context *
|
||||
{
|
||||
break;
|
||||
}
|
||||
case SCAN_STACK_CLASS_FIELD_INITIALIZER:
|
||||
{
|
||||
scanner_raise_error (context_p);
|
||||
break;
|
||||
}
|
||||
case SCAN_STACK_FUNCTION_PARAMETERS:
|
||||
{
|
||||
scanner_context_p->mode = SCAN_MODE_CONTINUE_FUNCTION_ARGUMENTS;
|
||||
@@ -962,7 +967,7 @@ scanner_scan_primary_expression_end (parser_context_t *context_p, /**< context *
|
||||
break;
|
||||
}
|
||||
|
||||
lexer_next_token (context_p);
|
||||
lexer_scan_identifier (context_p);
|
||||
|
||||
parser_stack_pop_uint8 (context_p);
|
||||
stack_top = (scan_stack_modes_t) context_p->stack_top_uint8;
|
||||
@@ -970,11 +975,33 @@ scanner_scan_primary_expression_end (parser_context_t *context_p, /**< context *
|
||||
if (stack_top == SCAN_STACK_FUNCTION_PROPERTY)
|
||||
{
|
||||
scanner_push_literal_pool (context_p, scanner_context_p, SCANNER_LITERAL_POOL_FUNCTION);
|
||||
|
||||
scanner_context_p->mode = SCAN_MODE_FUNCTION_ARGUMENTS;
|
||||
return SCAN_KEEP_TOKEN;
|
||||
}
|
||||
|
||||
if (stack_top == SCAN_STACK_EXPLICIT_CLASS_CONSTRUCTOR
|
||||
|| stack_top == SCAN_STACK_IMPLICIT_CLASS_CONSTRUCTOR)
|
||||
{
|
||||
if (context_p->token.type == LEXER_LEFT_PAREN)
|
||||
{
|
||||
scanner_push_literal_pool (context_p, scanner_context_p, SCANNER_LITERAL_POOL_FUNCTION);
|
||||
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_FUNCTION_PROPERTY);
|
||||
scanner_context_p->mode = SCAN_MODE_FUNCTION_ARGUMENTS;
|
||||
return SCAN_KEEP_TOKEN;
|
||||
}
|
||||
|
||||
if (context_p->token.type == LEXER_ASSIGN)
|
||||
{
|
||||
scanner_push_class_field_initializer (context_p, scanner_context_p);
|
||||
return SCAN_NEXT_TOKEN;
|
||||
}
|
||||
|
||||
scanner_context_p->mode = (context_p->token.type != LEXER_SEMICOLON ? SCAN_MODE_CLASS_BODY_NO_SCAN
|
||||
: SCAN_MODE_CLASS_BODY);
|
||||
return SCAN_KEEP_TOKEN;
|
||||
}
|
||||
|
||||
JERRY_ASSERT (stack_top == SCAN_STACK_OBJECT_LITERAL
|
||||
|| stack_top == SCAN_STACK_OBJECT_LITERAL_WITH_SUPER);
|
||||
|
||||
@@ -1073,11 +1100,87 @@ scanner_scan_primary_expression_end (parser_context_t *context_p, /**< context *
|
||||
break;
|
||||
}
|
||||
|
||||
scanner_context_p->mode = SCAN_MODE_CLASS_METHOD;
|
||||
scanner_context_p->mode = SCAN_MODE_CLASS_BODY;
|
||||
parser_stack_pop_uint8 (context_p);
|
||||
|
||||
return SCAN_KEEP_TOKEN;
|
||||
}
|
||||
case SCAN_STACK_CLASS_FIELD_INITIALIZER:
|
||||
{
|
||||
scanner_source_start_t source_start;
|
||||
|
||||
parser_stack_pop_uint8 (context_p);
|
||||
parser_stack_pop (context_p, &source_start, sizeof (scanner_source_start_t));
|
||||
|
||||
const uint8_t *source_p = NULL;
|
||||
|
||||
scanner_context_p->mode = SCAN_MODE_CLASS_BODY_NO_SCAN;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case LEXER_SEMICOLON:
|
||||
{
|
||||
source_p = context_p->source_p - 1;
|
||||
scanner_context_p->mode = SCAN_MODE_CLASS_BODY;
|
||||
break;
|
||||
}
|
||||
case LEXER_RIGHT_BRACE:
|
||||
{
|
||||
source_p = context_p->source_p - 1;
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (!(context_p->token.flags & LEXER_WAS_NEWLINE))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if (type == LEXER_LEFT_SQUARE)
|
||||
{
|
||||
source_p = context_p->source_p - 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (type == LEXER_LITERAL)
|
||||
{
|
||||
if (context_p->token.lit_location.type == LEXER_IDENT_LITERAL
|
||||
|| context_p->token.lit_location.type == LEXER_NUMBER_LITERAL)
|
||||
{
|
||||
source_p = context_p->token.lit_location.char_p;
|
||||
}
|
||||
else if (context_p->token.lit_location.type == LEXER_STRING_LITERAL)
|
||||
{
|
||||
source_p = context_p->token.lit_location.char_p - 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (type == context_p->token.keyword_type && type != LEXER_EOS)
|
||||
{
|
||||
/* Convert keyword to literal. */
|
||||
source_p = context_p->token.lit_location.char_p;
|
||||
context_p->token.type = LEXER_LITERAL;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (JERRY_UNLIKELY (source_p == NULL))
|
||||
{
|
||||
scanner_raise_error (context_p);
|
||||
}
|
||||
|
||||
scanner_location_info_t *location_info_p;
|
||||
location_info_p = (scanner_location_info_t *) scanner_insert_info (context_p,
|
||||
source_start.source_p,
|
||||
sizeof (scanner_location_info_t));
|
||||
location_info_p->info.type = SCANNER_TYPE_CLASS_FIELD_INITIALIZER_END;
|
||||
location_info_p->location.source_p = source_p;
|
||||
location_info_p->location.line = context_p->token.line;
|
||||
location_info_p->location.column = context_p->token.column;
|
||||
return SCAN_KEEP_TOKEN;
|
||||
}
|
||||
case SCAN_STACK_FUNCTION_PARAMETERS:
|
||||
{
|
||||
parser_stack_pop_uint8 (context_p);
|
||||
@@ -2027,7 +2130,7 @@ scanner_scan_statement_end (parser_context_t *context_p, /**< context */
|
||||
if (context_p->stack_top_uint8 == SCAN_STACK_EXPLICIT_CLASS_CONSTRUCTOR
|
||||
|| context_p->stack_top_uint8 == SCAN_STACK_IMPLICIT_CLASS_CONSTRUCTOR)
|
||||
{
|
||||
scanner_context_p->mode = SCAN_MODE_CLASS_METHOD;
|
||||
scanner_context_p->mode = SCAN_MODE_CLASS_BODY;
|
||||
return SCAN_KEEP_TOKEN;
|
||||
}
|
||||
|
||||
@@ -2337,6 +2440,9 @@ scanner_scan_all (parser_context_t *context_p, /**< context */
|
||||
|
||||
/* This assignment must be here because of Apple compilers. */
|
||||
context_p->u.scanner_context_p = &scanner_context;
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
context_p->global_status_flags |= ECMA_PARSE_INTERNAL_PRE_SCANNING;
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
parser_stack_init (context_p);
|
||||
|
||||
@@ -2437,18 +2543,20 @@ scanner_scan_all (parser_context_t *context_p, /**< context */
|
||||
scanner_raise_error (context_p);
|
||||
}
|
||||
|
||||
scanner_context.mode = SCAN_MODE_CLASS_METHOD;
|
||||
scanner_context.mode = SCAN_MODE_CLASS_BODY;
|
||||
/* FALLTHRU */
|
||||
}
|
||||
case SCAN_MODE_CLASS_METHOD:
|
||||
case SCAN_MODE_CLASS_BODY:
|
||||
{
|
||||
lexer_skip_empty_statements (context_p);
|
||||
lexer_scan_identifier (context_p);
|
||||
/* FALLTHRU */
|
||||
}
|
||||
case SCAN_MODE_CLASS_BODY_NO_SCAN:
|
||||
{
|
||||
JERRY_ASSERT (stack_top == SCAN_STACK_IMPLICIT_CLASS_CONSTRUCTOR
|
||||
|| stack_top == SCAN_STACK_EXPLICIT_CLASS_CONSTRUCTOR);
|
||||
|
||||
lexer_skip_empty_statements (context_p);
|
||||
|
||||
lexer_scan_identifier (context_p);
|
||||
|
||||
if (context_p->token.type == LEXER_RIGHT_BRACE)
|
||||
{
|
||||
scanner_source_start_t source_start;
|
||||
@@ -2476,6 +2584,8 @@ scanner_scan_all (parser_context_t *context_p, /**< context */
|
||||
break;
|
||||
}
|
||||
|
||||
bool identifier_found = false;
|
||||
|
||||
if (context_p->token.type == LEXER_LITERAL
|
||||
&& LEXER_IS_IDENT_OR_STRING (context_p->token.lit_location.type)
|
||||
&& lexer_compare_literal_to_string (context_p, "constructor", 11))
|
||||
@@ -2491,13 +2601,12 @@ scanner_scan_all (parser_context_t *context_p, /**< context */
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_EXPLICIT_CLASS_CONSTRUCTOR);
|
||||
}
|
||||
}
|
||||
|
||||
if (lexer_token_is_identifier (context_p, "static", 6))
|
||||
else if (lexer_token_is_identifier (context_p, "static", 6))
|
||||
{
|
||||
lexer_scan_identifier (context_p);
|
||||
identifier_found = true;
|
||||
}
|
||||
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_FUNCTION_PROPERTY);
|
||||
scanner_context.mode = SCAN_MODE_FUNCTION_ARGUMENTS;
|
||||
|
||||
uint16_t literal_pool_flags = SCANNER_LITERAL_POOL_FUNCTION;
|
||||
@@ -2506,9 +2615,11 @@ scanner_scan_all (parser_context_t *context_p, /**< context */
|
||||
|| lexer_token_is_identifier (context_p, "set", 3))
|
||||
{
|
||||
lexer_scan_identifier (context_p);
|
||||
identifier_found = true;
|
||||
|
||||
if (context_p->token.type == LEXER_LEFT_PAREN)
|
||||
{
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_FUNCTION_PROPERTY);
|
||||
scanner_push_literal_pool (context_p, &scanner_context, SCANNER_LITERAL_POOL_FUNCTION);
|
||||
continue;
|
||||
}
|
||||
@@ -2516,19 +2627,24 @@ scanner_scan_all (parser_context_t *context_p, /**< context */
|
||||
else if (lexer_token_is_identifier (context_p, "async", 5))
|
||||
{
|
||||
lexer_scan_identifier (context_p);
|
||||
identifier_found = true;
|
||||
|
||||
if (context_p->token.type == LEXER_LEFT_PAREN)
|
||||
if (!(context_p->token.flags & LEXER_WAS_NEWLINE))
|
||||
{
|
||||
scanner_push_literal_pool (context_p, &scanner_context, SCANNER_LITERAL_POOL_FUNCTION);
|
||||
continue;
|
||||
}
|
||||
if (context_p->token.type == LEXER_LEFT_PAREN)
|
||||
{
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_FUNCTION_PROPERTY);
|
||||
scanner_push_literal_pool (context_p, &scanner_context, SCANNER_LITERAL_POOL_FUNCTION);
|
||||
continue;
|
||||
}
|
||||
|
||||
literal_pool_flags |= SCANNER_LITERAL_POOL_ASYNC;
|
||||
literal_pool_flags |= SCANNER_LITERAL_POOL_ASYNC;
|
||||
|
||||
if (context_p->token.type == LEXER_MULTIPLY)
|
||||
{
|
||||
lexer_scan_identifier (context_p);
|
||||
literal_pool_flags |= SCANNER_LITERAL_POOL_GENERATOR;
|
||||
if (context_p->token.type == LEXER_MULTIPLY)
|
||||
{
|
||||
lexer_scan_identifier (context_p);
|
||||
literal_pool_flags |= SCANNER_LITERAL_POOL_GENERATOR;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (context_p->token.type == LEXER_MULTIPLY)
|
||||
@@ -2539,23 +2655,63 @@ scanner_scan_all (parser_context_t *context_p, /**< context */
|
||||
|
||||
if (context_p->token.type == LEXER_LEFT_SQUARE)
|
||||
{
|
||||
if (literal_pool_flags != SCANNER_LITERAL_POOL_FUNCTION)
|
||||
{
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_FUNCTION_PROPERTY);
|
||||
}
|
||||
|
||||
parser_stack_push_uint8 (context_p, SCANNER_FROM_LITERAL_POOL_TO_COMPUTED (literal_pool_flags));
|
||||
scanner_context.mode = SCAN_MODE_PRIMARY_EXPRESSION;
|
||||
break;
|
||||
}
|
||||
|
||||
if (context_p->token.type != LEXER_LITERAL)
|
||||
if (context_p->token.type == LEXER_LITERAL)
|
||||
{
|
||||
lexer_scan_identifier (context_p);
|
||||
identifier_found = true;
|
||||
}
|
||||
|
||||
if (!identifier_found)
|
||||
{
|
||||
scanner_raise_error (context_p);
|
||||
}
|
||||
|
||||
if (literal_pool_flags & SCANNER_LITERAL_POOL_GENERATOR)
|
||||
if (context_p->token.type == LEXER_LEFT_PAREN)
|
||||
{
|
||||
context_p->status_flags |= PARSER_IS_GENERATOR_FUNCTION;
|
||||
if (literal_pool_flags & SCANNER_LITERAL_POOL_GENERATOR)
|
||||
{
|
||||
context_p->status_flags |= PARSER_IS_GENERATOR_FUNCTION;
|
||||
}
|
||||
|
||||
parser_stack_push_uint8 (context_p, SCAN_STACK_FUNCTION_PROPERTY);
|
||||
scanner_push_literal_pool (context_p, &scanner_context, literal_pool_flags);
|
||||
continue;
|
||||
}
|
||||
|
||||
scanner_push_literal_pool (context_p, &scanner_context, literal_pool_flags);
|
||||
lexer_next_token (context_p);
|
||||
if (literal_pool_flags != SCANNER_LITERAL_POOL_FUNCTION)
|
||||
{
|
||||
scanner_raise_error (context_p);
|
||||
}
|
||||
|
||||
if (context_p->token.type == LEXER_ASSIGN)
|
||||
{
|
||||
scanner_push_class_field_initializer (context_p, &scanner_context);
|
||||
break;
|
||||
}
|
||||
|
||||
if (context_p->token.type == LEXER_SEMICOLON)
|
||||
{
|
||||
scanner_context.mode = SCAN_MODE_CLASS_BODY;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (context_p->token.type != LEXER_RIGHT_BRACE
|
||||
&& !(context_p->token.flags & LEXER_WAS_NEWLINE))
|
||||
{
|
||||
scanner_raise_error (context_p);
|
||||
}
|
||||
|
||||
scanner_context.mode = SCAN_MODE_CLASS_BODY_NO_SCAN;
|
||||
continue;
|
||||
}
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
@@ -3299,6 +3455,9 @@ scan_completed:
|
||||
PARSER_TRY_END
|
||||
|
||||
context_p->status_flags = scanner_context.context_status_flags;
|
||||
#if ENABLED (JERRY_ESNEXT)
|
||||
context_p->global_status_flags &= (uint32_t) ~ECMA_PARSE_INTERNAL_PRE_SCANNING;
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
scanner_reverse_info_list (context_p);
|
||||
|
||||
#if ENABLED (JERRY_PARSER_DUMP_BYTE_CODE)
|
||||
@@ -3549,6 +3708,12 @@ scan_completed:
|
||||
print_location = false;
|
||||
break;
|
||||
}
|
||||
case SCANNER_TYPE_CLASS_FIELD_INITIALIZER_END:
|
||||
{
|
||||
name_p = "SCANNER_TYPE_CLASS_FIELD_INITIALIZER_END";
|
||||
print_location = true;
|
||||
break;
|
||||
}
|
||||
case SCANNER_TYPE_LET_EXPRESSION:
|
||||
{
|
||||
JERRY_DEBUG_MSG (" LET_EXPRESSION: source:%d\n",
|
||||
|
||||
@@ -48,6 +48,7 @@ typedef enum
|
||||
SCANNER_TYPE_INITIALIZER, /**< destructuring binding or assignment pattern with initializer */
|
||||
SCANNER_TYPE_FOR_PATTERN, /**< assignment pattern for for-in or for-of interators */
|
||||
SCANNER_TYPE_CLASS_CONSTRUCTOR, /**< class constructor */
|
||||
SCANNER_TYPE_CLASS_FIELD_INITIALIZER_END, /**< class field initializer end */
|
||||
SCANNER_TYPE_LET_EXPRESSION, /**< let expression */
|
||||
SCANNER_TYPE_ERR_REDECLARED, /**< syntax error: a variable is redeclared */
|
||||
SCANNER_TYPE_ERR_ASYNC_FUNCTION, /**< an invalid async function follows */
|
||||
@@ -65,6 +66,15 @@ typedef struct
|
||||
parser_line_counter_t column; /**< token start column */
|
||||
} scanner_location_t;
|
||||
|
||||
/**
|
||||
* Source code range with its start and end position.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
const uint8_t *source_end_p; /**< end position */
|
||||
scanner_location_t start_location; /**< start location */
|
||||
} scanner_range_t;
|
||||
|
||||
/**
|
||||
* Scanner info blocks which provides information for the parser.
|
||||
*/
|
||||
|
||||
+119
-10
@@ -959,6 +959,105 @@ opfunc_async_create_and_await (vm_frame_ctx_t *frame_ctx_p, /**< frame context *
|
||||
return result;
|
||||
} /* opfunc_async_create_and_await */
|
||||
|
||||
/**
|
||||
* Initialize implicit class fields.
|
||||
*
|
||||
* @return ECMA_VALUE_ERROR - initialization fails
|
||||
* ECMA_VALUE_UNDEFINED - otherwise
|
||||
*/
|
||||
ecma_value_t
|
||||
ecma_op_init_class_fields (ecma_value_t function_object, /**< the function itself */
|
||||
ecma_value_t this_val) /**< this_arg of the function */
|
||||
{
|
||||
JERRY_ASSERT (ecma_is_value_object (function_object));
|
||||
JERRY_ASSERT (ecma_is_value_object (this_val));
|
||||
|
||||
ecma_string_t *name_p = ecma_get_magic_string (LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_INIT);
|
||||
ecma_object_t *function_object_p = ecma_get_object_from_value (function_object);
|
||||
|
||||
ecma_property_t *property_p = ecma_find_named_property (function_object_p, name_p);
|
||||
|
||||
if (property_p == NULL)
|
||||
{
|
||||
return ECMA_VALUE_UNDEFINED;
|
||||
}
|
||||
|
||||
ecma_property_value_t *property_value_p = ECMA_PROPERTY_VALUE_PTR (property_p);
|
||||
ecma_value_t *computed_class_fields_p = NULL;
|
||||
|
||||
name_p = ecma_get_magic_string (LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_COMPUTED);
|
||||
ecma_property_t *class_field_property_p = ecma_find_named_property (function_object_p, name_p);
|
||||
|
||||
if (class_field_property_p != NULL)
|
||||
{
|
||||
ecma_property_value_t *class_field_property_value_p = ECMA_PROPERTY_VALUE_PTR (class_field_property_p);
|
||||
computed_class_fields_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_value_t, class_field_property_value_p->value);
|
||||
}
|
||||
|
||||
JERRY_ASSERT (ecma_op_is_callable (property_value_p->value));
|
||||
|
||||
ecma_extended_object_t *ext_function_p;
|
||||
ext_function_p = (ecma_extended_object_t *) ecma_get_object_from_value (property_value_p->value);
|
||||
|
||||
ecma_object_t *scope_p = ECMA_GET_NON_NULL_POINTER_FROM_POINTER_TAG (ecma_object_t,
|
||||
ext_function_p->u.function.scope_cp);
|
||||
const ecma_compiled_code_t *bytecode_data_p = ecma_op_function_get_compiled_code (ext_function_p);
|
||||
|
||||
ecma_value_t *old_computed_class_fields_p = JERRY_CONTEXT (computed_class_fields_p);
|
||||
JERRY_CONTEXT (computed_class_fields_p) = computed_class_fields_p;
|
||||
|
||||
ecma_value_t result = vm_run (bytecode_data_p, this_val, scope_p, NULL, 0);
|
||||
|
||||
JERRY_CONTEXT (computed_class_fields_p) = old_computed_class_fields_p;
|
||||
|
||||
JERRY_ASSERT (ECMA_IS_VALUE_ERROR (result) || result == ECMA_VALUE_UNDEFINED);
|
||||
return result;
|
||||
} /* ecma_op_init_class_fields */
|
||||
|
||||
ecma_value_t
|
||||
ecma_op_add_computed_field (ecma_value_t class_object, /**< class object */
|
||||
ecma_value_t name) /**< name of the property */
|
||||
{
|
||||
ecma_string_t *prop_name_p = ecma_op_to_property_key (name);
|
||||
|
||||
if (JERRY_UNLIKELY (prop_name_p == NULL))
|
||||
{
|
||||
return ECMA_VALUE_ERROR;
|
||||
}
|
||||
|
||||
if (ecma_prop_name_is_symbol (prop_name_p))
|
||||
{
|
||||
name = ecma_make_symbol_value (prop_name_p);
|
||||
}
|
||||
else
|
||||
{
|
||||
name = ecma_make_string_value (prop_name_p);
|
||||
}
|
||||
|
||||
ecma_string_t *name_p = ecma_get_magic_string (LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_COMPUTED);
|
||||
ecma_object_t *class_object_p = ecma_get_object_from_value (class_object);
|
||||
|
||||
ecma_property_t *property_p = ecma_find_named_property (class_object_p, name_p);
|
||||
ecma_value_t *compact_collection_p;
|
||||
ecma_property_value_t *property_value_p;
|
||||
|
||||
if (property_p == NULL)
|
||||
{
|
||||
property_value_p = ecma_create_named_data_property (class_object_p, name_p, ECMA_PROPERTY_FIXED, &property_p);
|
||||
ECMA_CONVERT_DATA_PROPERTY_TO_INTERNAL_PROPERTY (property_p);
|
||||
compact_collection_p = ecma_new_compact_collection ();
|
||||
}
|
||||
else
|
||||
{
|
||||
property_value_p = ECMA_PROPERTY_VALUE_PTR (property_p);
|
||||
compact_collection_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_value_t, property_value_p->value);
|
||||
}
|
||||
|
||||
compact_collection_p = ecma_compact_collection_push_back (compact_collection_p, name);
|
||||
ECMA_SET_INTERNAL_VALUE_POINTER (property_value_p->value, compact_collection_p);
|
||||
return ECMA_VALUE_UNDEFINED;
|
||||
} /* ecma_op_add_computed_field */
|
||||
|
||||
/**
|
||||
* Implicit class constructor handler when the classHeritage is not present.
|
||||
*
|
||||
@@ -973,14 +1072,14 @@ ecma_op_implicit_constructor_handler_cb (const ecma_value_t function_obj, /**< t
|
||||
const ecma_value_t args_p[], /**< argument list */
|
||||
const uint32_t args_count) /**< argument number */
|
||||
{
|
||||
JERRY_UNUSED_4 (function_obj, this_val, args_p, args_count);
|
||||
JERRY_UNUSED_2 (args_p, args_count);
|
||||
|
||||
if (JERRY_CONTEXT (current_new_target) == NULL)
|
||||
{
|
||||
return ecma_raise_type_error (ECMA_ERR_MSG ("Class constructor cannot be invoked without 'new'."));
|
||||
}
|
||||
|
||||
return ECMA_VALUE_UNDEFINED;
|
||||
return ecma_op_init_class_fields (function_obj, this_val);
|
||||
} /* ecma_op_implicit_constructor_handler_cb */
|
||||
|
||||
/**
|
||||
@@ -997,7 +1096,7 @@ ecma_op_implicit_constructor_handler_heritage_cb (const ecma_value_t function_ob
|
||||
const ecma_value_t args_p[], /**< argument list */
|
||||
const uint32_t args_count) /**< argument number */
|
||||
{
|
||||
JERRY_UNUSED_4 (function_obj, this_val, args_p, args_count);
|
||||
JERRY_UNUSED (this_val);
|
||||
|
||||
if (JERRY_CONTEXT (current_new_target) == NULL)
|
||||
{
|
||||
@@ -1028,10 +1127,21 @@ ecma_op_implicit_constructor_handler_heritage_cb (const ecma_value_t function_ob
|
||||
ecma_free_value (result);
|
||||
result = ECMA_VALUE_ERROR;
|
||||
}
|
||||
else if (ecma_is_value_object (proto_value))
|
||||
else
|
||||
{
|
||||
ECMA_SET_POINTER (ecma_get_object_from_value (result)->u2.prototype_cp,
|
||||
ecma_get_object_from_value (proto_value));
|
||||
if (ecma_is_value_object (proto_value))
|
||||
{
|
||||
ECMA_SET_POINTER (ecma_get_object_from_value (result)->u2.prototype_cp,
|
||||
ecma_get_object_from_value (proto_value));
|
||||
}
|
||||
|
||||
ecma_value_t fields_value = ecma_op_init_class_fields (function_obj, result);
|
||||
|
||||
if (ECMA_IS_VALUE_ERROR (fields_value))
|
||||
{
|
||||
ecma_free_value (result);
|
||||
result = ECMA_VALUE_ERROR;
|
||||
}
|
||||
}
|
||||
ecma_free_value (proto_value);
|
||||
}
|
||||
@@ -1302,10 +1412,9 @@ opfunc_set_class_attributes (ecma_object_t *obj_p, /**< object */
|
||||
}
|
||||
else
|
||||
{
|
||||
JERRY_ASSERT (ECMA_PROPERTY_GET_TYPE (property) == ECMA_PROPERTY_TYPE_SPECIAL);
|
||||
|
||||
JERRY_ASSERT (property == ECMA_PROPERTY_TYPE_HASHMAP
|
||||
|| property == ECMA_PROPERTY_TYPE_DELETED);
|
||||
JERRY_ASSERT (ECMA_PROPERTY_GET_TYPE (property) == ECMA_PROPERTY_TYPE_SPECIAL
|
||||
|| (ECMA_PROPERTY_GET_TYPE (property) == ECMA_PROPERTY_TYPE_INTERNAL
|
||||
&& property_pair_p->names_cp[index] == LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_COMPUTED));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -146,6 +146,12 @@ opfunc_async_generator_yield (ecma_extended_object_t *async_generator_object_p,
|
||||
ecma_value_t
|
||||
opfunc_async_create_and_await (vm_frame_ctx_t *frame_ctx_p, ecma_value_t value, uint16_t extra_flags);
|
||||
|
||||
ecma_value_t
|
||||
ecma_op_init_class_fields (ecma_value_t function_object, ecma_value_t this_val);
|
||||
|
||||
ecma_value_t
|
||||
ecma_op_add_computed_field (ecma_value_t class_object, ecma_value_t name);
|
||||
|
||||
ecma_value_t
|
||||
opfunc_create_implicit_class_constructor (uint8_t opcode);
|
||||
|
||||
|
||||
@@ -610,6 +610,18 @@ vm_super_call (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
||||
ecma_collection_destroy (collection_p);
|
||||
}
|
||||
|
||||
if (ecma_is_value_object (completion_value))
|
||||
{
|
||||
ecma_value_t current_function = ecma_make_object_value (JERRY_CONTEXT (current_function_obj_p));
|
||||
ecma_value_t fields_value = ecma_op_init_class_fields (current_function, completion_value);
|
||||
|
||||
if (ECMA_IS_VALUE_ERROR (fields_value))
|
||||
{
|
||||
ecma_free_value (completion_value);
|
||||
completion_value = ECMA_VALUE_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
ecma_free_value (func_value);
|
||||
|
||||
if (JERRY_UNLIKELY (ECMA_IS_VALUE_ERROR (completion_value)))
|
||||
@@ -1787,6 +1799,16 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
||||
}
|
||||
goto free_left_value;
|
||||
}
|
||||
case VM_OC_ADD_COMPUTED_FIELD:
|
||||
{
|
||||
result = ecma_op_add_computed_field (stack_top_p[-2], left_value);
|
||||
|
||||
if (ECMA_IS_VALUE_ERROR (result))
|
||||
{
|
||||
goto error;
|
||||
}
|
||||
goto free_left_value;
|
||||
}
|
||||
case VM_OC_COPY_DATA_PROPERTIES:
|
||||
{
|
||||
result = *(--stack_top_p);
|
||||
@@ -1991,6 +2013,56 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */
|
||||
opfunc_finalize_class (frame_ctx_p, &stack_top_p, left_value);
|
||||
goto free_left_value;
|
||||
}
|
||||
case VM_OC_SET_CLASS_FIELD_INIT:
|
||||
{
|
||||
ecma_string_t *property_name_p = ecma_get_magic_string (LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_INIT);
|
||||
ecma_object_t *object_p = ecma_get_object_from_value (stack_top_p[-2]);
|
||||
|
||||
ecma_property_value_t *property_value_p = ecma_create_named_data_property (object_p,
|
||||
property_name_p,
|
||||
ECMA_PROPERTY_FIXED,
|
||||
NULL);
|
||||
property_value_p->value = left_value;
|
||||
|
||||
property_name_p = ecma_get_magic_string (LIT_INTERNAL_MAGIC_STRING_CLASS_FIELD_COMPUTED);
|
||||
ecma_property_t *property_p = ecma_find_named_property (object_p, property_name_p);
|
||||
|
||||
if (property_p != NULL)
|
||||
{
|
||||
property_value_p = ECMA_PROPERTY_VALUE_PTR (property_p);
|
||||
ecma_value_t *compact_collection_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_value_t,
|
||||
property_value_p->value);
|
||||
compact_collection_p = ecma_compact_collection_shrink (compact_collection_p);
|
||||
ECMA_SET_INTERNAL_VALUE_POINTER (property_value_p->value, compact_collection_p);
|
||||
}
|
||||
|
||||
goto free_left_value;
|
||||
}
|
||||
case VM_OC_RUN_CLASS_FIELD_INIT:
|
||||
{
|
||||
result = ecma_op_init_class_fields (ecma_make_object_value (JERRY_CONTEXT (current_function_obj_p)),
|
||||
frame_ctx_p->this_binding);
|
||||
|
||||
if (ECMA_IS_VALUE_ERROR (result))
|
||||
{
|
||||
goto error;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
case VM_OC_SET_NEXT_COMPUTED_FIELD:
|
||||
{
|
||||
ecma_integer_value_t next_index = ecma_get_integer_from_value (stack_top_p[-2]) + 1;
|
||||
stack_top_p[-2] = ecma_make_integer_value (next_index);
|
||||
stack_top_p++;
|
||||
|
||||
ecma_value_t *computed_class_fields_p = JERRY_CONTEXT (computed_class_fields_p);
|
||||
JERRY_ASSERT ((ecma_value_t) next_index < ECMA_COMPACT_COLLECTION_GET_SIZE (computed_class_fields_p));
|
||||
|
||||
result = stack_top_p[-2];
|
||||
stack_top_p[-1] = ecma_copy_value (computed_class_fields_p[next_index]);
|
||||
stack_top_p[-2] = ecma_copy_value (frame_ctx_p->this_binding);
|
||||
break;
|
||||
}
|
||||
case VM_OC_PUSH_SUPER_CONSTRUCTOR:
|
||||
{
|
||||
result = ecma_op_function_get_super_constructor (JERRY_CONTEXT (current_function_obj_p));
|
||||
|
||||
+10
-2
@@ -260,6 +260,9 @@ typedef enum
|
||||
VM_OC_PUSH_IMPLICIT_CTOR, /**< create implicit class constructor */
|
||||
VM_OC_INIT_CLASS, /**< initialize class */
|
||||
VM_OC_FINALIZE_CLASS, /**< finalize class */
|
||||
VM_OC_SET_CLASS_FIELD_INIT, /**< store the class field initializer function */
|
||||
VM_OC_RUN_CLASS_FIELD_INIT, /**< run the class field initializer function */
|
||||
VM_OC_SET_NEXT_COMPUTED_FIELD, /**< set the next computed field of a class */
|
||||
VM_OC_PUSH_SUPER_CONSTRUCTOR, /**< getSuperConstructor operation */
|
||||
VM_OC_RESOLVE_LEXICAL_THIS, /**< resolve this_binding from from the lexical environment */
|
||||
VM_OC_SUPER_REFERENCE, /**< push super reference */
|
||||
@@ -289,7 +292,8 @@ typedef enum
|
||||
VM_OC_PUSH_NEW_TARGET, /**< push new.target onto the stack */
|
||||
VM_OC_REQUIRE_OBJECT_COERCIBLE,/**< RequireObjectCoercible opretaion */
|
||||
VM_OC_ASSIGN_SUPER, /**< assign super reference */
|
||||
VM_OC_SET__PROTO__, /**< set prototpe when __proto__: form is used */
|
||||
VM_OC_SET__PROTO__, /**< set prototype when __proto__: form is used */
|
||||
VM_OC_ADD_COMPUTED_FIELD, /**< add computed field name */
|
||||
#endif /* ENABLED (JERRY_ESNEXT) */
|
||||
VM_OC_NONE, /**< a special opcode for unsupported byte codes */
|
||||
} vm_oc_types;
|
||||
@@ -337,6 +341,9 @@ typedef enum
|
||||
VM_OC_PUSH_IMPLICIT_CTOR = VM_OC_NONE, /**< create implicit class constructor */
|
||||
VM_OC_INIT_CLASS = VM_OC_NONE, /**< initialize class */
|
||||
VM_OC_FINALIZE_CLASS = VM_OC_NONE, /**< finalize class */
|
||||
VM_OC_SET_CLASS_FIELD_INIT = VM_OC_NONE, /**< store the class field initializer function */
|
||||
VM_OC_RUN_CLASS_FIELD_INIT = VM_OC_NONE, /**< run the class field initializer function */
|
||||
VM_OC_SET_NEXT_COMPUTED_FIELD = VM_OC_NONE, /**< set the next computed field of a class */
|
||||
VM_OC_PUSH_SUPER_CONSTRUCTOR = VM_OC_NONE, /**< getSuperConstructor operation */
|
||||
VM_OC_RESOLVE_LEXICAL_THIS = VM_OC_NONE, /**< resolve this_binding from from the lexical environment */
|
||||
VM_OC_SUPER_REFERENCE = VM_OC_NONE, /**< push super reference */
|
||||
@@ -366,7 +373,8 @@ typedef enum
|
||||
VM_OC_PUSH_NEW_TARGET = VM_OC_NONE, /**< push new.target onto the stack */
|
||||
VM_OC_REQUIRE_OBJECT_COERCIBLE = VM_OC_NONE,/**< RequireObjectCoercible opretaion */
|
||||
VM_OC_ASSIGN_SUPER = VM_OC_NONE, /**< assign super reference */
|
||||
VM_OC_SET__PROTO__ = VM_OC_NONE, /**< set prototpe when __proto__: form is used */
|
||||
VM_OC_SET__PROTO__ = VM_OC_NONE, /**< set prototype when __proto__: form is used */
|
||||
VM_OC_ADD_COMPUTED_FIELD = VM_OC_NONE, /**< add computed field name */
|
||||
#endif /* !ENABLED (JERRY_ESNEXT) */
|
||||
|
||||
VM_OC_UNUSED = VM_OC_NONE /**< placeholder if the list is empty */
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
// 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.
|
||||
|
||||
function check_syntax_error(code)
|
||||
{
|
||||
try {
|
||||
eval(code)
|
||||
assert(false)
|
||||
} catch (e) {
|
||||
assert(e instanceof SyntaxError)
|
||||
}
|
||||
}
|
||||
|
||||
function check_property(obj, name, value)
|
||||
{
|
||||
property = Object.getOwnPropertyDescriptor(obj, name)
|
||||
assert(typeof property === "object")
|
||||
assert(property.value === value)
|
||||
}
|
||||
|
||||
check_syntax_error("class C { get a = 5 }");
|
||||
check_syntax_error("class C { id1 id2 }");
|
||||
check_syntax_error("class C { a = 5,6 }");
|
||||
check_syntax_error("class C { set\na = 6 }");
|
||||
check_syntax_error("class C { constructor }");
|
||||
check_syntax_error("class C { static constructor }");
|
||||
check_syntax_error("class C { constructor = 1 }");
|
||||
check_syntax_error("class C { static constructor = 1 }");
|
||||
check_syntax_error("class C { f = arguments }");
|
||||
check_syntax_error("class C { static f = a\\u0072guments }");
|
||||
check_syntax_error("class C { f = () => arguments }");
|
||||
check_syntax_error("class C { f = arguments => 1 }");
|
||||
check_syntax_error("class C { f = ([arguments]) => 1 }");
|
||||
check_syntax_error("new class { f = eval('arguments') }");
|
||||
check_syntax_error("new class { f = eval('arguments => 1') }");
|
||||
|
||||
var res = 10
|
||||
var counter = 0
|
||||
|
||||
function f1() {
|
||||
counter++
|
||||
return 5
|
||||
}
|
||||
|
||||
var C1 = class {
|
||||
get = "a" + f1()
|
||||
static; set; a = () => Math.cos(0)
|
||||
v\u0061r
|
||||
f\u006fr = () => this
|
||||
arguments = this
|
||||
}
|
||||
|
||||
res = new C1
|
||||
check_property(res, "get", "a5")
|
||||
check_property(res, "static", undefined)
|
||||
check_property(res, "set", undefined)
|
||||
assert(res.a() === 1)
|
||||
check_property(res, "var", undefined)
|
||||
assert(res.for() === res)
|
||||
assert(res.arguments === res)
|
||||
|
||||
class C2 {
|
||||
constructor(a = this.x, b = this.y) {
|
||||
assert(a === undefined)
|
||||
assert(b === undefined)
|
||||
check_property(this, 'x', 11)
|
||||
check_property(this, 'y', "ab")
|
||||
}
|
||||
x = 5 + 6
|
||||
y = "a" + 'b'
|
||||
}
|
||||
|
||||
res = new C2
|
||||
|
||||
class C3 {
|
||||
constructor() {
|
||||
assert(this.x === 1)
|
||||
return { z:"zz" }
|
||||
}
|
||||
x = 1
|
||||
}
|
||||
|
||||
class C4 extends C3 {
|
||||
constructor() {
|
||||
super()
|
||||
assert(Object.getOwnPropertyDescriptor(this, "x") === undefined)
|
||||
check_property(this, "y", 2)
|
||||
check_property(this, "z", "zz")
|
||||
}
|
||||
y = 2
|
||||
}
|
||||
new C4
|
||||
|
||||
var o = {}
|
||||
class C5 extends C3 {
|
||||
'pr op' = o
|
||||
3 = true
|
||||
}
|
||||
res = new C5
|
||||
assert(Object.getOwnPropertyDescriptor(res, "x") === undefined)
|
||||
check_property(res, "pr op", o)
|
||||
check_property(res, "3", true)
|
||||
check_property(res, "z", "zz")
|
||||
|
||||
class C6 {
|
||||
a= () => this
|
||||
b= this
|
||||
}
|
||||
|
||||
class C7 extends C6 {
|
||||
c= () => this
|
||||
d= this
|
||||
}
|
||||
|
||||
count = 0
|
||||
class C8 extends C7 {
|
||||
constructor() {
|
||||
count++
|
||||
super()
|
||||
}
|
||||
|
||||
e= () => this
|
||||
f= this
|
||||
}
|
||||
|
||||
var res = new C8
|
||||
assert(res.a() === res)
|
||||
assert(res.b === res)
|
||||
assert(res.c() === res)
|
||||
assert(res.d === res)
|
||||
assert(res.e() === res)
|
||||
assert(res.f === res)
|
||||
|
||||
count = 0
|
||||
class C9 {
|
||||
a=assert(++count === 5)
|
||||
a=assert(++count === 6)
|
||||
a=assert(++count === 7)
|
||||
a=assert(++count === 8)
|
||||
static a=assert(++count === 1)
|
||||
static a=assert(++count === 2)
|
||||
static a=assert(++count === 3)
|
||||
static a=assert(++count === 4)
|
||||
}
|
||||
|
||||
assert(count === 4)
|
||||
new C9
|
||||
assert(count === 8)
|
||||
|
||||
count = 0
|
||||
class C10 {
|
||||
[(assert(++count == 1), "aa")] = assert(++count == 5);
|
||||
[(assert(++count == 2), "bb")] = assert(++count == 6);
|
||||
cc = assert(++count == 7);
|
||||
[(assert(++count == 3), "aa")] = assert(++count == 8);
|
||||
[(assert(++count == 4), "bb")] = assert(++count == 9);
|
||||
}
|
||||
|
||||
assert(count == 4)
|
||||
assert(Reflect.ownKeys(new C10).toString() === "aa,bb,cc");
|
||||
assert(count == 9)
|
||||
|
||||
res = "p"
|
||||
class C11 {
|
||||
p1 = assert(Reflect.ownKeys(this).toString() === "");
|
||||
[res + 2] = assert(Reflect.ownKeys(this).toString() === "p1");
|
||||
[res + 1] = assert(Reflect.ownKeys(this).toString() === "p1,p2");
|
||||
p3 = assert(Reflect.ownKeys(this).toString() === "p1,p2");
|
||||
[res + 4] = assert(Reflect.ownKeys(this).toString() === "p1,p2,p3");
|
||||
}
|
||||
new C11
|
||||
@@ -0,0 +1,139 @@
|
||||
// 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.
|
||||
|
||||
var count = 0
|
||||
class C1 {
|
||||
error = assert(++count === 1)
|
||||
error = function() { throw 40.5 }()
|
||||
}
|
||||
|
||||
try {
|
||||
new C1
|
||||
assert(false)
|
||||
} catch(e) {
|
||||
assert(e === 40.5)
|
||||
assert(count === 1)
|
||||
}
|
||||
|
||||
count = 0
|
||||
class C2 {
|
||||
constructor(a = assert(++count === 1)) {}
|
||||
error = function() { throw "Err" }()
|
||||
error = assert(false)
|
||||
}
|
||||
|
||||
try {
|
||||
new C2
|
||||
assert(false)
|
||||
} catch(e) {
|
||||
assert(e === "Err")
|
||||
assert(count === 1)
|
||||
}
|
||||
|
||||
count = 0
|
||||
var o = {}
|
||||
|
||||
class C3 extends class {
|
||||
error = function() { throw o }()
|
||||
} {
|
||||
constructor() {
|
||||
assert(++count === 1)
|
||||
super()
|
||||
assert(false)
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
new C3
|
||||
assert(false)
|
||||
} catch (e) {
|
||||
assert(e === o)
|
||||
assert(count === 1)
|
||||
}
|
||||
|
||||
count = 0
|
||||
class C4 {
|
||||
constructor() {
|
||||
assert(++count === 2)
|
||||
}
|
||||
a = assert(++count === 1)
|
||||
}
|
||||
|
||||
class C5 extends C4 {
|
||||
ok = assert(++count === 3)
|
||||
error = function() { assert(++count === 4); throw "Except" }()
|
||||
never = assert(false)
|
||||
}
|
||||
|
||||
try {
|
||||
new C5
|
||||
assert(false)
|
||||
} catch (e) {
|
||||
assert(e === "Except")
|
||||
assert(count === 4)
|
||||
}
|
||||
|
||||
count = 0
|
||||
o = []
|
||||
class C6 {
|
||||
a = assert(++count === 2)
|
||||
}
|
||||
|
||||
class C7 extends C6 {
|
||||
constructor() {
|
||||
assert(++count === 1)
|
||||
eval('super()')
|
||||
assert(false)
|
||||
}
|
||||
ok = assert(++count === 3)
|
||||
error = function() { assert(++count === 4); throw o }()
|
||||
never = assert(false)
|
||||
}
|
||||
|
||||
try {
|
||||
new C7
|
||||
assert(false)
|
||||
} catch (e) {
|
||||
assert(e === o)
|
||||
assert(count === 4)
|
||||
}
|
||||
|
||||
var res
|
||||
class C8 {
|
||||
/* Create a non-configurable accessor */
|
||||
a = (res = this, Object.defineProperty(this, "b", { get() {} }));
|
||||
b = 6
|
||||
}
|
||||
|
||||
try {
|
||||
new C8
|
||||
assert(false)
|
||||
} catch(e) {
|
||||
assert(e instanceof TypeError)
|
||||
assert(Reflect.ownKeys(res).toString() === "b,a")
|
||||
}
|
||||
|
||||
class C9 {
|
||||
["p" + 1]
|
||||
["p" + 2] = (res = this, Object.freeze(this));
|
||||
p3
|
||||
}
|
||||
|
||||
try {
|
||||
new C9
|
||||
assert(false)
|
||||
} catch(e) {
|
||||
assert(e instanceof TypeError)
|
||||
assert(Reflect.ownKeys(res).toString() === "p1")
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
// 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.
|
||||
|
||||
function check_property(obj, name, value)
|
||||
{
|
||||
property = Object.getOwnPropertyDescriptor(obj, name)
|
||||
assert(typeof property === "object")
|
||||
assert(property.value === value)
|
||||
}
|
||||
|
||||
var o = {}
|
||||
var name = "Pro"
|
||||
var res = 0
|
||||
var counter = 0
|
||||
|
||||
function f1() {
|
||||
counter++
|
||||
}
|
||||
|
||||
class C1 {
|
||||
static
|
||||
v\u0061r
|
||||
static Prop =
|
||||
res
|
||||
=
|
||||
"msg"
|
||||
static
|
||||
Prop
|
||||
=
|
||||
f1()
|
||||
static [name + "p"] = (f1(), o)
|
||||
static 22 = 3 * 4 ;static 23 = 5 + 6
|
||||
static 'a b'
|
||||
}
|
||||
|
||||
check_property(C1, "var", undefined)
|
||||
check_property(C1, "Prop", o)
|
||||
check_property(C1, 22, 12)
|
||||
check_property(C1, 23, 11)
|
||||
check_property(C1, "a b", undefined)
|
||||
assert(res === "msg")
|
||||
assert(counter === 2)
|
||||
@@ -0,0 +1,31 @@
|
||||
/* 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.
|
||||
*/
|
||||
|
||||
var called = false
|
||||
var obj = { f() { assert(this === obj); called = true } }
|
||||
|
||||
function f() {
|
||||
assert(false)
|
||||
}
|
||||
|
||||
with (obj) {
|
||||
new class {
|
||||
constructor() {
|
||||
f()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assert(called)
|
||||
@@ -1,20 +0,0 @@
|
||||
// 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 {
|
||||
eval("class cla { static }");
|
||||
assert(false);
|
||||
} catch (e) {
|
||||
assert(e instanceof SyntaxError);
|
||||
}
|
||||
@@ -3238,7 +3238,6 @@
|
||||
<test id="language/expressions/class/dstr/meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/dstr/meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/early-errors/grammar-special-meth-ctor-async-meth.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/early-errors/grammar-static-get-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/early-errors/grammar-static-set-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/gen-method-length-dflt.js"><reason></reason></test>
|
||||
@@ -4204,7 +4203,6 @@
|
||||
<test id="language/statements/class/dstr/meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/early-errors/grammar-special-meth-ctor-async-meth.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/early-errors/grammar-static-get-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/early-errors/grammar-static-set-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/statements/class/gen-method-length-dflt.js"><reason></reason></test>
|
||||
@@ -5784,17 +5782,11 @@
|
||||
<test id="language/expressions/class/dstr/private-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/dstr/private-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/dstr/private-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -5823,18 +5815,11 @@
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -5863,18 +5848,11 @@
|
||||
<test id="language/expressions/class/elements/after-same-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -5903,18 +5881,11 @@
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -5943,18 +5914,11 @@
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-async-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -5983,18 +5947,11 @@
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6023,7 +5980,6 @@
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/after-same-line-static-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/async-gen-private-method-static/yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/async-gen-private-method-static/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/async-gen-private-method-static/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
|
||||
@@ -6158,33 +6114,10 @@
|
||||
<test id="language/expressions/class/elements/class-name-static-initializer-decl.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/class-name-static-initializer-default-export.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/class-name-static-initializer-expr.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/computed-name-toprimitive-symbol.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/computed-name-toprimitive.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/ctor-called-after-fields-init.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-direct-eval-contains-superproperty-1.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-direct-eval-contains-superproperty-2.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-direct-eval-err-contains-supercall-1.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-direct-eval-err-contains-supercall-2.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-direct-eval-err-contains-supercall.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-indirect-eval-contains-superproperty-1.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-indirect-eval-contains-superproperty-2.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-indirect-eval-err-contains-supercall-1.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-indirect-eval-err-contains-supercall-2.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/derived-cls-indirect-eval-err-contains-supercall.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/direct-eval-err-contains-arguments.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/direct-eval-err-contains-newtarget.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/evaluation-error/computed-name-referenceerror.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/evaluation-error/computed-name-toprimitive-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/evaluation-error/computed-name-toprimitive-returns-noncallable.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/evaluation-error/computed-name-toprimitive-returns-nonobject.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/evaluation-error/computed-name-tostring-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/evaluation-error/computed-name-valueof-err.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/field-declaration.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/fields-anonymous-function-length.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/fields-asi-1.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/fields-asi-2.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/fields-asi-5.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/fields-computed-name-static-propname-prototype.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/fields-multiple-definitions-static-private-methods-proxy.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/fields-run-once-on-double-super.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/gen-private-method-static/yield-spread-arr-multiple.js"><reason></reason></test>
|
||||
@@ -6194,23 +6127,12 @@
|
||||
<test id="language/expressions/class/elements/gen-private-method/yield-spread-arr-single.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/gen-private-method/yield-spread-obj.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/grammar-private-field-optional-chaining.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/indirect-eval-err-contains-arguments.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/indirect-eval-err-contains-newtarget.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/init-err-evaluation.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/init-value-defined-after-class.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/init-value-incremental.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/intercalated-static-non-static-computed-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6239,18 +6161,11 @@
|
||||
<test id="language/expressions/class/elements/multiple-definitions-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-definitions-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6279,18 +6194,11 @@
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/multiple-stacked-definitions-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6319,18 +6227,11 @@
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-no-sc-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6359,18 +6260,11 @@
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6399,7 +6293,6 @@
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/new-sc-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/private-accessor-name/inst-private-escape-sequence-ZWJ.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/private-accessor-name/inst-private-escape-sequence-ZWNJ.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/private-accessor-name/inst-private-escape-sequence-u2118.js"><reason></reason></test>
|
||||
@@ -6500,19 +6393,11 @@
|
||||
<test id="language/expressions/class/elements/prod-private-method-before-super-return-in-field-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/prod-private-setter-before-super-return-in-constructor.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/prod-private-setter-before-super-return-in-field-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/redeclaration-symbol.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/redeclaration.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6541,18 +6426,11 @@
|
||||
<test id="language/expressions/class/elements/regular-definitions-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/regular-definitions-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6581,18 +6459,11 @@
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6621,18 +6492,11 @@
|
||||
<test id="language/expressions/class/elements/same-line-async-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-async-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6661,18 +6525,11 @@
|
||||
<test id="language/expressions/class/elements/same-line-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6701,14 +6558,8 @@
|
||||
<test id="language/expressions/class/elements/same-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/same-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-as-valid-instance-field-assigned.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-as-valid-instance-field.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-as-valid-static-field-assigned.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-as-valid-static-field.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-anonymous-function-length.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-anonymous-function-name.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-declaration.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-init-this-inside-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-init-with-this.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-field-redeclaration.js"><reason></reason></test>
|
||||
@@ -6727,11 +6578,6 @@
|
||||
<test id="language/expressions/class/elements/static-private-setter-access-on-inner-class.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-private-setter-access-on-inner-function.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/static-private-setter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-field-classelementname-initializer-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-field-classelementname-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-field-identifier-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-fields-multi-line.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-privatemeth-duplicate-get-set.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-privatemeth-duplicate-meth-nestedclassmeth.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-privatename-classelementname-initializer-alt.js"><reason></reason></test>
|
||||
@@ -6743,17 +6589,11 @@
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-static-private-async-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-static-private-gen-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/syntax/valid/grammar-static-private-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-computed-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-private-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -6782,7 +6622,6 @@
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/elements/wrapped-in-sc-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval-indirect.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-eval.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/private-getter-brand-check-multiple-evaluations-of-class-factory.js"><reason></reason></test>
|
||||
@@ -6822,7 +6661,6 @@
|
||||
<test id="language/expressions/class/private-static-setter-multiple-evaluations-of-class-function-ctor.js"><reason></reason></test>
|
||||
<test id="language/expressions/class/private-static-setter-multiple-evaluations-of-class-realm.js"><reason></reason></test>
|
||||
<test id="language/module-code/privatename-valid-no-earlyerr.js"><reason></reason></test>
|
||||
<test id="language/statements/class/classelementname-abrupt-completion.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/async-private-gen-meth-ary-init-iter-close.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/async-private-gen-meth-ary-init-iter-no-close.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/async-private-gen-meth-ary-name-iter-val.js"><reason></reason></test>
|
||||
@@ -7555,18 +7393,11 @@
|
||||
<test id="language/statements/class/dstr/private-meth-static-obj-ptrn-rest-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/private-meth-static-obj-ptrn-rest-skip-non-enumerable.js"><reason></reason></test>
|
||||
<test id="language/statements/class/dstr/private-meth-static-obj-ptrn-rest-val-obj.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/abrupt-completition-on-field-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -7595,18 +7426,11 @@
|
||||
<test id="language/statements/class/elements/after-same-line-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -7635,18 +7459,11 @@
|
||||
<test id="language/statements/class/elements/after-same-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -7675,18 +7492,11 @@
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -7715,18 +7525,11 @@
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-async-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -7755,18 +7558,11 @@
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -7795,7 +7591,6 @@
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/after-same-line-static-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/async-gen-private-method-static/yield-promise-reject-next-catch.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/async-gen-private-method-static/yield-promise-reject-next-for-await-of-async-iterator.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/async-gen-private-method-static/yield-promise-reject-next-for-await-of-sync-iterator.js"><reason></reason></test>
|
||||
@@ -7926,42 +7721,10 @@
|
||||
<test id="language/statements/class/elements/async-gen-private-method/yield-star-sync-next.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/async-gen-private-method/yield-star-sync-return.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/async-gen-private-method/yield-star-sync-throw.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/class-field-is-observable-by-proxy.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/class-field-on-frozen-objects.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/computed-name-toprimitive-symbol.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/computed-name-toprimitive.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/computed-property-abrupt-completition.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/ctor-called-after-fields-init.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-direct-eval-contains-superproperty-1.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-direct-eval-contains-superproperty-2.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-direct-eval-err-contains-supercall-1.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-direct-eval-err-contains-supercall-2.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-direct-eval-err-contains-supercall.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-indirect-eval-contains-superproperty-1.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-indirect-eval-contains-superproperty-2.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-indirect-eval-err-contains-supercall-1.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-indirect-eval-err-contains-supercall-2.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/derived-cls-indirect-eval-err-contains-supercall.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/direct-eval-err-contains-arguments.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/direct-eval-err-contains-newtarget.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/evaluation-error/computed-name-referenceerror.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/evaluation-error/computed-name-toprimitive-err.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/evaluation-error/computed-name-toprimitive-returns-noncallable.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/evaluation-error/computed-name-toprimitive-returns-nonobject.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/evaluation-error/computed-name-tostring-err.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/evaluation-error/computed-name-valueof-err.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/field-declaration.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fielddefinition-initializer-abrupt-completion.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-anonymous-function-length.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-asi-1.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-asi-2.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-asi-5.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-computed-name-propname-constructor.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-computed-name-static-computed-var-propname-constructor.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-computed-name-static-computed-var-propname-prototype.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-computed-name-static-propname-constructor.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-computed-name-static-propname-prototype.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/fields-hash-constructor-is-a-valid-name.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/gen-private-method-static/yield-spread-arr-multiple.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/gen-private-method-static/yield-spread-arr-single.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/gen-private-method-static/yield-spread-obj.js"><reason></reason></test>
|
||||
@@ -7971,23 +7734,12 @@
|
||||
<test id="language/statements/class/elements/get-access-of-missing-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/get-access-of-missing-shadowed-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/grammar-private-field-optional-chaining.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/indirect-eval-err-contains-arguments.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/indirect-eval-err-contains-newtarget.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/init-err-evaluation.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/init-value-defined-after-class.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/init-value-incremental.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/intercalated-static-non-static-computed-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8016,18 +7768,11 @@
|
||||
<test id="language/statements/class/elements/multiple-definitions-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-definitions-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8056,18 +7801,11 @@
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/multiple-stacked-definitions-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8096,18 +7834,11 @@
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-no-sc-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8136,18 +7867,11 @@
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8176,7 +7900,6 @@
|
||||
<test id="language/statements/class/elements/new-sc-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/new-sc-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/private-accessor-is-visible-in-computed-properties.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/private-accessor-name/inst-private-escape-sequence-ZWJ.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/private-accessor-name/inst-private-escape-sequence-ZWNJ.js"><reason></reason></test>
|
||||
@@ -8322,7 +8045,6 @@
|
||||
<test id="language/statements/class/elements/privatefieldset-typeerror-5.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/privategetter-on-proxy.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/privatemethods-on-proxy.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/privatename-not-valid-eval-earlyerr-3.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/privatename-not-valid-eval-earlyerr-4.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/privatename-not-valid-eval-earlyerr-5.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/privatename-valid-no-earlyerr.js"><reason></reason></test>
|
||||
@@ -8332,21 +8054,12 @@
|
||||
<test id="language/statements/class/elements/prod-private-method-before-super-return-in-field-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/prod-private-setter-before-super-return-in-constructor.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/prod-private-setter-before-super-return-in-field-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/public-class-field-initialization-is-visible-to-proxy.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/public-class-field-initialization-on-super-class-with-setter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/redeclaration-symbol.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/redeclaration.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8375,18 +8088,11 @@
|
||||
<test id="language/statements/class/elements/regular-definitions-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/regular-definitions-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8415,18 +8121,11 @@
|
||||
<test id="language/statements/class/elements/same-line-async-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8455,18 +8154,11 @@
|
||||
<test id="language/statements/class/elements/same-line-async-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-async-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8495,18 +8187,11 @@
|
||||
<test id="language/statements/class/elements/same-line-gen-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-gen-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8535,23 +8220,15 @@
|
||||
<test id="language/statements/class/elements/same-line-method-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/same-line-method-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/set-access-of-missing-private-setter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/set-access-of-missing-shadowed-private-setter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/set-access-of-private-method.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/set-access-of-shadowed-private-method.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-as-valid-instance-field-assigned.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-as-valid-instance-field.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-as-valid-static-field-assigned.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-as-valid-static-field.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-anonymous-function-length.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-anonymous-function-name.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-declaration.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-init-this-inside-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-init-with-this.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-initializer-error.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-field-redeclaration.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-fielddefinition-initializer-abrupt-completion.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-private-fields-proxy-default-handler-throws.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-private-getter-access-on-inner-arrow-function.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/static-private-getter-access-on-inner-class.js"><reason></reason></test>
|
||||
@@ -8569,12 +8246,6 @@
|
||||
<test id="language/statements/class/elements/super-access-inside-a-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/super-access-inside-a-private-method.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/super-access-inside-a-private-setter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/super-fielddefinition-initializer-abrupt-completion.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-field-classelementname-initializer-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-field-classelementname-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-field-identifier-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-fields-multi-line.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-privatemeth-duplicate-get-set.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-privatemeth-duplicate-meth-nestedclassmeth.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-privatename-classelementname-initializer-alt.js"><reason></reason></test>
|
||||
@@ -8586,17 +8257,11 @@
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-static-private-async-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-static-private-gen-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/syntax/valid/grammar-static-private-meth-prototype.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-computed-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-computed-symbol-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-grammar-privatename-identifier-semantics-stringvalue.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-literal-names-asi.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-private-field-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-private-method-getter-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-private-method-usage.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-private-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-rs-field-identifier-initializer.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-rs-field-identifier.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-rs-private-getter-alt.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-rs-private-getter.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-rs-private-method-alt.js"><reason></reason></test>
|
||||
@@ -8625,8 +8290,6 @@
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-static-private-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-static-private-methods-with-fields.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-static-private-methods.js"><reason></reason></test>
|
||||
<test id="language/statements/class/elements/wrapped-in-sc-string-literal-names.js"><reason></reason></test>
|
||||
<test id="language/statements/class/static-classelementname-abrupt-completion.js"><reason></reason></test>
|
||||
<!-- END - ESNext stage 3 proposals: class fields, private methods and static class features -->
|
||||
|
||||
<!-- ESNext stage 3 proposal: top level await
|
||||
|
||||
Reference in New Issue
Block a user