Andreas Kling
2778d077e5
LibJS: Grow storage when adding a property to uniquely-shaped Object
...
Normally the storage would be expanded by set_shape() upon transition
to a new shape, but if the shape is already unique, there is no new
transition so we have to expand the storage manually.
2020-04-26 19:05:08 +02:00
Andreas Kling
f897c41092
LibJS: Implement basic support for the "delete" operator
...
It turns out "delete" is actually a unary op :)
This patch implements deletion of object properties, it doesn't yet
work for casually deleting properties from the global object.
When deleting a property from an object, we switch that object to
having a unique shape, no longer sharing shapes with others.
Once an object has a unique shape, it no longer needs to care about
shape transitions.
2020-04-26 15:51:07 +02:00
Linus Groh
38ba13e912
LibJS: Implement Object.is()
...
Basically === with two particularities: comparing NaN to itself is
considered equal and comparing +0 and -0 is not.
2020-04-26 13:53:05 +02:00
Kesse Jones
838127df35
LibJS: Add String.prototype.includes
2020-04-25 16:54:25 +02:00
Kesse Jones
b0ca174d49
LibJS: Add Array.prototype.find
2020-04-24 17:10:19 +02:00
Linus Groh
746dd5b190
LibJS: Implement computed properties in object expressions
2020-04-23 23:56:04 +02:00
Linus Groh
11728b7db5
LibJS: Implement 'in' operator
2020-04-23 19:38:13 +02:00
Linus Groh
396ecfa2d7
LibJS: Implement bitwise unsigned right shift operator (>>>)
2020-04-23 19:38:13 +02:00
Linus Groh
502d1f5165
LibJS: Implement bitwise right shift operator (>>)
2020-04-23 19:38:13 +02:00
Linus Groh
f0e7404480
LibJS: Implement bitwise left shift operator (<<)
2020-04-23 19:38:13 +02:00
Linus Groh
97366f4dd4
LibJS: Add Math.pow()
2020-04-23 19:38:13 +02:00
Kesse Jones
687096cadd
LibJS: Add Array.prototype.includes
2020-04-23 19:30:16 +02:00
Kesse Jones
6d308113b8
LibJS: Fix Array.prototype.indexOf fromIndex negative
...
If negative fromIndex considers displacement from the end of the array
without decreasing 1 of de size.
2020-04-23 11:06:10 +02:00
Linus Groh
7540203ae8
LibJS: Add isFinite()
2020-04-23 11:03:42 +02:00
Linus Groh
8ff2881b1a
LibJS: Let isNaN() with no argument return true, add tests
2020-04-23 11:03:42 +02:00
Linus Groh
418092a71a
LibJS: Implement Array length setter
2020-04-23 09:47:23 +02:00
Linus Groh
a1b820b11c
LibJS: Improve UpdateExpression::execute()
...
- Let undefined variables throw a ReferenceError by using
Identifier::execute() rather than doing variable lookup manually and
ASSERT()ing
- Coerce value to number rather than ASSERT()ing
- Make code DRY
- Add tests
2020-04-22 13:09:59 +02:00
Kesse Jones
b2305cb67d
LibJS: Add Array.prototype.lastIndexOf
2020-04-22 13:08:00 +02:00
Linus Groh
038051d205
LibJS: Parse while statements
2020-04-22 11:48:14 +02:00
Jack Karamanian
1fa0c7304d
LibJS: Implement Function.prototype.bind()
2020-04-21 12:23:07 +02:00
Linus Groh
9722cac9fe
LibJS: Let run-tests return 1 when not all tests pass
2020-04-20 22:44:13 +02:00
Andreas Kling
f78a92c5a9
LibJS: Remove default parameter from assertThrowsError() for now
...
We don't support these yet, and it broke all the tests. :^)
2020-04-20 20:33:21 +02:00
Linus Groh
cff68af965
LibJS: Add JSDoc to test-common.js
2020-04-20 17:31:49 +02:00
Kesse Jones
df6696f576
LibJS: Add Array.prototype.reverse
2020-04-20 17:26:46 +02:00
Kesse Jones
579975fd1e
LibJS: Add Array.prototype.indexOf
2020-04-20 11:55:18 +02:00
Linus Groh
d3e3f5b421
LibJS: Add tests for String.prototype.repeat()
2020-04-20 11:41:25 +02:00
Linus Groh
0718f216af
LibJS: Add assertThrowsError() test function
2020-04-20 11:38:01 +02:00
Andreas Kling
69566bd4d6
LibJS: Allow passing "js" flags to run-tests
...
This allows us to run "run-tests -g" for testing with GC after every
heap allocation. This may flush out bugs that would otherwise not
occur if GC'ing only occasionally.
2020-04-19 17:34:33 +02:00
Andreas Kling
afdba94f63
LibJS: Fix expectations in the function-TypeError.js test
...
They now match the new, more verbose error messages.
2020-04-19 14:51:47 +02:00
Kesse Jones
856ab9c600
LibJS: Add Array.prototype.slice
2020-04-19 02:09:06 +02:00
Stephan Unverwerth
bf5b251684
LibJS: Allow reserved words as keys in object expressions.
2020-04-18 22:23:20 +02:00
Stephan Unverwerth
cebb619f8e
LibJS: Fix parsing of IfStatement, fixes #1829
2020-04-18 14:04:24 +02:00
Linus Groh
d14ddb6461
LibJS: Implement nullish coalescing operator (??)
2020-04-18 12:34:13 +02:00
Kesse Jones
4931c0feda
LibJS: Add Array.prototype.concat
2020-04-17 16:14:28 +02:00
Stephan Unverwerth
63e1ea7819
LibJS: Add test for semicolon insertion ( #1828 )
2020-04-17 15:52:38 +02:00
Kesse Jones
b0b204822f
LibJS: Add String.prototype.substring
2020-04-16 18:47:24 +02:00
Kesse Jones
7725b1970e
LibJS: Add String.prototype.concat
2020-04-16 16:36:51 +02:00
Linus Groh
640a24dce8
LibJS: Remove outdated FIXME now that we have lexical environments
2020-04-16 09:41:07 +02:00
Linus Groh
cea950fd70
LibJS: Support empty values in array expression
2020-04-15 21:23:06 +02:00
Linus Groh
d30db07048
LibJS: Implement void operator
2020-04-15 19:12:51 +02:00
Linus Groh
a8406aa117
LibJS: Check length property of Array.prototype.join in its test
...
I assume this was copied from the Array.prototype.push() test :^)
2020-04-15 12:20:08 +02:00
Andreas Kling
ad2aac5fde
LibJS: Add Array.prototype.join()
...
And share the code with Array.prototype.toString() :^)
2020-04-15 10:06:01 +02:00
Andreas Kling
fa30355194
LibJS: Adding two values should convert them to primitives first
2020-04-15 09:48:25 +02:00
Kesse Jones
994f1a79ad
LibJS: Add String.prototype.{trim, trimStart, trimEnd} ( #1792 )
2020-04-15 08:47:40 +02:00
Linus Groh
1dee4d0049
LibJS: Redirect stderr to /dev/null when running js in run-tests
...
This "mutes" output from dbg() calls - which is not an issue inside
serenity itself but if the script is run on the host machine and stdout
and stderr are displayed in the same terminal window.
2020-04-14 18:38:55 +02:00
Linus Groh
823fb9d9aa
LibJS: Add missing load("test-common.js") to comments-basic.js
...
This fixes the test which is currently failing with
"ReferenceError: 'assert' not known".
2020-04-14 17:26:57 +02:00
Linus Groh
f7df521073
LibJS: Add Array.prototype.map()
2020-04-14 13:40:04 +02:00
Linus Groh
f03d005bc4
LibJS: Add Array.prototype.filter()
2020-04-14 13:40:04 +02:00
Linus Groh
866172a721
LibJS: Add Array.prototype.forEach()
2020-04-14 13:40:04 +02:00
Linus Groh
29253bf932
LibJS: Add Array.prototype.unshift()
2020-04-14 13:40:04 +02:00