Skip to content

Commit 7863b91

Browse files
committed
Strings are measured with 'length', Lists are measured with 'the number of elements'
See tc39/ecma262#3412 (comment)
1 parent b80d92e commit 7863b91

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

pseudocode_semantics.py

+16
Original file line numberDiff line numberDiff line change
@@ -10038,6 +10038,10 @@ def s_tb(val_desc, env):
1003810038
[led, ex] = val_desc.children
1003910039
env.assert_expr_is_of_type(ex, T_MathInteger_)
1004010040
(led_sub_t, led_sup_t) = type_bracket_for(led, env)
10041+
add_pass_error(
10042+
val_desc,
10043+
"Strings are measured with 'length', Lists are measured with 'the number of elements'"
10044+
)
1004110045
return a_subset_of(ListType(led_sup_t))
1004210046
# inexact because of length restriction
1004310047

@@ -10346,6 +10350,10 @@ def s_cond(cond, env0, asserting):
1034610350
[list_var, len_var] = cond.children
1034710351
env0.assert_expr_is_of_type(list_var, T_List)
1034810352
env0.assert_expr_is_of_type(len_var, T_MathNonNegativeInteger_)
10353+
add_pass_error(
10354+
list_var,
10355+
"Strings are measured with 'length', Lists are measured with 'the number of elements'"
10356+
)
1034910357
return (env0, env0)
1035010358

1035110359
@P("{EXPR} : the number of elements in the List {var}")
@@ -11517,6 +11525,10 @@ def s_expr(expr, env0, _):
1151711525
env0.assert_expr_is_of_type(var1, T_MathInteger_)
1151811526
env1 = env0.ensure_expr_is_of_type(var3, T_Data_Block | T_Shared_Data_Block)
1151911527
env0.assert_expr_is_of_type(var4, T_MathInteger_)
11528+
add_pass_error(
11529+
expr,
11530+
"Strings are measured with 'length', Lists are measured with 'the number of elements'"
11531+
)
1152011532
return (ListType(T_MathInteger_), env1)
1152111533

1152211534
@P("{EXPR} : a List whose elements are bytes from {var} at indices in {INTERVAL}")
@@ -14418,6 +14430,10 @@ class _:
1441814430
def s_expr(expr, env0, _):
1441914431
[var] = expr.children
1442014432
env0.assert_expr_is_of_type(var, T_MathInteger_)
14433+
add_pass_error(
14434+
expr,
14435+
"Strings are measured with 'length', Lists are measured with 'the number of elements'"
14436+
)
1442114437
return (ListType(T_MathInteger_), env0)
1442214438

1442314439
@P("{LIST_ELEMENTS_DESCRIPTION} : byte values")

0 commit comments

Comments
 (0)