Andreas Kling
f86e241699
LibJS: Object.getOwnPropertyNames() should enumerate String's .length
...
We were incorrectly aborting property name enumeration after generating
names for all the indexable properties in the underlying string.
2021-06-19 11:46:08 +02:00
Andreas Kling
686213c2b8
LibJS: Make Object.getOwnPropertyDescriptor() work on String subscripts
...
String objects are a bit special since the indexed properties are
overridden by the contents of the underlying PrimitiveString.
getOwnPropertyDescriptor() was not taking this into account, and would
instead return undefined when asked about an indexed property in a
String object.
2021-06-19 11:34:19 +02:00
Idan Horowitz
c619ad4fec
LibJS: Allow no-op define property calls on non-configurable objects
...
This brings us slightly closer to the specification's 10.1.6.3
ValidateAndApplyPropertyDescriptor.
2021-06-16 12:57:48 +01:00
Linus Groh
33eea1f722
LibJS: Fix Object.prototype.valueOf() behavior
...
No idea why it was implemented like this, but a value_of() call on the
coerced object is not part of the spec. Also added some tests.
2021-06-13 01:06:36 +01:00
Idan Horowitz
bd9e20ef79
LibJS: Add the Object.getOwnPropertySymbols method
2021-06-12 18:39:23 +01:00
Idan Horowitz
a2da3f97ef
LibJS: Remove argument count checks in Object.* methods
...
These are inconsistent with the specification.
2021-06-12 18:39:23 +01:00
Linus Groh
7e1bffdeb8
LibJS: Implement Object.assign()
2021-06-12 11:36:17 +01:00
Linus Groh
4e555fae22
LibJS: Add missing cyclic prototype check to Object.setPrototypeOf()
2021-06-07 22:56:16 +01:00
Andreas Kling
3ee092cd0c
LibJS: Implement Object.hasOwn() :^)
...
This is currently a TC39 Stage 2 proposal, but let's go for it!
https://github.com/tc39/proposal-accessible-object-hasownproperty
I wrote the C++, @linusg found bugs and wrote the test.
2021-05-18 11:18:19 +02:00
Linus Groh
7af1d2c170
LibJS: Make Object.getOwnPropertyDescriptor() work with string indexed property
...
E.g. for "0" we have to contruct a PropertyName with Type::Number so it
looks in the indexed properties as expected.
2021-04-20 18:53:07 +02:00
Linus Groh
614bad86bc
LibJS: Fix Object.getOwnPropertyDescriptor() attributes for numeric property
...
We were getting the attributes of the existing value and then
immediately assigned the default attributes instead.
2021-04-20 18:42:10 +02:00
Linus Groh
ac3e7ef791
LibJS: Fix crash in Object.{freeze,seal}() with indexed properties
...
This was failing to take two things into account:
- When constructing a PropertyName from a value, it won't automatically
convert to Type::Number for something like string "0", even though
that's how things work internally, since indexed properties are stored
separately. This will be improved in a future patch, it's a footgun
and should happen automatically.
- Those can't be looked up on the shape, we have to go through the
indexed properties instead.
Additionally it now operates on the shape or indexed properties directly
as define_property() was overly strict and would throw if a property was
already non-configurable.
Fixes #6469 .
2021-04-20 09:38:22 +02:00
Idan Horowitz
fff7aceb9d
LibJS: Accept symbol property in ObjectPrototype::hasOwnProperty
...
This is used by discord.com and allowed by the specification
(https://tc39.es/ecma262/#sec-topropertykey )
2021-04-16 19:22:29 +02:00
Linus Groh
9cd010167a
LibJS: Implement Object.create()
2021-04-10 21:00:04 +02:00
Linus Groh
da8a35a79e
LibJS: Implement Object.defineProperties()
2021-04-10 21:00:04 +02:00
Linus Groh
f3264b0dbd
LibJS: Implement Object.isFrozen() and Object.isSealed()
2021-04-07 09:05:01 +02:00
Linus Groh
9af07c7803
LibJS: Implement Object.freeze() and Object.seal()
2021-04-07 09:05:01 +02:00
Andreas Kling
13d7c09125
Libraries: Move to Userland/Libraries/
2021-01-12 12:17:46 +01:00