Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Object.getOwnPropertyNames and Object.getOwnPropertySymbols #1606

Merged

Conversation

kevinputera
Copy link
Contributor

@kevinputera kevinputera commented Oct 1, 2021

Scope

This Pull Request partially fixes/closes #1580.

In this PR, I implemented Object.getOwnPropertyNames and Object.getOwnPropertySymbols. Originally I planned to open separate PRs for each of the missing method listed in #1580, but ended up implementing these two methods in one PR since they are very much alike.

I still plan to work on Object.fromEntries and Object.hasOwn in separate PRs, though. Please let me know in case it's preferred to have the implementation of these four methods in this PR instead!

Testing

There are several failing conformance tests, which are due to the following:

  • Proxy not defined (I'm guessing it's not implemented yet?)
  • Object.getOwnPropertyNames(this) returning slightly different set of properties from expected:
    • Expected: Array,Boolean,Date,Date,Error,EvalError,Function,Infinity,JSON,Math,NaN,Number,Object,RangeError,ReferenceError,RegExp,String,SyntaxError,TypeError,URIError,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,eval,isFinite,isNaN,parseFloat,parseInt,undefined
    • Returned: Array,BigInt,Boolean,Date,Error,EvalError,Function,Infinity,JSON,Map,Math,NaN,Number,Object,RangeError,ReferenceError,Reflect,RegExp,Set,String,Symbol,SyntaxError,TypeError,URIError,console,globalThis,isFinite,isNaN,parseFloat,parseInt,undefined
  • test/built-ins/Object/getOwnPropertySymbols/order-after-define-property.js failing with Uncaught "TypeError": "can't convert symbol to string". I think this has something to do with calling [Symbol("a")].toString(), but I'm not exactly sure. Anyhow, I tried editing the test such that no string conversion happens, and the test passed.

On another note, should I also write some custom tests in the builtins/object/tests.rs file?

@kevinputera
Copy link
Contributor Author

Conformance tests

Before

Results:
Total tests: 80930
Passed tests: 33180
Ignored tests: 15898
Failed tests: 31852 (panics: 0)
Conformance: 41.00%

After

Total tests: 80930
Passed tests: 33301
Ignored tests: 15898
Failed tests: 31731 (panics: 0)
Conformance: 41.15%

Copy link
Member

@jedel1043 jedel1043 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just some recommendations to improve the code. Aside from that, looks good!

boa/src/builtins/object/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/object/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/object/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/object/mod.rs Outdated Show resolved Hide resolved
boa/src/builtins/object/mod.rs Outdated Show resolved Hide resolved
@jedel1043
Copy link
Member

Test262 conformance changes:

Test result master count PR count difference
Total 80,930 80,930 0
Passed 33,192 33,313 +121
Ignored 15,898 15,898 0
Failed 31,840 31,719 -121
Panics 0 0 0
Conformance 41.01% 41.16% +0.15%
Fixed tests (121):
test/intl402/Date/prototype/this-value-non-date.js [strict mode] (previously Failed)
test/intl402/Date/prototype/this-value-non-date.js (previously Failed)
test/language/computed-property-names/object/method/string.js [strict mode] (previously Failed)
test/language/computed-property-names/object/method/string.js (previously Failed)
test/language/computed-property-names/object/method/number.js [strict mode] (previously Failed)
test/language/computed-property-names/object/method/number.js (previously Failed)
test/language/computed-property-names/basics/string.js [strict mode] (previously Failed)
test/language/computed-property-names/basics/string.js (previously Failed)
test/language/computed-property-names/basics/number.js [strict mode] (previously Failed)
test/language/computed-property-names/basics/number.js (previously Failed)
test/language/expressions/delete/S11.4.1_A5.js [strict mode] (previously Failed)
test/language/expressions/object/computed-property-evaluation-order.js [strict mode] (previously Failed)
test/language/expressions/object/computed-property-evaluation-order.js (previously Failed)
test/built-ins/Function/property-order.js [strict mode] (previously Failed)
test/built-ins/Function/property-order.js (previously Failed)
test/built-ins/Object/property-order.js [strict mode] (previously Failed)
test/built-ins/Object/property-order.js (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-16.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-16.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-4.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-4.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/S15.2.3.4_A1_T1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/S15.2.3.4_A1_T1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-39.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-39.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/name.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/name.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-3-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-3-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-50.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-50.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/order-after-define-property.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/order-after-define-property.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-5.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-5.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-6.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-6.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-3.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-3.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-49.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-49.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-38.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-38.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-44.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-44.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/non-object-argument-valid.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/non-object-argument-valid.js (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-14.js [strict mode] (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-14.js (previously Failed)
test/built-ins/Object/create/properties-arg-to-object.js [strict mode] (previously Failed)
test/built-ins/Object/create/properties-arg-to-object.js (previously Failed)
test/built-ins/Object/create/properties-arg-to-object-bigint.js [strict mode] (previously Failed)
test/built-ins/Object/create/properties-arg-to-object-bigint.js (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-37.js [strict mode] (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-37.js (previously Failed)
test/built-ins/Object/defineProperty/15.2.3.6-4-600.js [strict mode] (previously Failed)
test/built-ins/Object/defineProperty/15.2.3.6-4-600.js (previously Failed)
test/built-ins/Object/assign/Override.js [strict mode] (previously Failed)
test/built-ins/Object/assign/Override.js (previously Failed)
test/built-ins/Object/assign/Override-notstringtarget.js [strict mode] (previously Failed)
test/built-ins/Object/assign/Override-notstringtarget.js (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/name.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/name.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/length.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/length.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/non-object-argument-valid.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/non-object-argument-valid.js (previously Failed)
test/built-ins/JSON/stringify/replacer-function-wrapper.js [strict mode] (previously Failed)
test/built-ins/JSON/stringify/replacer-function-wrapper.js (previously Failed)
test/built-ins/JSON/parse/reviver-wrapper.js [strict mode] (previously Failed)
test/built-ins/JSON/parse/reviver-wrapper.js (previously Failed)

@jedel1043
Copy link
Member

I still plan to work on Object.fromEntries and Object.hasOwn in separate PRs, though. Please let me know in case it's preferred to have the implementation of these four methods in this PR instead

Smaller diffs are better for first contributions. This allows us to review and merge ASAP.

On another note, should I also write some custom tests in the builtins/object/tests.rs file?

Please do so! We are currently lacking a lot of tests so they are always appreciated :)

@Razican
Copy link
Member

Razican commented Oct 1, 2021

Thank you very much for the contribution!!

It's interesting how Map for example isn't expected. I understand we are missing stuff (such as the Proxyobject), but I would expect that all of the ones we show are expected :/

@kevinputera
Copy link
Contributor Author

@jedel1043 Thanks a lot for helping review this!

Smaller diffs are better for first contributions. This allows us to review and merge ASAP.

Sure, sounds great 👍

Please do so! We are currently lacking a lot of tests so they are always appreciated :)

Alright, I'll write some soon!

@kevinputera
Copy link
Contributor Author

Thank you very much for the contribution!!

@Razican no problem!

It's interesting how Map for example isn't expected. I understand we are missing stuff (such as the Proxyobject), but I would expect that all of the ones we show are expected :/

Indeed, I was wondering about the same thing... I don't think the following provides much value since it seems that boa tries to stick to the spec as much as possible, but when running the following code on the browser (I use firefox):

const returned = "Array,BigInt,Boolean,Date,Error,EvalError,Function,Infinity,JSON,Map,Math,NaN,Number,Object,RangeError,ReferenceError,Reflect,RegExp,Set,String,Symbol,SyntaxError,TypeError,URIError,console,globalThis,isFinite,isNaN,parseFloat,parseInt,undefined".split(",");
for (let ret of returned) {
  if (!Object.getOwnPropertyNames(this).includes(ret)) {
    console.log("not included:", ret);
  }
}

I don't see any output in the console, which seems to suggest that boa's Object.getOwnPropertyNames(this) return value is a subset of firefox javascript engine's.

@kevinputera kevinputera closed this Oct 2, 2021
@kevinputera kevinputera reopened this Oct 2, 2021
@kevinputera
Copy link
Contributor Author

Test262 conformance changes:

Test result master count PR count difference
Total 80,930 80,930 0
Passed 33,192 33,313 +121
Ignored 15,898 15,898 0
Failed 31,840 31,719 -121
Panics 0 0 0
Conformance 41.01% 41.16% +0.15%
Fixed tests (121):

@jedel1043 just curious, is there a way for me to recreate this output easily?

@jedel1043
Copy link
Member

jedel1043 commented Oct 2, 2021

Yeah, the workflow has an "EcmaScript official test suite" check with exactly that. For first contributions we have to manually run the workflow but after the first contribution you can just check that section to see the number of fixed and broken tests

@jedel1043 jedel1043 added this to the v0.14.0 milestone Oct 2, 2021
@jedel1043 jedel1043 added builtins PRs and Issues related to builtins/intrinsics enhancement New feature or request labels Oct 2, 2021
@jedel1043
Copy link
Member

jedel1043 commented Oct 2, 2021

The "update comment" job of that check gives you a nifty table that you can copy-paste as a comment:

Test262 conformance changes:

Test result master count PR count difference
Total 80,930 80,930 0
Passed 33,192 33,313 +121
Ignored 15,898 15,898 0
Failed 31,840 31,719 -121
Panics 0 0 0
Conformance 41.01% 41.16% +0.15%
Fixed tests (121):
test/intl402/Date/prototype/this-value-non-date.js [strict mode] (previously Failed)
test/intl402/Date/prototype/this-value-non-date.js (previously Failed)
test/language/computed-property-names/object/method/string.js [strict mode] (previously Failed)
test/language/computed-property-names/object/method/string.js (previously Failed)
test/language/computed-property-names/object/method/number.js [strict mode] (previously Failed)
test/language/computed-property-names/object/method/number.js (previously Failed)
test/language/computed-property-names/basics/string.js [strict mode] (previously Failed)
test/language/computed-property-names/basics/string.js (previously Failed)
test/language/computed-property-names/basics/number.js [strict mode] (previously Failed)
test/language/computed-property-names/basics/number.js (previously Failed)
test/language/expressions/delete/S11.4.1_A5.js [strict mode] (previously Failed)
test/language/expressions/object/computed-property-evaluation-order.js [strict mode] (previously Failed)
test/language/expressions/object/computed-property-evaluation-order.js (previously Failed)
test/built-ins/Function/property-order.js [strict mode] (previously Failed)
test/built-ins/Function/property-order.js (previously Failed)
test/built-ins/Object/property-order.js [strict mode] (previously Failed)
test/built-ins/Object/property-order.js (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-16.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptor/15.2.3.3-4-16.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-46.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-4.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-43.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-4.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-4.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/S15.2.3.4_A1_T1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/S15.2.3.4_A1_T1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-39.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-39.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-4.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/name.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/name.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-5.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-45.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-3-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-3-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-50.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-50.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/order-after-define-property.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/order-after-define-property.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-5.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-1-5.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-47.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-40.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-6.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-6.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-3.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-36.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-42.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-41.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-3.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-3.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-37.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-0-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-48.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-49.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-49.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-2.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-2-2.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-1.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-b-1.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-38.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-38.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-44.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/15.2.3.4-4-44.js (previously Failed)
test/built-ins/Object/getOwnPropertyNames/non-object-argument-valid.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyNames/non-object-argument-valid.js (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-14.js [strict mode] (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-14.js (previously Failed)
test/built-ins/Object/create/properties-arg-to-object.js [strict mode] (previously Failed)
test/built-ins/Object/create/properties-arg-to-object.js (previously Failed)
test/built-ins/Object/create/properties-arg-to-object-bigint.js [strict mode] (previously Failed)
test/built-ins/Object/create/properties-arg-to-object-bigint.js (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-37.js [strict mode] (previously Failed)
test/built-ins/Object/create/15.2.3.5-4-37.js (previously Failed)
test/built-ins/Object/defineProperty/15.2.3.6-4-600.js [strict mode] (previously Failed)
test/built-ins/Object/defineProperty/15.2.3.6-4-600.js (previously Failed)
test/built-ins/Object/assign/Override.js [strict mode] (previously Failed)
test/built-ins/Object/assign/Override.js (previously Failed)
test/built-ins/Object/assign/Override-notstringtarget.js [strict mode] (previously Failed)
test/built-ins/Object/assign/Override-notstringtarget.js (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertyDescriptors/symbols-included.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-with-description.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/object-contains-symbol-property-without-description.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/name.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/name.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/length.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/length.js (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/non-object-argument-valid.js [strict mode] (previously Failed)
test/built-ins/Object/getOwnPropertySymbols/non-object-argument-valid.js (previously Failed)
test/built-ins/JSON/stringify/replacer-function-wrapper.js [strict mode] (previously Failed)
test/built-ins/JSON/stringify/replacer-function-wrapper.js (previously Failed)
test/built-ins/JSON/parse/reviver-wrapper.js [strict mode] (previously Failed)
test/built-ins/JSON/parse/reviver-wrapper.js (previously Failed)

@kevinputera
Copy link
Contributor Author

Yeah, the workflow has an "EcmaScript official test suite" check with exactly that. For first contributions we have to manually run the workflow but after the first contribution you can just check that section to see the number of fixed and broken tests
The "update comment" job of that check gives you a nifty table that you can copy-paste as a comment:

Ah okay got it, thanks!

Copy link
Member

@jedel1043 jedel1043 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me. Good work!

@jedel1043 jedel1043 requested a review from raskad October 2, 2021 09:12
@jedel1043
Copy link
Member

We normally wait for two reviews in order to merge a PR, just in case the first reviewer missed something, so you just need to wait a bit of time until another maintainer approves it and it should be merged asap :)

@kevinputera
Copy link
Contributor Author

We normally wait for two reviews in order to merge a PR, just in case the first reviewer missed something, so you just need to wait a bit of time until another maintainer approves it and it should be merged asap :)

Sure, no problem. Thanks for the help!

Copy link
Member

@Razican Razican left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me, let's merge! :)

@Razican Razican merged commit bda00b0 into boa-dev:master Oct 2, 2021
@jedel1043 jedel1043 added the Hacktoberfest Hacktoberfest 2021 - https://hacktoberfest.digitalocean.com label Oct 2, 2021
@kevinputera kevinputera deleted the kevinputera/object-get-own-property branch October 3, 2021 02:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
builtins PRs and Issues related to builtins/intrinsics enhancement New feature or request Hacktoberfest Hacktoberfest 2021 - https://hacktoberfest.digitalocean.com
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Implement missing static Object methods
3 participants