ladybird/Tests/LibJS/Runtime
Timothy Flynn edaed9adfa LibJS: Protect DateParser from non-ASCII input
DateParser is a GenericLexer, which is not particularly UTF-8 aware.
Other engines do not accept ASCII input, so let's just reject non-ASCII
strings outright.

While we are here, let's avoid the std ctype header. It is explicitly
undefined behavior to provide code points to isspace, isalpha, etc. that
do not fit in an unsigned char. Although this isn't reachable any longer
let's just nip it in the bud and use our safe AK character types.

Just to demonstrate, the following returns different values for me on
different systems and with different compilers:

    isdigit(0xff01)
    isalpha(0xff01)
    isspace(0xff01)
2026-05-22 17:30:36 +02:00
..
3rdparty LibRegex: Reject duplicate named groups in nested alternatives 2026-05-16 16:28:09 +02:00
builtins LibJS: Protect DateParser from non-ASCII input 2026-05-22 17:30:36 +02:00
classes LibJS: Resolve super constructor before arguments 2026-05-22 01:56:57 +02:00
functions LibJS: Check strict destructured parameter names 2026-05-22 01:56:57 +02:00
iterators LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
loops LibJS: Allow async as a for-await-of target 2026-05-22 01:56:57 +02:00
math LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
modules LibJS: Track async module evaluation order 2026-05-22 01:56:57 +02:00
operators LibJS: Produce negative zero from i32 multiplication fast path 2026-02-08 20:59:20 +01:00
regress LibJS: Preserve Promise job ordering across calls 2026-05-22 01:56:57 +02:00
syntax LibJS: Allow parenthesized dynamic import under new 2026-05-22 14:30:35 +02:00
add-values-to-primitive.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
arguments-callee.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
arguments-object.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
arguments-shorthand-property.js LibJS: Materialize arguments object for shorthand { arguments } 2026-04-27 08:04:11 +02:00
asm-call-this-binding.js LibJS: Call RawNativeFunction directly from asm Call 2026-04-15 15:57:48 +02:00
assignment-target-type.js LibJS: Fix AssignmentTargetType for NewExpression and strict mode 2026-03-13 13:08:22 -05:00
async-this-value.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
automatic-semicolon-insertion.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
bitwise-double-coercion.js LibJS: Re-box double arithmetic results as Int32 when possible 2026-03-19 09:42:04 +01:00
break-continue-syntax-errors.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
comments-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
computed-property-key-evaluation-order.js LibJS: Fix evaluation order of computed property keys in object literals 2026-02-09 01:23:48 +01:00
computed-property-sideeffects.js LibJS: Fix evaluation order of computed property keys in object literals 2026-02-09 01:23:48 +01:00
computed-property-throws.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
const-declaration-missing-initializer.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
const-reassignment.js LibJS: Fix destructured primitive string const loops 2026-05-22 01:56:57 +02:00
copy-this-to-local.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
custom-@@hasInstance.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
custom-@@toPrimitive.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
custom-@@toStringTag.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
debugger-statement.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
destructured-parameter-locals.js Tests/LibJS: Add tests for destructured parameter locals 2026-02-10 02:05:20 +01:00
destructuring-assignment-with-expression-defaults.js LibJS: Evaluate object destructuring targets before GetV 2026-05-22 01:56:57 +02:00
dictionary-delete-caching.js LibJS: Keep dictionary-mode shapes cacheable after property deletion 2026-01-27 10:58:39 +01:00
dictionary-shape-stress.js LibJS: Compact Shape property table to a sorted flat array 2026-05-14 19:59:40 +02:00
duplicated-variable-declarations.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
empty-statements.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
eval-aliasing.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
eval-basic.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
eval-catch-redeclare.js LibJS: Fix var declarations in direct eval inside catch blocks 2026-05-15 10:01:08 +02:00
eval-global-identifier-optimization.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
eval-redeclaration.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
evaluation-order.js LibJS: Copy object of member expression to preserve evaluation order 2026-03-22 15:40:38 +01:00
exception-in-catch-block.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
exception-ReferenceError.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
exponentiation-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
for-loop-per-iteration-env-bug.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
for-of-syntax-errors.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
function-constructor.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
gc-deeply-nested-object-graph.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
global-declaration-instantiation-error-skips-evaluation.js LibJS: Check result of GlobalDeclarationInstantiation before evaluating 2026-02-19 12:02:50 +01:00
global-object-getter-setter-this-value.js LibJS: Pass the global object as receiver in GetGlobal 2026-02-08 20:59:20 +01:00
global-var-let-const.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
ic-non-extensible-object.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
if-statement-function-declaration.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
indexed-access-prototype-indirection.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
indexed-access-stress.js LibJS: Fast-path safe writes into holey array holes 2026-04-09 20:06:42 +02:00
indexed-access-string-object.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
inline-cache-edge-cases.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
inline-cache-stress.js LibJS: Handle cached accessors without getter or setter 2026-05-22 01:56:57 +02:00
int32-mul-strict-equals.js AsmIntGen: Fix aarch64 mul32_overflow leaving garbage in upper 32 bits 2026-03-08 23:04:55 +01:00
invalid-lhs-in-assignment.js LibJS: Preserve strict unresolvable assignment references 2026-05-22 14:30:35 +02:00
labels.js LibJS: Hoist sloppy labelled function declarations 2026-05-22 01:56:57 +02:00
let-scoping.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
new-expression.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
non-writable-assignment.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
null-or-undefined-access.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
numeric-literals-basic.js LibJS: Always consume exponent in decimal numeric literals 2026-02-24 09:39:42 +01:00
object-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-expression-__proto__.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-expression-computed-property.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-expression-numeric-property.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-getter-setter-shorthand.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-literal-caching.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-literal-numeric-keys.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-method-shorthand.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
object-rest-destructuring-assignment.js LibJS: Fix object rest destructuring with MemberExpression target 2026-02-09 01:23:48 +01:00
object-spread.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
ordinary-to-primitive.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
panic-reachability-audit.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
parseInt.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-declaration-in-single-statement-context.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-invalid-destructuring-assignment-target.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-line-terminators.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
parser-unary-associativity.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
permanently-screwed-by-eval.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
redefine-next-in-builtin-iterators.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
redefine-prototype-of-builtin-iterators.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
regexp-bare-astral-literal-lastindex.js LibRegex: Respect V8 astral literal lastIndex behavior 2026-03-27 17:32:19 +01:00
regexp-bounded-group-quantifier-regressions.js LibRegex: Avoid hitting backtrack limit for bounded grouped repetitions 2026-04-11 18:43:48 +02:00
regexp-duplicate-named-groups-nested.js LibRegex: Reject duplicate named groups in nested alternatives 2026-05-16 16:28:09 +02:00
regexp-greedy-builtin-classes-ignore-case.js LibRegex: Fix greedy \w and \W ignore-case handling 2026-03-27 17:32:19 +01:00
regexp-legacy-static-properties-initial.js LibJS: Return "" for empty legacy RegExp static properties 2026-05-16 16:28:09 +02:00
regexp-lookbehind-greedy-backtracking.js LibRegex: Fix backward greedy lookbehind backtracking 2026-03-27 17:32:19 +01:00
regexp-sticky-anchored-exec.js LibRegex: Anchor sticky matches at lastIndex 2026-03-29 16:06:57 +02:00
regexp-unicode-set-quantifier-backtracking.js LibRegex: Avoid backtracking limit in quantified mixed character classes 2026-05-16 16:28:09 +02:00
regexp-unicode-zero-width-surrogate-positions.js LibRegex: Keep empty-match surrogate candidates 2026-03-27 17:32:19 +01:00
return.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
runtime-error-call-stack-size.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
scope-local-eval-deopt.js LibJS: Preserve resolved assignment bindings 2026-05-22 01:56:57 +02:00
statement-with-many-labels.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
strict-mode-errors.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-basic.js LibJS: Fix destructured primitive string const loops 2026-05-22 01:56:57 +02:00
string-concatenation.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
string-escapes.js LibJS: Scope directive prologue octal tracking 2026-05-22 01:56:57 +02:00
string-rope-substrings.js LibJS: Use Substring for string slices 2026-04-11 00:35:36 +02:00
string-spread.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
super-computed-property-key.js LibJS: Remove outdated FIXME comments about ToPropertyKey ordering 2026-02-09 01:23:48 +01:00
switch-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
switch-break.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
switch-default-before-case.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
tagged-template-literal-with-this.js LibJS: Preserve this binding for tagged with identifiers 2026-02-09 01:23:48 +01:00
tagged-template-literals.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
template-literals.js LibJS: Reduce number of template literal op codes 2026-01-31 18:24:02 +01:00
test-common-tests.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
test-common.js LibWasm: Take call arguments and results on registers if possible 2026-02-02 14:11:49 +01:00
this-value-strict.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
this-value.js LibJS: Remove stale FIXME about sloppy-mode this in CallExpression 2026-02-08 20:59:20 +01:00
throw-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
to-number-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
to-number-exception.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-catch-finally-nested.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-catch-finally-return.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-catch-finally.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-finally-break.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-finally-continue.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
try-return-finally.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
unicode-identifier-continue.js LibJS+LibUnicode: Use LibUnicode as appropriate for lexing JavaScript 2026-04-19 10:39:26 +02:00
unicode-identifier-escape.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
update-expression-on-member-expression.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
update-expressions-basic.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
using-declaration.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
using-for-loops.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
var-many-declarators.js LibJS: Don't duplicate var-scoped declarations per bound identifier 2026-02-17 20:19:08 +01:00
var-multiple-declarator.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
var-scoping.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
var-shadow-in-default-param.js LibJS: Track var coordinates in var environments 2026-05-18 20:35:14 +02:00
variable-undefined.js LibJS: Move tests to /Tests/LibJS 2026-01-22 07:46:48 -05:00
with-basic.js LibJS: Preserve resolved assignment bindings 2026-05-22 01:56:57 +02:00