Skip to content

Commit 9c5a95e

Browse files
author
Bela Toth
committed
Implement TrimStart TrimEnd and aliases
Based on: https://tc39.es/ecma262/#sec-string.prototype.trim JerryScript-DCO-1.0-Signed-off-by: Bela Toth [email protected]
1 parent 5b3f01a commit 9c5a95e

File tree

10 files changed

+162
-81
lines changed

10 files changed

+162
-81
lines changed

jerry-core/ecma/base/ecma-helpers-number.c

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -729,13 +729,11 @@ ecma_number_parse_int (const lit_utf8_byte_t *string_buff, /**< routine's first
729729
return ecma_make_nan_value ();
730730
}
731731

732-
const lit_utf8_byte_t *string_curr_p = string_buff;
732+
/* 2. Remove leading whitespace. */
733733

734-
/* 2. Remove leading whitespace. */
735-
ecma_string_trim_helper (&string_curr_p, &string_buff_size);
736-
737-
const lit_utf8_byte_t *string_end_p = string_curr_p + string_buff_size;
738-
const lit_utf8_byte_t *start_p = string_curr_p;
734+
const lit_utf8_byte_t *string_end_p = string_buff + string_buff_size;
735+
const lit_utf8_byte_t *start_p = ecma_string_trim_front (string_buff, string_end_p);
736+
const lit_utf8_byte_t *string_curr_p = start_p;
739737
const lit_utf8_byte_t *end_p = string_end_p;
740738

741739
if (string_curr_p >= string_end_p)
@@ -906,13 +904,11 @@ ecma_number_parse_float (const lit_utf8_byte_t *string_buff, /**< routine's firs
906904
return ecma_make_nan_value ();
907905
}
908906

909-
const lit_utf8_byte_t *str_curr_p = string_buff;
910-
911907
/* 2. Remove leading whitespace. */
912-
ecma_string_trim_helper (&str_curr_p, &string_buff_size);
913908

914-
const lit_utf8_byte_t *str_end_p = str_curr_p + string_buff_size;
915-
const lit_utf8_byte_t *start_p = str_curr_p;
909+
const lit_utf8_byte_t *str_end_p = string_buff + string_buff_size;
910+
const lit_utf8_byte_t *start_p = ecma_string_trim_front (string_buff, str_end_p);
911+
const lit_utf8_byte_t *str_curr_p = start_p;
916912
const lit_utf8_byte_t *end_p = str_end_p;
917913

918914
bool sign = false;

jerry-core/ecma/base/ecma-helpers-string.c

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2426,49 +2426,81 @@ ecma_string_substr (const ecma_string_t *string_p, /**< pointer to an ecma strin
24262426
* Helper function for trimming.
24272427
*
24282428
* Used by:
2429-
* - ecma_string_trim
2430-
* - ecma_utf8_string_to_number
2429+
* - ecma_string_trim_helper
24312430
* - ecma_builtin_global_object_parse_int
24322431
* - ecma_builtin_global_object_parse_float
2432+
*
2433+
* @return position of the first non whitespace character.
24332434
*/
2434-
void
2435-
ecma_string_trim_helper (const lit_utf8_byte_t **utf8_str_p, /**< [in, out] current string position */
2436-
lit_utf8_size_t *utf8_str_size) /**< [in, out] size of the given string */
2435+
const lit_utf8_byte_t *
2436+
ecma_string_trim_front (const lit_utf8_byte_t *start_p, /**< current string's start position */
2437+
const lit_utf8_byte_t *end_p) /**< current string's end position */
24372438
{
24382439
ecma_char_t ch;
2439-
lit_utf8_size_t read_size;
2440-
const lit_utf8_byte_t *nonws_start_p = *utf8_str_p + *utf8_str_size;
2441-
const lit_utf8_byte_t *current_p = *utf8_str_p;
24422440

2443-
while (current_p < nonws_start_p)
2441+
while (start_p < end_p)
24442442
{
2445-
read_size = lit_read_code_unit_from_utf8 (current_p, &ch);
2443+
lit_utf8_size_t read_size = lit_read_code_unit_from_utf8 (start_p, &ch);
24462444

24472445
if (!lit_char_is_white_space (ch))
24482446
{
2449-
nonws_start_p = current_p;
24502447
break;
24512448
}
24522449

2453-
current_p += read_size;
2450+
start_p += read_size;
24542451
}
24552452

2456-
current_p = *utf8_str_p + *utf8_str_size;
2453+
return start_p;
2454+
} /* ecma_string_trim_front */
24572455

2458-
while (current_p > nonws_start_p)
2456+
/**
2457+
* Helper function for trimming.
2458+
*
2459+
* Used by:
2460+
* - ecma_string_trim_helper
2461+
*
2462+
* @return position of the last non whitespace character.
2463+
*/
2464+
const lit_utf8_byte_t *
2465+
ecma_string_trim_back (const lit_utf8_byte_t *start_p, /**< current string's start position */
2466+
const lit_utf8_byte_t *end_p) /**< current string's end position */
2467+
{
2468+
ecma_char_t ch;
2469+
2470+
while (end_p > start_p)
24592471
{
2460-
read_size = lit_read_prev_code_unit_from_utf8 (current_p, &ch);
2472+
lit_utf8_size_t read_size = lit_read_prev_code_unit_from_utf8 (end_p, &ch);
24612473

24622474
if (!lit_char_is_white_space (ch))
24632475
{
24642476
break;
24652477
}
24662478

2467-
current_p -= read_size;
2479+
end_p -= read_size;
24682480
}
24692481

2470-
*utf8_str_p = nonws_start_p;
2471-
*utf8_str_size = (lit_utf8_size_t) (current_p - nonws_start_p);
2482+
return end_p;
2483+
} /* ecma_string_trim_back */
2484+
2485+
/**
2486+
* Helper function for trimming.
2487+
*
2488+
* Used by:
2489+
* - ecma_string_trim
2490+
* - ecma_utf8_string_to_number
2491+
*/
2492+
inline void JERRY_ATTR_ALWAYS_INLINE
2493+
ecma_string_trim_helper (const lit_utf8_byte_t **utf8_str_p, /**< [in, out] current string position */
2494+
lit_utf8_size_t *utf8_str_size) /**< [in, out] size of the given string */
2495+
{
2496+
const lit_utf8_byte_t *end_p = *utf8_str_p + *utf8_str_size;
2497+
const lit_utf8_byte_t *start_p = *utf8_str_p;
2498+
2499+
const lit_utf8_byte_t *new_start_p = ecma_string_trim_front (start_p, end_p);
2500+
const lit_utf8_byte_t *new_end_p = ecma_string_trim_back (new_start_p, end_p);
2501+
2502+
*utf8_str_size = (lit_utf8_size_t) (new_end_p - new_start_p);
2503+
*utf8_str_p = new_start_p;
24722504
} /* ecma_string_trim_helper */
24732505

24742506
/**

jerry-core/ecma/base/ecma-helpers.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,8 @@ lit_magic_string_id_t ecma_get_string_magic (const ecma_string_t *string_p);
397397

398398
lit_string_hash_t ecma_string_hash (const ecma_string_t *string_p);
399399
ecma_string_t *ecma_string_substr (const ecma_string_t *string_p, lit_utf8_size_t start_pos, lit_utf8_size_t end_pos);
400+
const lit_utf8_byte_t *ecma_string_trim_front (const lit_utf8_byte_t *start_p, const lit_utf8_byte_t *end_p);
401+
const lit_utf8_byte_t *ecma_string_trim_back (const lit_utf8_byte_t *start_p, const lit_utf8_byte_t *end_p);
400402
void ecma_string_trim_helper (const lit_utf8_byte_t **utf8_str_p,
401403
lit_utf8_size_t *utf8_str_size);
402404
ecma_string_t *ecma_string_trim (const ecma_string_t *string_p);

jerry-core/ecma/builtin-objects/ecma-builtin-intrinsic.c

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@
1818
#include "ecma-container-object.h"
1919
#include "ecma-array-object.h"
2020
#include "ecma-typedarray-object.h"
21+
#include "ecma-string-object.h"
2122
#include "ecma-gc.h"
23+
#include "ecma-helpers.h"
2224
#include "lit-char-helpers.h"
2325

2426
#if ENABLED (JERRY_ESNEXT)
@@ -44,7 +46,9 @@ enum
4446
ECMA_INTRINSIC_ARRAY_TO_STRING,
4547
ECMA_INTRINSIC_DATE_TO_UTC_STRING,
4648
ECMA_INTRINSIC_PARSE_FLOAT,
47-
ECMA_INTRINSIC_PARSE_INT
49+
ECMA_INTRINSIC_PARSE_INT,
50+
ECMA_INTRINSIC_STRING_TRIM_START,
51+
ECMA_INTRINSIC_STRING_TRIM_END,
4852
};
4953

5054
#define BUILTIN_INC_HEADER_NAME "ecma-builtin-intrinsic.inc.h"
@@ -206,6 +210,48 @@ ecma_builtin_intrinsic_dispatch_routine (uint16_t builtin_routine_id, /**< built
206210

207211
return ecma_date_value_to_utc_string (*prim_value_p);
208212
}
213+
case ECMA_INTRINSIC_STRING_TRIM_START:
214+
case ECMA_INTRINSIC_STRING_TRIM_END:
215+
{
216+
ecma_value_t coercible = ecma_op_check_object_coercible (this_arg);
217+
218+
if (ECMA_IS_VALUE_ERROR (coercible))
219+
{
220+
return coercible;
221+
}
222+
223+
ecma_string_t *to_str_p = ecma_op_to_string (this_arg);
224+
if (to_str_p == NULL)
225+
{
226+
return ECMA_VALUE_ERROR;
227+
}
228+
229+
ECMA_STRING_TO_UTF8_STRING (to_str_p, start_p, input_start_size);
230+
231+
lit_utf8_size_t size;
232+
const lit_utf8_byte_t *input_start_p = start_p;
233+
const lit_utf8_byte_t *input_str_end_p = start_p + input_start_size;
234+
235+
ecma_string_t *ret_str_p;
236+
if (builtin_routine_id == ECMA_INTRINSIC_STRING_TRIM_START)
237+
{
238+
const lit_utf8_byte_t *new_start_p = ecma_string_trim_front (input_start_p, input_str_end_p);
239+
size = (lit_utf8_size_t) (input_str_end_p - new_start_p);
240+
ret_str_p = ecma_new_ecma_string_from_utf8 (new_start_p, size);
241+
}
242+
else
243+
{
244+
const lit_utf8_byte_t *new_end_p = ecma_string_trim_back (input_start_p, input_str_end_p);
245+
size = (lit_utf8_size_t) (new_end_p - input_start_p);
246+
ret_str_p = ecma_new_ecma_string_from_utf8 (input_start_p, size);
247+
}
248+
249+
ECMA_FINALIZE_UTF8_STRING (start_p, input_start_size);
250+
ecma_value_t result = ecma_make_string_value (ret_str_p);
251+
ecma_deref_ecma_string (to_str_p);
252+
return result;
253+
254+
}
209255
default:
210256
{
211257
JERRY_ASSERT (builtin_routine_id == ECMA_INTRINSIC_PARSE_INT
@@ -236,7 +282,6 @@ ecma_builtin_intrinsic_dispatch_routine (uint16_t builtin_routine_id, /**< built
236282

237283
ECMA_FINALIZE_UTF8_STRING (string_buff, string_buff_size);
238284
ecma_deref_ecma_string (str_p);
239-
240285
return result;
241286
}
242287
}

jerry-core/ecma/builtin-objects/ecma-builtin-intrinsic.inc.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ ROUTINE (LIT_INTERNAL_MAGIC_STRING_ARRAY_PROTOTYPE_VALUES, ECMA_INTRINSIC_ARRAY_
7474
ROUTINE (LIT_INTERNAL_MAGIC_STRING_TYPEDARRAY_PROTOTYPE_VALUES, ECMA_INTRINSIC_TYPEDARRAY_PROTOTYPE_VALUES, 0, 0)
7575
ROUTINE (LIT_INTERNAL_MAGIC_STRING_SET_PROTOTYPE_VALUES, ECMA_INTRINSIC_SET_PROTOTYPE_VALUES, 0, 0)
7676
ROUTINE (LIT_INTERNAL_MAGIC_STRING_MAP_PROTOTYPE_ENTRIES, ECMA_INTRINSIC_MAP_PROTOTYPE_ENTRIES, 0, 0)
77+
ROUTINE (LIT_MAGIC_STRING_TRIM_START, ECMA_INTRINSIC_STRING_TRIM_START, 0, 0)
78+
ROUTINE (LIT_MAGIC_STRING_TRIM_END, ECMA_INTRINSIC_STRING_TRIM_END, 0, 0)
7779
ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ECMA_INTRINSIC_ARRAY_TO_STRING, 0, 0)
7880
ROUTINE (LIT_MAGIC_STRING_TO_UTC_STRING_UL, ECMA_INTRINSIC_DATE_TO_UTC_STRING, 0, 0)
7981
ROUTINE (LIT_MAGIC_STRING_PARSE_FLOAT, ECMA_INTRINSIC_PARSE_FLOAT, 1, 1)

jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.inc.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,15 @@ ROUTINE (LIT_MAGIC_STRING_CODE_POINT_AT, ECMA_STRING_PROTOTYPE_CODE_POINT_AT, 1,
7676
ROUTINE (LIT_MAGIC_STRING_PAD_START, ECMA_STRING_PROTOTYPE_PAD_START, 2, 1)
7777
ROUTINE (LIT_MAGIC_STRING_PAD_END, ECMA_STRING_PROTOTYPE_PAD_END, 2, 1)
7878
ROUTINE (LIT_GLOBAL_SYMBOL_ITERATOR, ECMA_STRING_PROTOTYPE_ITERATOR, 0, 0)
79+
80+
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_START, LIT_MAGIC_STRING_TRIM_START,
81+
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
82+
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_LEFT, LIT_MAGIC_STRING_TRIM_START,
83+
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
84+
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_END, LIT_MAGIC_STRING_TRIM_END,
85+
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
86+
INTRINSIC_PROPERTY (LIT_MAGIC_STRING_TRIM_RIGHT, LIT_MAGIC_STRING_TRIM_END,
87+
ECMA_PROPERTY_CONFIGURABLE_WRITABLE)
7988
#endif /* ENABLED (JERRY_ESNEXT) */
8089

8190
#endif /* ENABLED (JERRY_BUILTIN_STRING) */

jerry-core/lit/lit-magic-strings.inc.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,9 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SPECIES, "species")
531531
#if ENABLED (JERRY_BUILTIN_NUMBER)
532532
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_FIXED_UL, "toFixed")
533533
#endif
534+
#if ENABLED (JERRY_ESNEXT)
535+
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TRIM_END, "trimEnd")
536+
#endif
534537
#if ENABLED (JERRY_BUILTIN_REGEXP) && ENABLED (JERRY_ESNEXT)
535538
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UNICODE, "unicode")
536539
#endif
@@ -598,6 +601,9 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UINT8_UL, "setUint8")
598601
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SUBARRAY, "subarray")
599602
#endif
600603
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_STRING_UL, "toString")
604+
#if ENABLED (JERRY_BUILTIN_STRING) && ENABLED (JERRY_ESNEXT)
605+
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TRIM_LEFT, "trimLeft")
606+
#endif
601607
#if ENABLED (JERRY_BUILTIN_ANNEXB)
602608
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UNESCAPE, "unescape")
603609
#endif
@@ -668,6 +674,12 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_STRINGIFY, "stringify")
668674
#if ENABLED (JERRY_BUILTIN_STRING)
669675
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SUBSTRING, "substring")
670676
#endif
677+
#if ENABLED (JERRY_BUILTIN_STRING) && ENABLED (JERRY_ESNEXT)
678+
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TRIM_RIGHT, "trimRight")
679+
#endif
680+
#if ENABLED (JERRY_ESNEXT)
681+
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TRIM_START, "trimStart")
682+
#endif
671683
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UNDEFINED, "undefined")
672684
#if ENABLED (JERRY_BUILTIN_TYPEDARRAY)
673685
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INT16_ARRAY_UL, "Int16Array")

jerry-core/lit/lit-magic-strings.ini

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ LIT_MAGIC_STRING_SET_INT8_UL = "setInt8"
206206
LIT_MAGIC_STRING_SET_YEAR_UL = "setYear"
207207
LIT_MAGIC_STRING_SPECIES = "species"
208208
LIT_MAGIC_STRING_TO_FIXED_UL = "toFixed"
209+
LIT_MAGIC_STRING_TRIM_END = "trimEnd"
209210
LIT_MAGIC_STRING_UNICODE = "unicode"
210211
LIT_MAGIC_STRING_UNSHIFT = "unshift"
211212
LIT_MAGIC_STRING_VALUE_OF_UL = "valueOf"
@@ -236,6 +237,7 @@ LIT_MAGIC_STRING_SET_MONTH_UL = "setMonth"
236237
LIT_MAGIC_STRING_SET_UINT8_UL = "setUint8"
237238
LIT_MAGIC_STRING_SUBARRAY = "subarray"
238239
LIT_MAGIC_STRING_TO_STRING_UL = "toString"
240+
LIT_MAGIC_STRING_TRIM_LEFT = "trimLeft"
239241
LIT_MAGIC_STRING_UNESCAPE = "unescape"
240242
LIT_MAGIC_STRING_WRITABLE = "writable"
241243
LIT_MAGIC_STRING_OBJECT_TO_STRING_UL = "[object "
@@ -267,6 +269,8 @@ LIT_MAGIC_STRING_STRINGIFY = "stringify"
267269
LIT_MAGIC_STRING_SET_UINT16_UL = "setUint16"
268270
LIT_MAGIC_STRING_SET_UINT32_UL = "setUint32"
269271
LIT_MAGIC_STRING_SUBSTRING = "substring"
272+
LIT_MAGIC_STRING_TRIM_RIGHT = "trimRight"
273+
LIT_MAGIC_STRING_TRIM_START = "trimStart"
270274
LIT_MAGIC_STRING_UNDEFINED = "undefined"
271275
LIT_MAGIC_STRING_INT16_ARRAY_UL = "Int16Array"
272276
LIT_MAGIC_STRING_INT32_ARRAY_UL = "Int32Array"
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright JS Foundation and other contributors, http://js.foundation
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
var test = " asd ";
16+
assert(test.trimStart() === "asd ")
17+
assert(test.trimStart().length === 5)
18+
assert(test.trimLeft() === "asd ")
19+
assert(test.trimLeft().length === 5)
20+
assert(String.prototype.trimStart === String.prototype.trimLeft)
21+
22+
assert(test.trimEnd() === " asd")
23+
assert(test.trimEnd().length === 5)
24+
assert(test.trimRight() === " asd")
25+
assert(test.trimRight().length === 5)
26+
assert(String.prototype.trimEnd === String.prototype.trimRight)
27+
28+
assert(test.trim() === "asd")
29+
assert(test.trim().length === 3)

tests/test262-esnext-excludelist.xml

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,6 @@
9292
<test id="annexB/built-ins/String/prototype/sup/name.js"><reason></reason></test>
9393
<test id="annexB/built-ins/String/prototype/sup/prop-desc.js"><reason></reason></test>
9494
<test id="annexB/built-ins/String/prototype/sup/this-val-tostring-err.js"><reason></reason></test>
95-
<test id="annexB/built-ins/String/prototype/trimLeft/length.js"><reason></reason></test>
96-
<test id="annexB/built-ins/String/prototype/trimLeft/name.js"><reason></reason></test>
97-
<test id="annexB/built-ins/String/prototype/trimLeft/prop-desc.js"><reason></reason></test>
98-
<test id="annexB/built-ins/String/prototype/trimRight/length.js"><reason></reason></test>
99-
<test id="annexB/built-ins/String/prototype/trimRight/name.js"><reason></reason></test>
100-
<test id="annexB/built-ins/String/prototype/trimRight/prop-desc.js"><reason></reason></test>
10195
<test id="annexB/built-ins/TypedArrayConstructors/from/iterator-method-emulates-undefined.js"><reason></reason></test>
10296
<test id="annexB/built-ins/unescape/four-ignore-bad-u.js"><reason></reason></test>
10397
<test id="annexB/built-ins/unescape/four.js"><reason></reason></test>
@@ -1948,50 +1942,6 @@
19481942
<test id="built-ins/String/prototype/toLowerCase/Final_Sigma_U180E.js"><reason></reason></test>
19491943
<test id="built-ins/String/prototype/toLowerCase/special_casing_conditional.js"><reason></reason></test>
19501944
<test id="built-ins/String/prototype/toString/non-generic-realm.js"><reason></reason></test>
1951-
<test id="built-ins/String/prototype/trimEnd/length.js"><reason></reason></test>
1952-
<test id="built-ins/String/prototype/trimEnd/name.js"><reason></reason></test>
1953-
<test id="built-ins/String/prototype/trimEnd/prop-desc.js"><reason></reason></test>
1954-
<test id="built-ins/String/prototype/trimEnd/this-value-boolean.js"><reason></reason></test>
1955-
<test id="built-ins/String/prototype/trimEnd/this-value-line-terminator.js"><reason></reason></test>
1956-
<test id="built-ins/String/prototype/trimEnd/this-value-not-obj-coercible.js"><reason></reason></test>
1957-
<test id="built-ins/String/prototype/trimEnd/this-value-number.js"><reason></reason></test>
1958-
<test id="built-ins/String/prototype/trimEnd/this-value-object-cannot-convert-to-primitive-err.js"><reason></reason></test>
1959-
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-call-err.js"><reason></reason></test>
1960-
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-meth-err.js"><reason></reason></test>
1961-
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-meth-priority.js"><reason></reason></test>
1962-
<test id="built-ins/String/prototype/trimEnd/this-value-object-toprimitive-returns-object-err.js"><reason></reason></test>
1963-
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-call-err.js"><reason></reason></test>
1964-
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-meth-err.js"><reason></reason></test>
1965-
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-meth-priority.js"><reason></reason></test>
1966-
<test id="built-ins/String/prototype/trimEnd/this-value-object-tostring-returns-object-err.js"><reason></reason></test>
1967-
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-call-err.js"><reason></reason></test>
1968-
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-meth-err.js"><reason></reason></test>
1969-
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-meth-priority.js"><reason></reason></test>
1970-
<test id="built-ins/String/prototype/trimEnd/this-value-object-valueof-returns-object-err.js"><reason></reason></test>
1971-
<test id="built-ins/String/prototype/trimEnd/this-value-symbol-typeerror.js"><reason></reason></test>
1972-
<test id="built-ins/String/prototype/trimEnd/this-value-whitespace.js"><reason></reason></test>
1973-
<test id="built-ins/String/prototype/trimStart/length.js"><reason></reason></test>
1974-
<test id="built-ins/String/prototype/trimStart/name.js"><reason></reason></test>
1975-
<test id="built-ins/String/prototype/trimStart/prop-desc.js"><reason></reason></test>
1976-
<test id="built-ins/String/prototype/trimStart/this-value-boolean.js"><reason></reason></test>
1977-
<test id="built-ins/String/prototype/trimStart/this-value-line-terminator.js"><reason></reason></test>
1978-
<test id="built-ins/String/prototype/trimStart/this-value-not-obj-coercible.js"><reason></reason></test>
1979-
<test id="built-ins/String/prototype/trimStart/this-value-number.js"><reason></reason></test>
1980-
<test id="built-ins/String/prototype/trimStart/this-value-object-cannot-convert-to-primitive-err.js"><reason></reason></test>
1981-
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-call-err.js"><reason></reason></test>
1982-
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-meth-err.js"><reason></reason></test>
1983-
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-meth-priority.js"><reason></reason></test>
1984-
<test id="built-ins/String/prototype/trimStart/this-value-object-toprimitive-returns-object-err.js"><reason></reason></test>
1985-
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-call-err.js"><reason></reason></test>
1986-
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-meth-err.js"><reason></reason></test>
1987-
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-meth-priority.js"><reason></reason></test>
1988-
<test id="built-ins/String/prototype/trimStart/this-value-object-tostring-returns-object-err.js"><reason></reason></test>
1989-
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-call-err.js"><reason></reason></test>
1990-
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-meth-err.js"><reason></reason></test>
1991-
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-meth-priority.js"><reason></reason></test>
1992-
<test id="built-ins/String/prototype/trimStart/this-value-object-valueof-returns-object-err.js"><reason></reason></test>
1993-
<test id="built-ins/String/prototype/trimStart/this-value-symbol-typeerror.js"><reason></reason></test>
1994-
<test id="built-ins/String/prototype/trimStart/this-value-whitespace.js"><reason></reason></test>
19951945
<test id="built-ins/String/prototype/valueOf/non-generic-realm.js"><reason></reason></test>
19961946
<test id="built-ins/String/symbol-string-coercion.js"><reason></reason></test>
19971947
<test id="built-ins/Symbol/asyncIterator/cross-realm.js"><reason></reason></test>

0 commit comments

Comments
 (0)