1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 19:08:10 +00:00
serenity/Userland/Libraries/LibJS/Tests
Linus Groh 433a23cfde LibJS: Fix array hole and string object indexing prototype indirection
This fixes two cases of indexed access (array holes, out-of-bounds
string object access) where we would not follow the prototype chain and
incorrectly return undefined:

    // Should be "a", returned undefined
    Object.setPrototypeOf([,], ["a"])[0]

    // Should be "a", returned undefined
    Object.setPrototypeOf(new String(""), new String("a"))[0]

The actual fix is simple, instead of returning early if the requested
index is past the string's length or within the indexed properties size
but has no value, we just continue the prototype chain traversal and get
correct behaviour from that.
2021-04-11 18:15:47 +02:00
..
builtins LibJS: Implement Object.create() 2021-04-10 21:00:04 +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 Libraries: Move to Userland/Libraries/ 2021-01-12 12:17:46 +01: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