1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-29 03:52:12 +00:00
serenity/Userland/Libraries/LibJS
Andreas Kling 77fa33e61a LibJS: Finish implementing mapped arguments exotic objects :^)
Now that the Object rewrite is in place, we have enough tools to
implement the mapped `arguments` propreties according to spec.

The basic mechanism is that the `arguments` object installs a hidden
parameter mapping object that property accesses get filtered through.
This is how accessing numeric properties on `arguments` are proxied
to the named identifier in the function scope.

When `arguments` is instantiated, getters and setters are created
for all the numeric properties on the object that correspond to
function arguments. These getters and setters can be deleted from the
object. This is all pretty intricate, so refer to the spec for details.

Note that the `arguments` object itself is still lazily instantiated
on first access within a function. This is non-conforming, and we'll
have to revisit this once we get around to improving function calls.
2021-07-05 02:38:31 +02:00
..
Bytecode LibJS: Remove unnecessary value_or() from get() 2021-07-05 00:03:25 +02:00
Heap LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
Runtime LibJS: Finish implementing mapped arguments exotic objects :^) 2021-07-05 02:38:31 +02:00
Tests LibJS: Implement most of String.prototype.replaceAll 2021-07-05 01:10:43 +01:00
AST.cpp LibJS: Remove unnecessary value_or() from get() 2021-07-05 00:03:25 +02:00
AST.h LibJS: Make SuperCall a proper AST node and clean up evaluation 2021-07-02 19:39:09 +02:00
CMakeLists.txt LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
Console.cpp LibJS: Rename CallFrame => ExecutionContext 2021-06-24 19:28:00 +02:00
Console.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Forward.h LibJS: Implement most of String.prototype.replaceAll 2021-07-05 01:10:43 +01:00
Interpreter.cpp LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
Interpreter.h LibJS: Drop "Record" suffix from all the *Environment record classes 2021-07-01 12:28:57 +02:00
Lexer.cpp LibJS: Make a slash after a curly close mean not-division 2021-07-02 14:59:03 +02:00
Lexer.h LibJS+LibCrypto: Allow '_' as a numeric literal separator :^) 2021-06-26 16:30:35 +02:00
MarkupGenerator.cpp LibJS: Rewrite most of Object for spec compliance :^) 2021-07-04 22:07:36 +01:00
MarkupGenerator.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
Parser.cpp LibJS: Make SuperCall a proper AST node and clean up evaluation 2021-07-02 19:39:09 +02:00
Parser.h LibJS: Correct behaviour of direct vs. indirect eval 2021-06-23 09:38:33 +01:00
SourceRange.h Everything: Move to SPDX license identifiers in all files. 2021-04-22 11:22:27 +02:00
SyntaxHighlighter.cpp LibWeb+LibSyntax: Implement nested syntax highlighters 2021-06-07 14:45:49 +04:30
SyntaxHighlighter.h LibWeb+LibSyntax: Implement nested syntax highlighters 2021-06-07 14:45:49 +04:30
Token.cpp LibJS+LibCrypto: Allow '_' as a numeric literal separator :^) 2021-06-26 16:30:35 +02:00
Token.h Everywhere: Use s.unverwerth@serenityos.org :^) 2021-05-29 12:30:08 +01:00