ladybird/Userland/Libraries/LibJS
Timothy Flynn 22fdcfbc50 LibJS: Include identifier information in nullish property write access
When a PutById / PutByValue bytecode operation results in accessing a
nullish object, we now include the name of the property and the object
being accessed in the exception message (if available). This should make
it easier to debug live websites.

For example, the following errors would all previously produce a generic
error message of "ToObject on null or undefined":

  > foo = null
  > foo.bar = 1
  Uncaught exception:
  [TypeError] Cannot access property "bar" on null object "foo"
      at <unknown>

  > foo = { bar: undefined }
  > foo.bar.baz = 1
  Uncaught exception:
  [TypeError] Cannot access property "baz" on undefined object "foo.bar"
      at <unknown>

Note we certainly don't capture all possible nullish property write
accesses here. This just covers cases I've seen most on live websites;
we can cover more cases as they arise.
2024-03-29 21:57:19 +01:00
..
Bytecode LibJS: Include identifier information in nullish property write access 2024-03-29 21:57:19 +01:00
Contrib/Test262 Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Heap LibJS: Add ConservativeVector<T> 2024-02-22 16:44:54 +01:00
Runtime LibJS: Include identifier information in nullish property read access 2024-03-29 21:57:19 +01:00
Tests LibJS: Include identifier information in nullish property write access 2024-03-29 21:57:19 +01:00
AST.cpp LibJS: Don't use null DFS for binding_name parameters in ClassExpression 2024-02-24 15:06:52 -07:00
AST.h LibJS: Don't use null DFS for binding_name parameters in ClassExpression 2024-02-24 15:06:52 -07:00
CMakeLists.txt Revert "LibJS/Bytecode: Bring back the bytecode optimization pipeline" 2024-03-06 08:39:29 +01:00
Console.cpp LibJS: Make ExecutionContext::function_name a GCPtr<PrimitiveString> 2023-11-29 09:48:18 +01:00
Console.h LibJS: Begin implementing console.dir 2023-06-22 06:46:27 +02:00
CyclicModule.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
CyclicModule.h LibJS: Update import referrer's [[LoadedModules]] in place 2023-12-03 20:46:55 +01:00
Forward.h LibJS: Make PromiseJob store callback as a HeapFunction 2024-03-26 05:47:24 +01:00
Lexer.cpp LibJS: Lex 1/2/3-byte tokens without HashMap lookups 2024-03-24 13:28:24 +01:00
Lexer.h LibJS: Lex 1/2/3-byte tokens without HashMap lookups 2024-03-24 13:28:24 +01:00
MarkupGenerator.cpp LibJS: Use OrderedHashMap for the Shape property table 2023-09-17 21:00:11 +02:00
MarkupGenerator.h LibJS: Fix redundancy-detection when printing raw values 2023-06-15 08:09:16 +02:00
Module.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Module.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ModuleLoading.h LibJS+LibWeb: Another round of bringing module loading closer to spec 2023-12-03 20:46:55 +01:00
Parser.cpp LibJS: Don't use null DFS in {Import,Export}Entry 2024-02-24 15:06:52 -07:00
Parser.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ParserError.cpp Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
ParserError.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
Position.h LibJS: Make line-and-column resolution fast for large minified JS 2023-09-12 17:21:42 +02:00
Print.cpp LibJS+LibWeb: Implement resizable ArrayBuffer support for TypedArray 2023-12-26 11:16:10 +01:00
Print.h Everywhere: Remove the AK:: qualifier from Stream usages 2023-02-13 00:50:07 +00:00
SafeFunction.h LibJS: Add GC graph dumper 2023-08-17 18:27:02 +02:00
Script.cpp LibJS: Segregate GC-allocated objects by type 2023-11-19 12:10:31 +01:00
Script.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SourceCode.cpp LibJS: Make line-and-column resolution fast for large minified JS 2023-09-12 17:21:42 +02:00
SourceCode.h LibJS: Make line-and-column resolution fast for large minified JS 2023-09-12 17:21:42 +02:00
SourceRange.h Everywhere: Rename {Deprecated => Byte}String 2023-12-17 18:25:10 +03:30
SourceTextModule.cpp LibJS: Don't use null DFS in {Import,Export}Entry 2024-02-24 15:06:52 -07:00
SourceTextModule.h LibJS: Always allocate ExecutionContext objects on the malloc heap 2023-11-29 09:48:18 +01:00
SyntaxHighlighter.cpp LibSyntax+Userland: Make LibSyntax not depend on LibGUI 2023-08-29 07:57:39 -04:00
SyntaxHighlighter.h LibSyntax: Teach each highlighter about it's comment syntax 2022-11-27 18:28:43 -07:00
SyntheticModule.cpp LibJS: Support LoadRequestedModule AO on SyntheticModule records 2023-12-03 20:46:55 +01:00
SyntheticModule.h LibJS: Support LoadRequestedModule AO on SyntheticModule records 2023-12-03 20:46:55 +01:00
Token.cpp Everywhere: Use to_number<T> instead of to_{int,uint,float,double} 2023-12-23 20:41:07 +01:00
Token.h LibJS: Make Token::m_message a StringView 2024-03-24 13:28:24 +01:00