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

Make Array.prototype methods spec compliant #1449

Merged
merged 2 commits into from
Aug 6, 2021

Conversation

HalidOdat
Copy link
Member

@HalidOdat HalidOdat commented Jul 31, 2021

Related to #577

It changes the following:

  • Make functions that should be deprecated/removed pub(crate) (.get_field, .set_property, .has_field, etc)
  • Make all Array.prototype methods spec compliant.
    • Array.prototype.map
    • Array.prototype.indexOf
    • Array.prototype.lastIndexOf
    • Array.prototype.find
    • Array.prototype.findIndex
    • Array.prototype.flat
    • Array.prototype.flatMap
    • Array.prototype.fill
    • Array.prototype.includes
    • Array.prototype.slice
    • Array.prototype.reduce
    • Array.prototype.reduceRight
    • Array.prototype.copyWithin

@HalidOdat HalidOdat added bug Something isn't working builtins PRs and Issues related to builtins/intrinsics labels Jul 31, 2021
@HalidOdat HalidOdat added this to the v0.13.0 milestone Jul 31, 2021
@github-actions
Copy link

github-actions bot commented Jul 31, 2021

Test262 conformance changes:

Test result master count PR count difference
Total 78,897 78,897 0
Passed 28,530 28,656 +126
Ignored 15,612 15,612 0
Failed 34,755 34,629 -126
Panics 2 2 0
Conformance 36.16% 36.32% +0.16%
Fixed tests:
test/built-ins/Array/prototype/findIndex/return-abrupt-from-this.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/findIndex/return-abrupt-from-this.js (previously Failed)
test/built-ins/Array/prototype/findIndex/predicate-is-not-callable-throws.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/findIndex/predicate-is-not-callable-throws.js (previously Failed)
test/built-ins/Array/prototype/map/target-array-with-non-configurable-property.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/map/target-array-with-non-configurable-property.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-17.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-17.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-13.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-13.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-5.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-5.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-14.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-14.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-3-22.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-3-22.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-ii-2.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-9-b-ii-2.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-1.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-1.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-2.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-2.js (previously Failed)
test/built-ins/Array/prototype/indexOf/length-zero-returns-minus-one.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/length-zero-returns-minus-one.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-28.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-28.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-4.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-4.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-7.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-7.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-3.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-1-3.js (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-1.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/indexOf/15.4.4.14-5-1.js (previously Failed)
test/built-ins/Array/prototype/slice/create-species-poisoned.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/slice/create-species-poisoned.js (previously Failed)
test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-non-array.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-non-array.js (previously Failed)
test/built-ins/Array/prototype/slice/create-species-neg-zero.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/slice/create-species-neg-zero.js (previously Failed)
test/built-ins/Array/prototype/slice/create-species-non-ctor.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/slice/create-species-non-ctor.js (previously Failed)
test/built-ins/Array/prototype/slice/target-array-with-non-configurable-property.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/slice/target-array-with-non-configurable-property.js (previously Failed)
test/built-ins/Array/prototype/slice/create-ctor-poisoned.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/slice/create-ctor-poisoned.js (previously Failed)
test/built-ins/Array/prototype/slice/create-ctor-non-object.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/slice/create-ctor-non-object.js (previously Failed)
test/built-ins/Array/prototype/fill/call-with-boolean.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/fill/call-with-boolean.js (previously Failed)
test/built-ins/Array/prototype/fill/return-abrupt-from-this.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/fill/return-abrupt-from-this.js (previously Failed)
test/built-ins/Array/prototype/includes/this-is-not-object.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/includes/this-is-not-object.js (previously Failed)
test/built-ins/Array/prototype/flatMap/target-array-with-non-configurable-property.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/flatMap/target-array-with-non-configurable-property.js (previously Failed)
test/built-ins/Array/prototype/flatMap/this-value-ctor-non-object.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/flatMap/this-value-ctor-non-object.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-8.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-8.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-11.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-11.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-9.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-9.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-20.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-9-c-ii-20.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-10.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-10.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-28.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-28.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-15.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-4-15.js (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-15.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduce/15.4.4.21-9-b-15.js (previously Failed)
test/built-ins/Array/prototype/find/return-abrupt-from-this-length.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/find/return-abrupt-from-this-length.js (previously Failed)
test/built-ins/Array/prototype/find/return-abrupt-from-this.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/find/return-abrupt-from-this.js (previously Failed)
test/built-ins/Array/prototype/find/predicate-is-not-callable-throws.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/find/predicate-is-not-callable-throws.js (previously Failed)
test/built-ins/Array/prototype/flat/non-object-ctor-throws.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/flat/non-object-ctor-throws.js (previously Failed)
test/built-ins/Array/prototype/flat/target-array-with-non-configurable-property.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/flat/target-array-with-non-configurable-property.js (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-9.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-9.js (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-8.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-8.js (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-28.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-b-28.js (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-11.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-11.js (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-10.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-10.js (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-15.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-4-15.js (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-20.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/reduceRight/15.4.4.22-9-c-ii-20.js (previously Failed)
test/built-ins/Array/prototype/copyWithin/return-abrupt-from-delete-target.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/copyWithin/return-abrupt-from-delete-target.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-28.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-3-28.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-16.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-16.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-1.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-1.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-1.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-2-1.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-9.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-9.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-3.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-3.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/length-zero-returns-minus-one.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/length-zero-returns-minus-one.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-12.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-12.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-28.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-5-28.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-7.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-7.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-2.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-2.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-ii-2.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-8-b-ii-2.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/length-near-integer-limit.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/length-near-integer-limit.js (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-5.js [strict mode] (previously Failed)
test/built-ins/Array/prototype/lastIndexOf/15.4.4.15-1-5.js (previously Failed)
Broken tests:
test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-array.js [strict mode] (previously Passed)
test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-array.js (previously Passed)

@github-actions
Copy link

Benchmark for 3253525

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 226.2±13.94ns 228.9±14.93ns -1.18%
Arithmetic operations (Full) 275.4±21.13µs 271.6±16.96µs +1.40%
Array access (Execution) 5.5±0.30µs 4.9±0.25µs +12.24%
Array access (Full) 263.6±19.01µs 259.7±19.81µs +1.50%
Array creation (Execution) 2.2±0.13ms 2.3±0.16ms -4.35%
Array creation (Full) 2.7±0.19ms 2.5±0.13ms +8.00%
Array pop (Execution) 677.8±26.29µs 720.4±53.58µs -5.91%
Array pop (Full) 1222.6±98.72µs 1177.9±92.67µs +3.79%
Boolean Object Access (Execution) 5.4±0.19µs 4.6±0.37µs +17.39%
Boolean Object Access (Full) 256.2±15.17µs 295.9±15.14µs -13.42%
Clean js (Execution) 600.8±47.28µs 590.4±49.65µs +1.76%
Clean js (Full) 871.9±45.56µs 984.8±71.41µs -11.46%
Clean js (Parser) 30.0±2.42µs 32.5±2.39µs -7.69%
Create Realm 346.8±20.20ns 415.6±15.93ns -16.55%
Dynamic Object Property Access (Execution) 4.2±0.38µs 4.2±0.41µs 0.00%
Dynamic Object Property Access (Full) 256.7±20.08µs 267.6±17.51µs -4.07%
Expression (Parser) 5.1±0.30µs 5.6±0.45µs -8.93%
Fibonacci (Execution) 636.5±35.41µs 636.4±36.16µs +0.02%
Fibonacci (Full) 948.4±70.94µs 909.0±49.37µs +4.33%
For loop (Execution) 17.7±2.13µs 16.1±0.91µs +9.94%
For loop (Full) 264.4±15.95µs 259.3±11.23µs +1.97%
For loop (Parser) 13.5±0.82µs 15.2±1.15µs -11.18%
Goal Symbols (Parser) 10.1±0.59µs 11.5±0.73µs -12.17%
Hello World (Parser) 2.9±0.17µs 3.1±0.28µs -6.45%
Long file (Parser) 687.4±56.52ns 759.4±56.31ns -9.48%
Mini js (Execution) 522.5±26.83µs 575.6±56.58µs -9.23%
Mini js (Full) 868.5±65.38µs 1015.4±32.81µs -14.47%
Mini js (Parser) 26.2±1.86µs 27.2±2.76µs -3.68%
Number Object Access (Execution) 4.1±0.30µs 3.5±0.26µs +17.14%
Number Object Access (Full) 249.4±15.12µs 302.6±18.24µs -17.58%
Object Creation (Execution) 3.8±0.34µs 3.5±0.20µs +8.57%
Object Creation (Full) 255.7±15.03µs 261.7±14.97µs -2.29%
RegExp (Execution) 10.8±0.87µs 10.6±0.99µs +1.89%
RegExp (Full) 261.3±17.02µs 293.3±42.96µs -10.91%
RegExp Literal (Execution) 10.8±0.63µs 10.6±0.72µs +1.89%
RegExp Literal (Full) 265.3±18.29µs 294.5±24.51µs -9.92%
RegExp Literal Creation (Execution) 8.2±0.52µs 7.8±0.57µs +5.13%
RegExp Literal Creation (Full) 256.6±13.29µs 280.9±20.45µs -8.65%
Static Object Property Access (Execution) 3.6±0.25µs 3.9±0.31µs -7.69%
Static Object Property Access (Full) 257.2±16.61µs 258.9±12.21µs -0.66%
String Object Access (Execution) 6.6±0.37µs 5.9±0.49µs +11.86%
String Object Access (Full) 303.3±11.26µs 300.1±20.12µs +1.07%
String comparison (Execution) 5.1±0.30µs 5.2±0.38µs -1.92%
String comparison (Full) 273.6±28.86µs 291.3±22.39µs -6.08%
String concatenation (Execution) 3.9±0.24µs 3.9±0.24µs 0.00%
String concatenation (Full) 251.2±14.08µs 283.8±22.55µs -11.49%
String copy (Execution) 3.4±0.16µs 3.2±0.33µs +6.25%
String copy (Full) 244.4±14.89µs 290.5±18.16µs -15.87%
Symbols (Execution) 2.7±0.13µs 2.6±0.14µs +3.85%
Symbols (Full) 232.7±14.69µs 273.6±8.81µs -14.95%

@github-actions
Copy link

Benchmark for 0b279c9

Click to view benchmark
Test PR Benchmark Master Benchmark %
Arithmetic operations (Execution) 264.1±2.23ns 269.1±0.37ns -1.86%
Arithmetic operations (Full) 284.0±0.40µs 283.4±7.51µs +0.21%
Array access (Execution) 6.1±0.24µs 6.3±0.32µs -3.17%
Array access (Full) 305.2±7.31µs 307.7±4.61µs -0.81%
Array creation (Execution) 2.4±0.05ms 2.5±0.03ms -4.00%
Array creation (Full) 3.0±0.00ms 3.0±0.03ms 0.00%
Array pop (Execution) 825.7±12.28µs 835.5±16.79µs -1.17%
Array pop (Full) 1333.5±39.99µs 1352.3±25.31µs -1.39%
Boolean Object Access (Execution) 5.3±0.10µs 5.4±0.02µs -1.85%
Boolean Object Access (Full) 302.9±3.90µs 305.6±1.64µs -0.88%
Clean js (Execution) 693.8±7.38µs 678.2±23.24µs +2.30%
Clean js (Full) 1034.0±12.74µs 1029.2±29.98µs +0.47%
Clean js (Parser) 35.0±0.27µs 35.0±0.41µs 0.00%
Create Realm 416.4±7.08ns 424.7±4.00ns -1.95%
Dynamic Object Property Access (Execution) 4.6±0.16µs 4.6±0.13µs 0.00%
Dynamic Object Property Access (Full) 306.0±1.90µs 305.3±0.91µs +0.23%
Expression (Parser) 6.2±0.08µs 6.2±0.06µs 0.00%
Fibonacci (Execution) 742.6±17.08µs 743.3±12.52µs -0.09%
Fibonacci (Full) 1100.4±9.83µs 1102.6±5.77µs -0.20%
For loop (Execution) 19.6±0.35µs 19.5±0.09µs +0.51%
For loop (Full) 310.0±8.69µs 305.7±12.78µs +1.41%
For loop (Parser) 16.3±0.36µs 16.6±0.36µs -1.81%
Goal Symbols (Parser) 11.9±0.39µs 12.0±0.28µs -0.83%
Hello World (Parser) 3.5±0.11µs 3.5±0.14µs 0.00%
Long file (Parser) 800.8±6.07ns 789.5±15.93ns +1.43%
Mini js (Execution) 620.1±16.67µs 626.7±17.88µs -1.05%
Mini js (Full) 977.6±13.20µs 976.3±20.03µs +0.13%
Mini js (Parser) 29.6±0.87µs 30.4±0.46µs -2.63%
Number Object Access (Execution) 4.2±0.03µs 4.1±0.12µs +2.44%
Number Object Access (Full) 295.7±4.15µs 293.7±6.44µs +0.68%
Object Creation (Execution) 4.0±0.13µs 4.1±0.15µs -2.44%
Object Creation (Full) 302.8±0.76µs 301.5±2.61µs +0.43%
RegExp (Execution) 12.8±0.24µs 12.3±0.33µs +4.07%
RegExp (Full) 307.8±8.65µs 306.7±7.97µs +0.36%
RegExp Literal (Execution) 12.7±0.32µs 12.6±0.30µs +0.79%
RegExp Literal (Full) 316.1±5.67µs 310.8±9.43µs +1.71%
RegExp Literal Creation (Execution) 9.5±0.30µs 9.3±0.25µs +2.15%
RegExp Literal Creation (Full) 300.6±7.22µs 302.2±7.17µs -0.53%
Static Object Property Access (Execution) 4.3±0.06µs 4.3±0.12µs 0.00%
Static Object Property Access (Full) 296.5±7.40µs 298.3±4.89µs -0.60%
String Object Access (Execution) 6.8±0.06µs 6.9±0.18µs -1.45%
String Object Access (Full) 303.9±4.04µs 294.0±8.70µs +3.37%
String comparison (Execution) 6.2±0.04µs 6.0±0.13µs +3.33%
String comparison (Full) 298.2±6.05µs 301.7±5.48µs -1.16%
String concatenation (Execution) 4.6±0.07µs 4.8±0.18µs -4.17%
String concatenation (Full) 296.1±3.08µs 298.9±2.79µs -0.94%
String copy (Execution) 3.6±0.05µs 3.7±0.02µs -2.70%
String copy (Full) 290.2±3.96µs 290.2±5.79µs 0.00%
Symbols (Execution) 3.1±0.08µs 3.1±0.08µs 0.00%
Symbols (Full) 278.2±6.36µs 277.6±3.68µs +0.22%

@HalidOdat
Copy link
Member Author

HalidOdat commented Jul 31, 2021

test test/built-ins/Array/prototype/slice/create-proto-from-ctor-realm-array.js was a false positive, since we don't handle step 6. in array_species_create

esid: sec-array.prototype.slice
description: Prefer Array constructor of current realm record
info: |
    1. Let O be ? ToObject(this value).
    [...]
    8. Let A be ? ArraySpeciesCreate(O, count).
    [...]
    9.4.2.3 ArraySpeciesCreate
    [...]
    5. Let C be ? Get(originalArray, "constructor").
    6. If IsConstructor(C) is true, then
       a. Let thisRealm be the current Realm Record.
       b. Let realmC be ? GetFunctionRealm(C).
       c. If thisRealm and realmC are not the same Realm Record, then
          i. If SameValue(C, realmC.[[Intrinsics]].[[%Array%]]) is true, let C
             be undefined.
    [...]
features: [cross-realm, Symbol.species]
---*/

@HalidOdat HalidOdat merged commit b55b2af into master Aug 6, 2021
@HalidOdat HalidOdat deleted the spec-compliant-array-methods branch August 6, 2021 17:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working builtins PRs and Issues related to builtins/intrinsics
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant