ladybird/Tests/LibJS/AST/input
Andreas Kling e65e85cb8c LibJS: Materialize arguments object for shorthand { arguments }
The parser only set `might_need_arguments_object` when an `arguments`
or `eval` Identifier went through `consume()`, but shorthand object
properties create the reference via `make_identifier()` directly. As
a result `function f() { return { arguments } }` allocated an
`arguments` local, never initialized it, and crashed at runtime when
the property was read.

Fall back to scope-driven detection: if scope analysis allocated a
non-lexical `arguments` local for the function, treat it as a real
arguments-object reference and emit `CreateArguments`. Skip the
fallback when a function declaration named `arguments` claims the
local, since that local belongs to the function, not the arguments
object.

Add a runtime test covering shorthand inside a free function and a
method, plus a regression test for `({ eval } = ...)` to confirm
destructuring assignment doesn't accidentally trigger arguments
materialization.
2026-04-27 08:04:11 +02:00
..
arguments-object.js Tests/LibJS: Add test for parameter named "arguments" 2026-02-10 02:05:20 +01:00
arrow-destructuring-param.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
arrow-functions.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
assignment-targets.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
async-arrow-await.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
async-generator-method.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
async-generator-yield-name.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
await-expression-precedence.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
await-in-static-init.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
await-yield-arrow-in-static-init.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
bigint-property-key.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
binding-pattern-positions.js LibJS: Use natural source positions for parser-synthesized identifiers 2026-04-27 08:04:11 +02:00
binding-pattern-property-keys.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
catch-param-scope.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
class-extends-tagged-template.js LibJS: Add AST test for class extends with tagged template literal 2026-02-19 12:02:50 +01:00
class-field-edge-cases.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
class-keyword-method-names.js LibJS: Check lookahead before consuming async in static class method 2026-02-19 02:45:37 +01:00
class-scope.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
class-static-field.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
classes.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
closure-captures.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
closures.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
comma-resets-forbidden-tokens.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
control-flow.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
cover-initialized-name-destructuring.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
default-param-scope.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
destructured-parameter-locals.js Tests/LibJS: Add tests for destructured parameter locals 2026-02-10 02:05:20 +01:00
destructured-parameter-not-local.js Tests/LibJS: Add AST tests for non-local destructured params 2026-02-10 02:05:20 +01:00
destructuring.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
do-while-asi.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
eval-binding-pattern-no-arguments.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
eval-defeats-locals.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
eval-direct-vs-indirect.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
eval-direct.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
eval-in-arrow.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
eval-in-scope-chain.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
eval-indirect.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
eval-scope-chain-deep.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
eval-with-interaction.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
export-default.mjs Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
expressions.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
for-in-of-lhs-patterns.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
for-in-of-scoping.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
for-loop-init.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
for-of-rhs-precedence.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
function-declaration-hoisting.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
function-expressions.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
generators-and-async.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
global-vs-local-same-name.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
import-statement.mjs LibJS: Add AST test for import statement semicolon handling 2026-02-19 12:02:50 +01:00
label-and-break.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
labeled-function-declaration.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
let-identifier-for-loop.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
locals-and-globals.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
multiple-binding-forms.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
multiple-destructuring-parameters.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
named-function-expr-scope.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
nested-closures.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
nested-paren-expressions.js LibJS: Memoize failed arrow function attempts in Rust parser 2026-02-24 18:42:13 +01:00
new-target-default-param.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
numeric-literal-formatting.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
object-property-key-no-capture.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
object-shorthand.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
overflowing-integer-literals.js LibJS: Parse overflowing integer literals correctly 2026-02-19 02:45:37 +01:00
parameter-forms.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
private-identifier-access-patterns.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
private-names.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
property-key-arguments.js LibJS: Materialize arguments object for shorthand { arguments } 2026-04-27 08:04:11 +02:00
proto-destructuring-assignment.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
regex-after-block.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
regex-literals.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
rest-parameter-locals.js LibJS: Give rest-only parameters their argument index 2026-02-10 02:05:20 +01:00
return-asi-empty-statement.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
shadow-across-scopes.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
speculative-arrow-this-leak.js LibJS: Restore ancestor scope flags after failed arrow parsing 2026-02-24 09:39:42 +01:00
static-class-field.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
strict-mode.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
strict-reserved-word-identifier.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
super-in-method-params.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
super-property.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
switch-default.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
switch-scope.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
tagged-template-in-extends.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
tagged-template-literals.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
ternary-resets-forbidden-tokens.js Tests/LibJS: Import various tests developed alongside Rust pipeline 2026-02-24 09:39:42 +01:00
try-catch-scope.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
unicode-other-id-start.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
update-exponentiation.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
using-as-identifier-in-for.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
using-in-for-loop.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
var-after-property-name.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
var-shadow-in-default-param.js LibJS: Don't optimize body vars to locals when referenced in defaults 2026-02-19 02:45:37 +01:00
var-vs-let-hoisting.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
variable-scoping.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
with-defeats-locals.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
with-in-nested-scopes.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
with-statement.js Tests/LibJS: Add AST dump test cases 2026-02-10 02:05:20 +01:00
yield-await-function-names.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
yield-comma-expression.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00
yield-template-middle.js Tests/LibJS: Add a big pile of AST, bytecode, and runtime tests 2026-02-17 20:44:57 +01:00