1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 03:37:34 +00:00
serenity/Userland/Libraries/LibJS/Tests
Linus Groh da177c6517 LibJS: Make Errors fully spec compliant
The previous handling of the name and message properties specifically
was breaking websites that created their own error types and relied on
the error prototype working correctly - not assuming an JS::Error this
object, that is.

The way it works now, and it is supposed to work, is:

- Error.prototype.name and Error.prototype.message just have initial
  string values and are no longer getters/setters
- When constructing an error with a message, we create a regular
  property on the newly created object, so a lookup of the message
  property will either get it from the object directly or go though the
  prototype chain
- Internal m_name/m_message properties are no longer needed and removed

This makes printing errors slightly more complicated, as we can no
longer rely on the (safe) internal properties, and cannot trust a
property lookup either - get_without_side_effects() is used to solve
this, it's not perfect but something we can revisit later.

I did some refactoring along the way, there was some really old stuff in
there - accessing vm.call_frame().arguments[0] is not something we (have
to) do anymore :^)

Fixes #6245.
2021-04-12 09:38:57 +02:00
..
builtins LibRegex: Generate a 'Compare' op for empty character classes 2021-04-12 08:54:58 +02:00
classes LibJS: Check if class extends value has a valid prototype 2021-01-24 00:09:18 +01:00
functions Only apply auto-naming of function expressions based on syntax 2021-03-22 12:44:07 +01:00
iterators Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
loops LibJS: Implicitly break for..in loop if the RHS result is nullish 2021-04-10 21:00:04 +02:00
operators LibJS: Improve correctness of rounding and bitwise operations 2021-02-05 09:38:45 +01:00
add-values-to-primitive.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
arguments-callee.js LibJS: Add a basic test for arguments.callee 2021-03-17 21:54:52 +01:00
arguments-object.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
automatic-semicolon-insertion.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
break-continue-syntax-errors.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
comments-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
computed-property-throws.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
const-declaration-missing-initializer.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
const-reassignment.js LibJS: Re-enable "reassignment to const" test 2021-02-26 16:59:37 +01:00
custom-@@hasInstance.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
custom-@@toPrimitive.js LibJS: Support @@toPrimitive in ToPrimitive abstract operation 2021-03-03 11:04:06 +01:00
custom-@@toStringTag.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
debugger-statement.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
empty-statements.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
eval-basic.js LibJS: Actually use eval() in non-string arg eval test 2021-03-17 21:28:14 +01:00
exception-in-catch-block.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
exception-ReferenceError.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
exponentiation-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
if-statement-function-declaration.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
indexed-access-prototype-indirection.js LibJS: Fix array hole and string object indexing prototype indirection 2021-04-11 18:15:47 +02:00
indexed-access-string-object.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
invalid-lhs-in-assignment.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
labels.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
let-scoping.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
new-expression.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
numeric-literals-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
object-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
object-expression-computed-property.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
object-getter-setter-shorthand.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
object-method-shorthand.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
object-spread.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
ordinary-to-primitive.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
parseInt.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
parser-declaration-in-single-statement-context.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
parser-line-terminators.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
parser-unary-associativity.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
program-strict-mode.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
return.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
runtime-error-call-stack-size.js LibJS: Make Errors fully spec compliant 2021-04-12 09:38:57 +02:00
strict-mode-blocks.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
strict-mode-errors.js LibJS: Use empty value for Reference unresolvable state, not undefined 2021-04-02 22:24:30 +02:00
string-escapes.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
string-spread.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
switch-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
switch-break.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
tagged-template-literals.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
template-literals.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
test-common-tests.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
test-common.js LibJS: Provide 'details' key in results object for duplicate test 2021-03-31 23:59:21 +02:00
throw-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
to-number-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
to-number-exception.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
try-catch-finally-nested.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
try-catch-finally-return.js LibJS: Fix returning from try statement 2021-04-03 16:34:34 +02:00
try-catch-finally.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
update-expression-on-member-expression.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
update-expressions-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
use-strict-directive.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
var-multiple-declarator.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
var-scoping.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
variable-undefined.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00
with-basic.js Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01:00