From 55a71359cee2298cd58ad352261da8e28c712ba7 Mon Sep 17 00:00:00 2001 From: Imma Bot Date: Thu, 21 Nov 2024 07:13:25 +0000 Subject: [PATCH] Auto Update --- index.html | 3410 ++++++++++++++++++++---------- results/v8/20.18.1--harmony.json | 1044 +++++++++ results/v8/20.18.1.json | 1044 +++++++++ results/v8/23.3.0--harmony.json | 1044 +++++++++ results/v8/23.3.0.json | 1044 +++++++++ results/v8/nightly--harmony.json | 2 +- results/v8/nightly.json | 2 +- v8.versions | 2 + 8 files changed, 6471 insertions(+), 1121 deletions(-) create mode 100644 results/v8/20.18.1--harmony.json create mode 100644 results/v8/20.18.1.json create mode 100644 results/v8/23.3.0--harmony.json create mode 100644 results/v8/23.3.0.json diff --git a/index.html b/index.html index e3861482b..7bada0e4a 100644 --- a/index.html +++ b/index.html @@ -42,6 +42,16 @@

Node.js ES2015 Support

Nightly!99% complete99% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
99% complete99% complete + 23.2.0
(these versions have identical results) @@ -238,8 +248,14 @@

Node.js ES2015 Support

99% complete99% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -3416,7 +3432,7 @@

- + @@ -3493,7 +3510,7 @@

- + @@ -3583,7 +3601,7 @@

- - + @@ -3681,7 +3700,7 @@

- + @@ -3752,7 +3772,7 @@

- + @@ -3823,7 +3844,7 @@

- + @@ -3901,7 +3923,7 @@

- + @@ -3989,7 +4012,7 @@

- + @@ -4075,7 +4099,7 @@

- + @@ -4153,7 +4178,7 @@

- - + @@ -4235,7 +4261,7 @@

- + @@ -4308,7 +4335,7 @@

- + @@ -4387,7 +4415,7 @@

- + @@ -4472,7 +4501,7 @@

- + @@ -4551,7 +4581,7 @@

- - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + - + - + - + - + - + - - + - + - + - + - + - + - + - + @@ -6736,7 +6795,7 @@

- + @@ -6819,7 +6879,7 @@

- - + - + - + - + - - + - + - + - + - + - + @@ -7609,7 +7679,7 @@

- + - - + @@ -7787,7 +7859,7 @@

- + @@ -7863,7 +7936,7 @@

- + @@ -7937,7 +8011,7 @@

- + @@ -8008,7 +8083,7 @@

- + @@ -8079,7 +8155,7 @@

- + @@ -8150,14 +8227,14 @@

- - + @@ -8229,7 +8307,7 @@

- + @@ -8302,7 +8381,7 @@

- + @@ -8375,7 +8455,7 @@

- + @@ -8448,7 +8529,7 @@

- + @@ -8521,7 +8603,7 @@

- + @@ -8594,7 +8677,7 @@

- + @@ -8667,7 +8751,7 @@

- + @@ -8744,7 +8829,7 @@

- + @@ -8821,7 +8907,7 @@

- + @@ -8894,7 +8981,7 @@

- + @@ -8969,7 +9057,7 @@

- + @@ -9044,7 +9133,7 @@

- + @@ -9130,7 +9220,7 @@

- + @@ -9217,7 +9308,7 @@

- + @@ -9291,7 +9383,7 @@

- + @@ -9366,7 +9459,7 @@

- + @@ -9442,7 +9536,7 @@

- + @@ -9517,7 +9612,7 @@

- + @@ -9598,7 +9694,7 @@

- + @@ -9680,7 +9777,7 @@

- + @@ -9757,7 +9855,7 @@

- + @@ -9840,7 +9939,7 @@

- - + @@ -9929,7 +10029,7 @@

- + @@ -10004,7 +10105,7 @@

- + @@ -10079,7 +10181,7 @@

- + @@ -10154,7 +10257,7 @@

- + @@ -10229,7 +10333,7 @@

- + @@ -10304,7 +10409,7 @@

- + @@ -10379,7 +10485,7 @@

- + @@ -10458,7 +10565,7 @@

- + @@ -10536,7 +10644,7 @@

- + @@ -10610,7 +10719,7 @@

- + @@ -10685,7 +10795,7 @@

- + @@ -10760,7 +10871,7 @@

- + @@ -10837,7 +10949,7 @@

- + @@ -10914,7 +11027,7 @@

- + @@ -10988,7 +11102,7 @@

- + @@ -11067,7 +11182,7 @@

- + @@ -11147,7 +11263,7 @@

- + @@ -11235,7 +11352,7 @@

- + @@ -11323,7 +11441,7 @@

- + @@ -11400,7 +11519,7 @@

- + @@ -11479,7 +11599,7 @@

- + @@ -11556,7 +11677,7 @@

- + @@ -11631,7 +11753,7 @@

- + @@ -11708,7 +11831,7 @@

- - + @@ -11792,7 +11916,7 @@

- + @@ -11867,7 +11992,7 @@

- + @@ -11942,7 +12068,7 @@

- + @@ -12017,7 +12144,7 @@

- + @@ -12092,7 +12220,7 @@

- + @@ -12167,7 +12296,7 @@

- + @@ -12242,7 +12372,7 @@

- + @@ -12320,7 +12451,7 @@

- + @@ -12398,7 +12530,7 @@

- + @@ -12473,7 +12606,7 @@

- + @@ -12549,7 +12683,7 @@

- + @@ -12625,7 +12760,7 @@

- + @@ -12706,7 +12842,7 @@

- + @@ -12788,7 +12925,7 @@

- + @@ -12865,7 +13003,7 @@

- + @@ -12942,7 +13081,7 @@

- + @@ -13019,7 +13159,7 @@

- + @@ -13093,7 +13234,7 @@

- + @@ -13167,7 +13309,7 @@

- + @@ -13243,7 +13386,7 @@

- + @@ -13320,7 +13464,7 @@

- + @@ -13400,7 +13545,7 @@

- + @@ -13478,7 +13624,7 @@

- + @@ -13553,7 +13700,7 @@

- + @@ -13628,7 +13776,7 @@

- + @@ -13713,7 +13862,7 @@

- - + - + - + - + - - + - + - - + - + @@ -14363,7 +14520,7 @@

- + @@ -14442,7 +14600,7 @@

- + @@ -14524,7 +14683,7 @@

- + @@ -14605,7 +14765,7 @@

- + @@ -14683,7 +14844,7 @@

- + @@ -14760,7 +14922,7 @@

- + @@ -14839,7 +15002,7 @@

- + @@ -14918,7 +15082,7 @@

- + - + - + - + - + - + - + - + - + - - + @@ -15724,7 +15898,7 @@

- + @@ -15798,7 +15973,7 @@

- + @@ -15877,7 +16053,7 @@

- + @@ -15959,7 +16136,7 @@

- + @@ -16037,7 +16215,7 @@

- + @@ -16114,7 +16293,7 @@

- + @@ -16200,7 +16380,7 @@

- + @@ -16287,7 +16468,7 @@

- + - + - + - + - + - + - + - + - - + - - + - + - + - + - + - + - + - + - + @@ -17719,7 +17918,7 @@

- + - + @@ -17878,7 +18079,7 @@

- + @@ -17973,7 +18175,7 @@

- + - - + @@ -18140,7 +18344,7 @@

- + @@ -18218,7 +18423,7 @@

- + @@ -18295,7 +18501,7 @@

- + @@ -18366,7 +18573,7 @@

- + @@ -18441,7 +18649,7 @@

- + @@ -18520,7 +18729,7 @@

- + @@ -18599,7 +18809,7 @@

- + @@ -18679,7 +18890,7 @@

- + @@ -18763,7 +18975,7 @@

- + @@ -18846,7 +19059,7 @@

- + @@ -18926,7 +19140,7 @@

- + @@ -19008,7 +19223,7 @@

- + @@ -19091,7 +19307,7 @@

- + @@ -19174,7 +19391,7 @@

- + @@ -19257,7 +19475,7 @@

- + @@ -19339,7 +19558,7 @@

- + @@ -19421,7 +19641,7 @@

- + @@ -19502,7 +19723,7 @@

- + @@ -19580,7 +19802,7 @@

- + @@ -19660,7 +19883,7 @@

- + @@ -19740,7 +19964,7 @@

- + @@ -19817,7 +20042,7 @@

- + @@ -19895,7 +20121,7 @@

- + @@ -19982,7 +20209,7 @@

- - + @@ -20080,7 +20308,7 @@

- + @@ -20165,7 +20394,7 @@

- + @@ -20249,7 +20479,7 @@

- + @@ -20333,7 +20564,7 @@

- + @@ -20418,7 +20650,7 @@

- + @@ -20505,7 +20738,7 @@

- + @@ -20594,7 +20828,7 @@

- + @@ -20687,7 +20922,7 @@

- - + - + - + - + @@ -21058,7 +21297,7 @@

- + - + - + - + - + - + @@ -21608,7 +21853,7 @@

- + - + - + - + - + - + - + - + - + - + @@ -22520,7 +22775,7 @@

- + @@ -22622,7 +22878,7 @@

- + - + - + - + @@ -23007,7 +23267,7 @@

- + @@ -23103,7 +23364,7 @@

- + @@ -23196,7 +23458,7 @@

- - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -24581,7 +24861,7 @@

- + - + - + @@ -24893,7 +25176,7 @@

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -27083,7 +27391,7 @@

- - + - + - + - + - + - + @@ -27585,7 +27899,7 @@

- + - + - + - + - + - + - + - + - + - + - + - + - + @@ -28574,7 +28901,7 @@

- - + - + - + - + - + - + @@ -29072,7 +29405,7 @@

- + - + - + - + - + - + - + - + - + - + - + - + - + @@ -30068,7 +30414,7 @@

- - + - + - + - + - + - + - + @@ -30640,7 +30993,7 @@

- + - + - + - + - + - - + - + - + - + - + - + @@ -31532,7 +31896,7 @@

- + - + - + - + - + - - + @@ -32014,7 +32384,7 @@

- + @@ -32092,7 +32463,7 @@

- + @@ -32170,7 +32542,7 @@

- + @@ -32253,7 +32626,7 @@

- + @@ -32357,7 +32731,7 @@

- + @@ -32463,7 +32838,7 @@

- + @@ -32550,7 +32926,7 @@

- + @@ -32656,7 +33033,7 @@

- + @@ -32761,7 +33139,7 @@

- + @@ -32846,7 +33225,7 @@

- + @@ -32948,7 +33328,7 @@

- + @@ -33050,7 +33431,7 @@

- + @@ -33143,7 +33525,7 @@

- + @@ -33242,7 +33625,7 @@

- + @@ -33376,7 +33760,7 @@

- + @@ -33509,7 +33894,7 @@

- + @@ -33620,7 +34006,7 @@

- + @@ -33726,7 +34113,7 @@

- + @@ -33817,7 +34205,7 @@

- + @@ -33913,7 +34302,7 @@

- + @@ -34011,7 +34401,7 @@

- + @@ -34106,7 +34497,7 @@

- + @@ -34207,7 +34599,7 @@

- + @@ -34309,7 +34702,7 @@

- + @@ -34403,7 +34797,7 @@

- + @@ -34496,7 +34891,7 @@

- + @@ -34606,7 +35002,7 @@

- + @@ -34717,7 +35114,7 @@

- + @@ -34811,7 +35209,7 @@

- + @@ -34903,7 +35302,7 @@

- + @@ -35005,7 +35405,7 @@

- + @@ -35107,7 +35508,7 @@

- + @@ -35186,7 +35588,7 @@

- + @@ -35257,14 +35660,14 @@

- - + @@ -35335,7 +35739,7 @@

- + @@ -35408,7 +35813,7 @@

- + @@ -35481,7 +35887,7 @@

- + @@ -35554,7 +35961,7 @@

- + @@ -35630,7 +36038,7 @@

- + @@ -35707,7 +36116,7 @@

- + @@ -35781,7 +36191,7 @@

- + @@ -35854,7 +36265,7 @@

- + @@ -35928,7 +36340,7 @@

- + @@ -36002,7 +36415,7 @@

- + @@ -36079,7 +36493,7 @@

- + @@ -36162,7 +36577,7 @@

- + @@ -36241,7 +36657,7 @@

- + @@ -36314,7 +36731,7 @@

- + @@ -36391,7 +36809,7 @@

- + @@ -36468,7 +36887,7 @@

- + @@ -36544,7 +36964,7 @@

- + @@ -36621,7 +37042,7 @@

- + @@ -36697,7 +37119,7 @@

- + @@ -36789,7 +37212,7 @@

- - + - + - + - + - + - + - + - + @@ -37560,7 +37991,7 @@

- - + - + - + - + - + - + - + - + - + @@ -38310,7 +38750,7 @@

- + - + @@ -38478,7 +38920,7 @@

- + - - + @@ -38651,7 +39095,7 @@

- + @@ -38732,7 +39177,7 @@

- + - + - + - + @@ -39051,7 +39500,7 @@

- + @@ -39127,7 +39577,7 @@

- + @@ -39208,7 +39659,7 @@

- + @@ -39289,7 +39741,7 @@

- + @@ -39370,7 +39823,7 @@

- + @@ -39451,7 +39905,7 @@

- + @@ -39535,7 +39990,7 @@

- + @@ -39618,7 +40074,7 @@

- + @@ -39697,7 +40154,7 @@

- + @@ -39776,7 +40234,7 @@

- + @@ -39855,7 +40314,7 @@

- + @@ -39934,7 +40394,7 @@

- + @@ -40013,7 +40474,7 @@

- + @@ -40094,7 +40556,7 @@

- + @@ -40177,7 +40640,7 @@

- + @@ -40260,7 +40724,7 @@

- + @@ -40346,7 +40811,7 @@

- + @@ -40428,7 +40894,7 @@

- + @@ -40518,7 +40985,7 @@

- + @@ -40630,7 +41098,7 @@

- + @@ -40727,7 +41196,7 @@

- + - - + - + - + - + - - + - + - + @@ -41354,7 +41831,7 @@

- + - + @@ -41502,7 +41981,7 @@

- + @@ -41579,7 +42059,7 @@

- + @@ -41657,7 +42138,7 @@

- + - + - + @@ -41885,7 +42369,7 @@

- + @@ -41967,7 +42452,7 @@

- + @@ -42042,7 +42528,7 @@

- + @@ -42119,7 +42606,7 @@

- + @@ -42199,7 +42687,7 @@

- + @@ -42275,7 +42764,7 @@

- + @@ -42348,7 +42838,7 @@

- + - - + - + - - + - + - + - + - + - + - + - + - + - + - - + @@ -43418,7 +43922,7 @@

- + @@ -43489,7 +43994,7 @@

- + @@ -43560,7 +44066,7 @@

- + @@ -43631,7 +44138,7 @@

- + @@ -43702,7 +44210,7 @@

- + @@ -43774,7 +44283,7 @@

- - + - + - + - + - + - + - + - + - + @@ -44456,7 +44974,7 @@

- + - + @@ -44608,7 +45128,7 @@

- - + - + - + - + - + - + @@ -45042,7 +45568,7 @@

- + - + - + - + @@ -45420,7 +45950,7 @@

- + - - + - + - + - + - + - + - + - + - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - + @@ -47472,7 +48030,7 @@

- - + @@ -47565,7 +48124,7 @@

- + @@ -47645,7 +48205,7 @@

- + @@ -47722,7 +48283,7 @@

- + @@ -47796,7 +48358,7 @@

- + @@ -47870,7 +48433,7 @@

- + @@ -47945,7 +48509,7 @@

- + @@ -48020,7 +48585,7 @@

- + @@ -48096,7 +48662,7 @@

- + @@ -48173,7 +48740,7 @@

- + @@ -48248,7 +48816,7 @@

- + @@ -48321,7 +48890,7 @@

- - + @@ -48402,7 +48972,7 @@

- + @@ -48477,7 +49048,7 @@

- + @@ -48552,7 +49124,7 @@

- + @@ -48627,7 +49200,7 @@

- - + @@ -48709,7 +49283,7 @@

- + @@ -48784,7 +49359,7 @@

- + @@ -48860,7 +49436,7 @@

- + @@ -48936,7 +49513,7 @@

- + @@ -49011,7 +49589,7 @@

- + @@ -49086,7 +49665,7 @@

- - + @@ -49188,7 +49768,7 @@

- + @@ -49283,7 +49864,7 @@

- + @@ -49371,7 +49953,7 @@

- + @@ -49472,7 +50055,7 @@

- - + @@ -49569,7 +50153,7 @@

- + @@ -49648,7 +50233,7 @@

- + @@ -49729,7 +50315,7 @@

- + @@ -49810,7 +50397,7 @@

- + @@ -49891,7 +50479,7 @@

- + @@ -49975,7 +50564,7 @@

- - + - + - + - + @@ -50364,7 +50957,7 @@

- + @@ -50458,7 +51052,7 @@

- - + @@ -50551,7 +51146,7 @@

- + @@ -50630,7 +51226,7 @@

- + @@ -50710,7 +51307,7 @@

- + @@ -50793,7 +51391,7 @@

- + @@ -50875,7 +51474,7 @@

- + @@ -50954,7 +51554,7 @@

- + @@ -51044,7 +51645,7 @@

- + @@ -51142,7 +51744,7 @@

- + @@ -51229,7 +51832,7 @@

- + @@ -51308,7 +51912,7 @@

- + @@ -51387,7 +51992,7 @@

- + @@ -51466,7 +52072,7 @@

- + @@ -51546,7 +52153,7 @@

- + @@ -51628,7 +52236,7 @@

- + @@ -51724,7 +52333,7 @@

- + @@ -51818,7 +52428,7 @@

- + @@ -51897,7 +52508,7 @@

- + @@ -51979,7 +52591,7 @@

- + @@ -52064,7 +52677,7 @@

- + @@ -52146,7 +52760,7 @@

- + @@ -52227,7 +52842,7 @@

- + @@ -52308,7 +52924,7 @@

- + @@ -52394,7 +53011,7 @@

- + @@ -52493,7 +53111,7 @@

- + @@ -52585,7 +53204,7 @@

- + @@ -52664,7 +53284,7 @@

- + @@ -52743,7 +53364,7 @@

- + @@ -52823,7 +53445,7 @@

- + @@ -52903,7 +53526,7 @@

- + @@ -52982,7 +53606,7 @@

- + @@ -53061,7 +53686,7 @@

- + @@ -53142,7 +53768,7 @@

- + @@ -53225,7 +53852,7 @@

- + @@ -53308,7 +53936,7 @@

- + @@ -53391,7 +54020,7 @@

- + @@ -53473,7 +54103,7 @@

- - + @@ -53560,7 +54191,7 @@

- + @@ -53639,7 +54271,7 @@

- + @@ -53718,7 +54351,7 @@

- + @@ -53797,7 +54431,7 @@

- + @@ -53876,7 +54511,7 @@

- + @@ -53955,7 +54591,7 @@

- + @@ -54034,7 +54671,7 @@

- + @@ -54113,7 +54751,7 @@

- + @@ -54192,7 +54831,7 @@

- + @@ -54271,7 +54911,7 @@

- + @@ -54350,7 +54991,7 @@

- - + @@ -54436,7 +55078,7 @@

- + @@ -54515,7 +55158,7 @@

- - + @@ -54601,7 +55245,7 @@

- + @@ -54680,7 +55325,7 @@

- + @@ -54759,7 +55405,7 @@

- + @@ -54838,7 +55485,7 @@

- + @@ -54917,7 +55565,7 @@

- + @@ -54996,7 +55645,7 @@

- - + @@ -55083,7 +55733,7 @@

- + @@ -55164,7 +55815,7 @@

- + @@ -55245,7 +55897,7 @@

- + @@ -55326,7 +55979,7 @@

- - + @@ -55413,7 +56067,7 @@

- + @@ -55492,7 +56147,7 @@

- + @@ -55571,7 +56227,7 @@

- - + - + - + - + - + - + - + - + - + - + - - + - + @@ -56531,7 +57199,7 @@

- + @@ -56647,7 +57316,7 @@

- + - + - + @@ -56963,7 +57635,7 @@

- + @@ -57069,7 +57742,7 @@

- - + - + - + @@ -57319,7 +57995,7 @@

- - + - + - + - + - + - + @@ -57781,7 +58463,7 @@

- + @@ -57852,7 +58535,7 @@

- + @@ -57936,7 +58620,7 @@

- + - - + @@ -58135,7 +58821,7 @@

- + - + - - + - + - + - + - + - - + - + - + - + - + - + - - + - + - + - - + - + @@ -59584,7 +60288,7 @@

- - + - + - + - + - + - + - + - + - - + -
20.18.0
+

proper tail calls (tail call optimisation)

@@ -3482,6 +3498,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Flag
Error
Flag
Error
Flag
+
function(){
"use strict"; return (function f(n){ @@ -3572,6 +3589,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Flag
Error
Flag
Error
Flag
+
function(){
"use strict"; function f(n){ @@ -3610,7 +3628,7 @@

+

default function parameters

@@ -3674,6 +3692,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function (a = 1, b = 2) { return a === 3 && b === 2; }(3));
}
@@ -3745,6 +3764,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function (a = 1, b = 2) { return a === 1 && b === 3; }(undefined, 3));
}
@@ -3816,6 +3836,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function (a, b = a) { return b === 5; }(5));
}
@@ -3894,6 +3915,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function (a = "baz", b = "qux", c = "quux") { a = "corge"; @@ -3982,6 +4004,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function(x = 1) { try { @@ -4068,6 +4091,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function(a=function(){ return typeof b === 'undefined'; @@ -4146,6 +4170,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return new Function("a = 1", "b = 2", "return a === 3 && b === 2;" @@ -4162,7 +4187,7 @@

+

rest parameters

@@ -4228,6 +4253,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return (function (foo, ...args) { return args instanceof Array && args + "" === "bar,baz"; @@ -4301,6 +4327,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return function(a, ...b){}.length === 1 && function(...c){}.length === 0;
}
@@ -4380,6 +4407,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return (function (foo, ...args) { foo = "qux"; @@ -4465,6 +4493,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return (function (...args) { try { @@ -4544,6 +4573,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return new Function("a", "...b", "return b instanceof Array && a+b === 'foobar,baz';" @@ -4560,7 +4590,7 @@

+

spread syntax for iterable objects

@@ -4625,13 +4655,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return Math.max(...[1, 2, 3]) === 3
}
@@ -4696,13 +4727,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return [...[1, 2, 3]][2] === 3;
}
@@ -4768,13 +4800,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var a = Array(...[,,]); return "0" in a && "1" in a && '' + a[0] + a[1] === "undefinedundefined";
} @@ -4841,13 +4874,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var a = [...[,,]]; return "0" in a && "1" in a && '' + a[0] + a[1] === "undefinedundefined";
} @@ -4913,13 +4947,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return Math.max(..."1234") === 4;
}
@@ -4984,13 +5019,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return ["a", ..."bcd", "e"][3] === "d";
}
@@ -5055,13 +5091,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return Array(..."𠮷𠮶")[0] === "𠮷";
}
@@ -5126,13 +5163,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return [..."𠮷𠮶"][0] === "𠮷";
}
@@ -5198,13 +5236,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var iterable = (function*(){ yield 1; yield 2; yield 3; }()); return Math.max(...iterable) === 3;
} @@ -5271,13 +5310,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var iterable = (function*(){ yield "b"; yield "c"; yield "d"; }()); return ["a", ...iterable, "e"][3] === "d";
} @@ -5344,13 +5384,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject([1, 2, 3]); return Math.max(...iterable) === 3;
} @@ -5417,13 +5458,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject(["b", "c", "d"]); return ["a", ...iterable, "e"][3] === "d";
} @@ -5490,13 +5532,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject([1, 2, 3]); return Math.max(...Object.create(iterable)) === 3;
} @@ -5563,13 +5606,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject(["b", "c", "d"]); return ["a", ...Object.create(iterable), "e"][3] === "d";
} @@ -5639,13 +5683,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
try { Math.max(...2); @@ -5656,7 +5701,7 @@

+

object literal extensions

@@ -5723,12 +5768,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var x = 'y'; return ({ [x]: 1 }).y === 1;
} @@ -5796,12 +5842,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var a = 7, b = 8, c = {a,b}; return c.a === 7 && c.b === 8;
} @@ -5868,12 +5915,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return ({ y() { return 2; } }).y() === 2;
}
@@ -5939,12 +5987,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return ({ "foo bar"() { return 4; } })["foo bar"]() === 4;
}
@@ -6011,12 +6060,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var x = 'y'; return ({ [x](){ return 1 } }).y() === 1;
} @@ -6090,12 +6140,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var x = 'y', valueSet, @@ -6109,7 +6160,7 @@

+

for..of loops

@@ -6178,11 +6229,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var arr = [5]; for (var item of arr) @@ -6255,11 +6307,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var arr = [,,]; var count = 0; @@ -6333,11 +6386,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var str = ""; for (var item of "foo") @@ -6410,11 +6464,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var str = ""; for (var item of "𠮷𠮶") @@ -6488,12 +6543,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var result = ""; var iterable = (function*(){ yield 1; yield 2; yield 3; }()); @@ -6570,11 +6626,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var result = ""; var iterable = global.__createIterableObject([1, 2, 3]); @@ -6651,11 +6708,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var result = ""; var iterable = global.__createIterableObject([1, 2, 3]); @@ -6728,6 +6786,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var closed = false; var iter = __createIterableObject([1, 2, 3], { @@ -6811,6 +6870,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var closed = false; var iter = __createIterableObject([1, 2, 3], { @@ -6833,7 +6893,7 @@

+

octal and binary literals

@@ -6899,12 +6959,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
return 0o10 === 8 && 0O10 === 8;
}
@@ -6970,12 +7031,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
return 0b10 === 2 && 0B10 === 2;
}
@@ -7041,12 +7103,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return Number('0o1') === 1;
}
@@ -7112,19 +7175,20 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return Number('0b1') === 1;
}
+

template literals

@@ -7192,12 +7256,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var a = "ba", b = "QUX"; return `foo bar @@ -7269,12 +7334,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var a = { toString: function() { return "foo"; }, @@ -7355,12 +7421,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var called = false; function fn(parts, a, b) { @@ -7439,12 +7506,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return (function(parts) { return Object.isFrozen(parts) && Object.isFrozen(parts.raw); @@ -7517,12 +7585,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var cr = eval("`x" + String.fromCharCode(13) + "y`"); var lf = eval("`x" + String.fromCharCode(10) + "y`"); @@ -7594,6 +7663,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
// TemplateStrings caching was changed from per-contents to // per-call-site. @@ -7694,12 +7764,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
function strings(array) { return array; @@ -7714,7 +7785,7 @@

+

RegExp "y" and "u" flags

@@ -7780,6 +7851,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var re = new RegExp('\\w', 'y'); re.exec('xy'); @@ -7856,6 +7928,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var re = new RegExp('yy', 'y'); re.lastIndex = 3; @@ -7930,6 +8003,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return "𠮷".match(/^.$/u)[0].length === 2;
}
@@ -8001,6 +8075,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return "𠮷x".match(/^.x$/u)[0].length === 3;
}
@@ -8072,6 +8147,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return "𝌆".match(/\u{1d306}/u)[0].length === 2;
}
@@ -8143,6 +8219,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return "ſ".match(/S/iu) && "S".match(/ſ/iu);
}
+

destructuring, declarations

@@ -8222,6 +8299,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a, , [b], c] = [5, null, [6]]; return a === 5 && b === 6 && c === void undefined;
} @@ -8295,6 +8373,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a, , b] = [,,,]; return a === void undefined && b === void undefined;
} @@ -8368,6 +8447,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a, b, c] = "ab"; return a === "a" && b === "b" && c === void undefined;
} @@ -8441,6 +8521,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [c] = "𠮷𠮶"; return c === "𠮷";
} @@ -8514,6 +8595,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a, b, c] = (function*(){ yield 1; yield 2; }()); return a === 1 && b === 2 && c === void undefined;
} @@ -8587,6 +8669,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a, b, c] = global.__createIterableObject([1, 2]); return a === 1 && b === 2 && c === void undefined;
} @@ -8660,6 +8743,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a, b, c] = Object.create(global.__createIterableObject([1, 2])); return a === 1 && b === 2 && c === void undefined;
} @@ -8736,6 +8820,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
Error
Error
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -8814,6 +8899,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a,] = [1]; return a === 1;
} @@ -8887,6 +8973,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var {c, x:d, e} = {c:7, x:8}; return c === 7 && d === 8 && e === void undefined;
} @@ -8962,6 +9049,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var {toFixed} = 2; var {slice} = ''; @@ -9037,6 +9125,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var {a,} = {a:1}; return a === 1;
} @@ -9123,6 +9212,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
try { var {a} = null; @@ -9210,6 +9300,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var qux = "corge"; var { [qux]: grault } = { corge: "garply" }; @@ -9284,6 +9375,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a,b] = [5,6], {c,d} = {c:7,d:8}; return a === 5 && b === 6 && c === 7 && d === 8;
} @@ -9359,6 +9451,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [e, {x:f, g}] = [9, {x:10}]; var {h, x:[i]} = {h:11, x:[12]}; @@ -9435,6 +9528,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
for(var [i, j, k] in { qux: 1 }) { return i === "q" && j === "u" && k === "x"; @@ -9510,6 +9604,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
for(var [i, j, k] of [[1,2,3]]) { return i === 1 && j === 2 && k === 3; @@ -9591,6 +9686,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
try { throw [1,2]; @@ -9673,6 +9769,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [a, ...b] = [3, 4, 5]; var [c, ...d] = [6]; @@ -9750,6 +9847,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var {a = 1, b = 0, z:c = 3} = {b:2, z:undefined}; var [d = 0, e = 5, f = 6] = [4,,undefined]; @@ -9833,6 +9931,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var {a, b = 2} = {a:1}; try { @@ -9856,7 +9955,7 @@

+

destructuring, assignment

@@ -9922,6 +10021,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c; [a, , [b], c] = [5, null, [6]]; @@ -9997,6 +10097,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a, b; [a, , b] = [,,,]; @@ -10072,6 +10173,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c; [a, b, c] = "ab"; @@ -10147,6 +10249,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var c; [c] = "𠮷𠮶"; @@ -10222,6 +10325,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c; [a, b, c] = (function*(){ yield 1; yield 2; }()); @@ -10297,6 +10401,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c; [a, b, c] = global.__createIterableObject([1, 2]); @@ -10372,6 +10477,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c; [a, b, c] = Object.create(global.__createIterableObject([1, 2])); @@ -10450,6 +10556,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
Error
Error
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -10529,6 +10636,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a, b, iterable = [1,2]; return ([a, b] = iterable) === iterable;
} @@ -10603,6 +10711,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c,d; [a,b] = [c,d] = [1,2]; @@ -10678,6 +10787,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a; [a,] = [1]; @@ -10753,6 +10863,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var c,d,e; ({c, x:d, e} = {c:7, x:8}); @@ -10830,6 +10941,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var toFixed, slice; ({toFixed} = 2); @@ -10907,6 +11019,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a; ({a,} = {a:1}); @@ -10981,6 +11094,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a, b, obj = { a:1, b:2 }; return ({a,b} = obj) === obj;
} @@ -11060,6 +11174,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a, b; ({a,b} = {a:1,b:2}); @@ -11140,6 +11255,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c,d; ({a,b} = {c,d} = {a:1,b:2,c:3,d:4}); @@ -11228,6 +11344,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b; try { @@ -11316,6 +11433,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var grault, qux = "corge"; ({ [qux]: grault } = { corge: "garply" }); @@ -11393,6 +11511,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var e,f,g,h,i; [e, {x:f, g}] = [9, {x:10}]; @@ -11472,6 +11591,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c,d; [a, ...b] = [3, 4, 5]; @@ -11549,6 +11669,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a = [1, 2, 3], first, last; [first, ...[a[2], last]] = a; @@ -11624,6 +11745,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
[] = [1,2]; ({} = {a:1,b:2}); @@ -11701,6 +11823,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var a,b,c,d,e,f; ({a = 1, b = 0, z:c = 3} = {b:2, z:undefined}); @@ -11719,7 +11842,7 @@

+

destructuring, parameters

@@ -11785,6 +11908,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a, , [b], c]) { return a === 5 && b === 6 && c === void undefined; @@ -11860,6 +11984,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a, , b]) { return a === void undefined && b === void undefined; @@ -11935,6 +12060,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a, b, c]) { return a === "a" && b === "b" && c === void undefined; @@ -12010,6 +12136,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([c]) { return c === "𠮷"; @@ -12085,6 +12212,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a, b, c]) { return a === 1 && b === 2 && c === void undefined; @@ -12160,6 +12288,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a, b, c]) { return a === 1 && b === 2 && c === void undefined; @@ -12235,6 +12364,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a, b, c]) { return a === 1 && b === 2 && c === void undefined; @@ -12312,6 +12442,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
Error
Error
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -12391,6 +12522,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a,]) { return a === 1; @@ -12466,6 +12598,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function({c, x:d, e}) { return c === 7 && d === 8 && e === void undefined; @@ -12542,6 +12675,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function({toFixed}, {slice}) { return toFixed === Number.prototype.toFixed @@ -12618,6 +12752,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function({a,}) { return a === 1; @@ -12699,6 +12834,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
try { (function({a}){}(null)); @@ -12781,6 +12917,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var qux = "corge"; return function({ [qux]: grault }) { @@ -12858,6 +12995,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([e, {x:f, g}], {h, x:[i]}) { return e === 9 && f === 10 && g === void undefined @@ -12935,6 +13073,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function({a, x:b, y:e}, [c, d]) { return arguments[0].a === 1 && arguments[0].x === 2 @@ -13012,6 +13151,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return new Function("{a, x:b, y:e}","[c, d]", "return a === 1 && b === 2 && c === 3 && " @@ -13086,6 +13226,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function({a, b}, [c, d]){}.length === 2;
}
@@ -13160,6 +13301,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function([a, ...b], [c, ...d]) { return a === 3 && b instanceof Array && (b + "") === "4,5" && @@ -13236,6 +13378,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function ([],{}){ return arguments[0] + '' === "3,4" && arguments[1].x === "foo"; @@ -13313,6 +13456,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function({a = 1, b = 0, c = 3, x:d = 0, y:e = 5}, [f = 6, g = 0, h = 8]) { @@ -13393,6 +13537,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (function({a=function(){ return typeof b === 'undefined'; @@ -13471,6 +13616,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return new Function("{a = 1, b = 0, c = 3, x:d = 0, y:e = 5}", "return a === 1 && b === 2 && c === 3 && d === 4 && e === 5;" @@ -13546,6 +13692,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return ((a, {b: x = 0, c: y = 3}) => { return a === 1 && x === 2 && y === 3; @@ -13621,6 +13768,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return ((a, {b = 0, c = 3}) => { return a === 1 && b === 2 && c === 3; @@ -13706,6 +13854,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
try { eval('var d = function d([d]) { return d };'); @@ -13732,7 +13881,7 @@

+

Unicode code point escapes

@@ -13798,12 +13947,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return '\u{1d306}' === '\ud834\udf06';
}
@@ -13870,12 +14020,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var \u{102C0} = 2; return \u{102C0} === 2;
} @@ -13943,12 +14094,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var o = { \u{102C0} : 2 }; return o['\ud800\udec0'] === 2;
} @@ -14016,12 +14168,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var o = { '\ud800\udec0' : 2 }; return o.\u{102C0} === 2;
} @@ -14029,7 +14182,7 @@

+

new.target

@@ -14101,13 +14254,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new function f() { @@ -14188,13 +14342,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new function f() { @@ -14217,7 +14372,7 @@

+

const

@@ -14286,10 +14441,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
const foo = 123; return (foo === 123);
} @@ -14356,6 +14512,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
const bar = 123; { const bar = 456; } @@ -14435,6 +14592,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
try { { const bar = 456; } @@ -14517,6 +14675,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
const bar = 1; try { @@ -14598,6 +14757,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
const baz = 1; try { @@ -14676,6 +14836,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
const baz = 1; for(const baz = 0; false;) {} @@ -14753,6 +14914,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
Error
+
function(){
var scopes = []; for(const i in { a:1, b:1 }) { @@ -14832,6 +14994,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
Error
+
function(){
var scopes = []; for(const i of ['a','b']) { @@ -14911,6 +15074,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var passed = (function(){ try { qux; } catch(e) { return true; }}()); function fn() { passed &= qux === 456; } @@ -14990,12 +15154,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
"use strict"; const foo = 123; @@ -15066,12 +15231,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; const bar = 123; @@ -15147,12 +15313,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; try { @@ -15231,12 +15398,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; const bar = 1; @@ -15314,12 +15482,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; const baz = 1; @@ -15394,12 +15563,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; const baz = 1; @@ -15473,12 +15643,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
'use strict'; var scopes = []; @@ -15554,12 +15725,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
'use strict'; var scopes = []; @@ -15635,12 +15807,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; var passed = (function(){ try { qux; } catch(e) { return true; }}()); @@ -15652,7 +15825,7 @@

+

let

@@ -15717,6 +15890,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
let foo = 123; return (foo === 123);
} @@ -15791,6 +15965,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
let bar = 123; { let bar = 456; } @@ -15870,6 +16045,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
try { { let bar = 456; } @@ -15952,6 +16128,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
let bar = 1; try { @@ -16030,6 +16207,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
let baz = 1; for(let baz = 0; false;) {} @@ -16107,6 +16285,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = (function(){ try { qux; } catch(e) { return true; }}()); function fn() { passed &= qux === 456; } @@ -16193,6 +16372,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
let scopes = []; for(let i = 0; i < 2; i++) { @@ -16280,6 +16460,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
try { Function("function f(e) { for (let e in {}) e }"); @@ -16360,12 +16541,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; let foo = 123; @@ -16436,12 +16618,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; let bar = 123; @@ -16517,12 +16700,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; try { @@ -16601,12 +16785,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; let bar = 1; @@ -16681,12 +16866,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; let baz = 1; @@ -16760,12 +16946,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; var passed = (function(){ try { qux; } catch(e) { return true; }}()); @@ -16848,12 +17035,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
No
+
function(){
'use strict'; let scopes = []; @@ -16936,12 +17124,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
+
function(){
try { Function("'use strict'; function f(e) { for (let e in {}) e }"); @@ -16953,7 +17142,7 @@

+

@@ -17028,12 +17217,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
+
function(){
'use strict'; if (f() !== 1) return false; @@ -17056,7 +17246,7 @@

+

arrow functions

@@ -17122,12 +17312,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
return (() => 5)() === 5;
}
@@ -17194,12 +17385,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var b = x => x + "foo"; return (b("fee fie foe ") === "fee fie foe foo");
} @@ -17267,12 +17459,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var c = (v, w, x, y, z) => "" + v + w + x + y + z; return (c(6, 5, 4, 3, 2) === "65432");
} @@ -17341,12 +17534,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
+
function(){
var d = { x : "bar", y : function() { return z => this.x + z; }}.y(); var e = { x : "baz", y : d }; @@ -17416,12 +17610,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
+
function(){
var d = { x : "foo", y : function() { return () => this.x; }}; var e = { x : "bar" }; @@ -17491,12 +17686,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
+
function(){
var d = { x : "bar", y : function() { return z => this.x + z; }}; var e = { x : "baz" }; @@ -17565,12 +17761,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
+
function(){
var f = (function() { return z => arguments[0]; }(5)); return f(6) === 5;
} @@ -17639,12 +17836,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
+
function(){
return (() => { try { Function("x\n => 2")(); } catch(e) { return true; } @@ -17712,6 +17910,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
No
+
function(){
return (() => { try { Function("0 || () => 2")(); } catch(e) { return true; } @@ -17788,12 +17987,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
+
function(){
var a = () => 5; return !a.hasOwnProperty("prototype");
} @@ -17871,6 +18071,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var received; @@ -17966,6 +18167,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class B { qux() { @@ -18052,13 +18254,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function C() { return x => new.target; @@ -18068,7 +18271,7 @@

+

class

@@ -18133,6 +18336,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C {} return typeof C === "function";
} @@ -18211,6 +18415,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C {} var c1 = C; @@ -18288,6 +18493,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return typeof class C {} === "function";
}
@@ -18359,6 +18565,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return typeof class {} === "function";
}
@@ -18434,6 +18641,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { constructor() { this.x = 1; } @@ -18513,6 +18721,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { method() { return 2; } @@ -18592,6 +18801,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { "foo bar"() { return 2; } @@ -18672,6 +18882,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var foo = "method"; class C { @@ -18756,6 +18967,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { ; @@ -18839,6 +19051,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { static method() { return 3; } @@ -18919,6 +19132,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var foo = "method"; class C { @@ -19001,6 +19215,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var baz = false; class C { @@ -19084,6 +19299,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var garply = "foo", grault = "bar", baz = false; class C { @@ -19167,6 +19383,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var baz = false; class C { @@ -19250,6 +19467,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var garply = "foo", grault = "bar", baz = false; class C { @@ -19332,6 +19550,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { method() { return typeof C === "function"; } @@ -19414,6 +19633,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
try { var B = class C { @@ -19495,6 +19715,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { foo() {} @@ -19573,6 +19794,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { static method() { return this === void undefined; } @@ -19653,6 +19875,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C {} try { @@ -19733,6 +19956,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class B {} class C extends B {} @@ -19810,6 +20034,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var B; class C extends (B = class {}) {} @@ -19888,6 +20113,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends null { constructor() { return Object.create(null); } @@ -19975,6 +20201,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var passed = false; new function f() { @@ -20001,7 +20228,7 @@

+

super

@@ -20073,6 +20300,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var passed = false; class B { @@ -20158,6 +20386,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class B { constructor(a) { return ["foo" + a]; } @@ -20242,6 +20471,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class B {} B.prototype.qux = "foo"; @@ -20326,6 +20556,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class B { qux(a) { return "foo" + a; } @@ -20411,6 +20642,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class B { qux(a) { return this.foo + a; } @@ -20498,6 +20730,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var passed; class B { @@ -20587,6 +20820,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class B { qux() { return "bar"; } @@ -20680,6 +20914,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
// checks that super() is *not* a synonym of super.constructor() var passed; @@ -20706,7 +20941,7 @@

+

generators

@@ -20782,12 +21017,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
function * generator(){ yield 5; yield 6; @@ -20873,12 +21109,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var generator = function * (){ yield 5; yield 6; @@ -20964,12 +21201,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
function * generator(){ yield this.x; yield this.y; @@ -21051,6 +21289,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
No
+
function(){
function * generator(){ yield this.x; yield this.y; @@ -21140,12 +21379,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var sent; function * generator(){ @@ -21228,12 +21468,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
function * generatorFn(){} var ownProto = Object.getPrototypeOf(generatorFn()); @@ -21321,12 +21562,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
+
function(){
function * generatorFn(){} var g = generatorFn(); @@ -21417,12 +21659,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
function * g (){} var iterator = new g.constructor("a","b","c","yield a; yield b; yield c;")(5,6,7); @@ -21511,12 +21754,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var passed = false; function * generator(){ @@ -21601,6 +21845,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function * generator(){ yield 5; yield 6; @@ -21691,12 +21936,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var passed; function * generator(){ @@ -21778,12 +22024,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * [5, 6]; @@ -21867,12 +22114,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * [,,]; @@ -21956,12 +22204,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * "56"; @@ -22045,12 +22294,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * "𠮷𠮶"; @@ -22136,12 +22386,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * (function*(){ yield 5; yield 6; yield 7; }()); @@ -22229,12 +22480,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * global.__createIterableObject([5, 6, 7]); @@ -22322,12 +22574,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * Object.create(__createIterableObject([5, 6, 7])); @@ -22416,12 +22669,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var iterator = (function * generator() { yield * [5]; @@ -22513,6 +22767,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var closed = ''; var iter = __createIterableObject([1, 2, 3], { @@ -22615,6 +22870,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
No
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -22715,12 +22971,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var o = { * generator() { @@ -22810,12 +23067,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var o = { * "foo bar"() { @@ -22906,12 +23164,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var garply = "generator"; var o = { @@ -23000,6 +23259,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { * generator() { @@ -23096,6 +23356,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var garply = "generator"; class C { @@ -23189,6 +23450,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { * generator() { @@ -23219,7 +23481,7 @@

+

typed arrays

@@ -23289,10 +23551,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Int8Array(buffer); view[0] = 0x80; @@ -23364,10 +23627,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Uint8Array(buffer); view[0] = 0x100; @@ -23439,10 +23703,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Uint8ClampedArray(buffer); view[0] = 0x100; @@ -23514,10 +23779,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Int16Array(buffer); view[0] = 0x8000; @@ -23589,10 +23855,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Uint16Array(buffer); view[0] = 0x10000; @@ -23664,10 +23931,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Int32Array(buffer); view[0] = 0x80000000; @@ -23739,10 +24007,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Uint32Array(buffer); view[0] = 0x100000000; @@ -23814,10 +24083,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Float32Array(buffer); view[0] = 0.1; @@ -23889,10 +24159,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new Float64Array(buffer); view[0] = 0.1; @@ -23965,10 +24236,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24042,10 +24314,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24119,10 +24392,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24196,10 +24470,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24273,10 +24548,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24350,10 +24626,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24427,10 +24704,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24504,10 +24782,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -24573,6 +24852,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
return typeof ArrayBuffer[Symbol.species] === 'function';
}
@@ -24671,11 +24951,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
var buffer = new ArrayBuffer(64); var constructors = [ @@ -24779,12 +25060,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
var constructors = [ 'Int8Array', @@ -24885,6 +25167,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var constructors = [ 'Int8Array', @@ -24990,12 +25273,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.from === "function" && typeof Uint8Array.from === "function" && @@ -25077,12 +25361,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.of === "function" && typeof Uint8Array.of === "function" && @@ -25165,11 +25450,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Int8Array.prototype.subarray === "function" && typeof Uint8Array.prototype.subarray === "function" && @@ -25251,12 +25537,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.join === "function" && typeof Uint8Array.prototype.join === "function" && @@ -25338,12 +25625,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.indexOf === "function" && typeof Uint8Array.prototype.indexOf === "function" && @@ -25425,12 +25713,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.lastIndexOf === "function" && typeof Uint8Array.prototype.lastIndexOf === "function" && @@ -25512,12 +25801,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.slice === "function" && typeof Uint8Array.prototype.slice === "function" && @@ -25599,12 +25889,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.every === "function" && typeof Uint8Array.prototype.every === "function" && @@ -25686,12 +25977,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.filter === "function" && typeof Uint8Array.prototype.filter === "function" && @@ -25773,12 +26065,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.forEach === "function" && typeof Uint8Array.prototype.forEach === "function" && @@ -25860,12 +26153,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.map === "function" && typeof Uint8Array.prototype.map === "function" && @@ -25947,12 +26241,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.reduce === "function" && typeof Uint8Array.prototype.reduce === "function" && @@ -26034,12 +26329,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.reduceRight === "function" && typeof Uint8Array.prototype.reduceRight === "function" && @@ -26121,12 +26417,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.reverse === "function" && typeof Uint8Array.prototype.reverse === "function" && @@ -26208,12 +26505,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.some === "function" && typeof Uint8Array.prototype.some === "function" && @@ -26295,12 +26593,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.sort === "function" && typeof Uint8Array.prototype.sort === "function" && @@ -26382,12 +26681,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.copyWithin === "function" && typeof Uint8Array.prototype.copyWithin === "function" && @@ -26469,12 +26769,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.find === "function" && typeof Uint8Array.prototype.find === "function" && @@ -26556,12 +26857,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.findIndex === "function" && typeof Uint8Array.prototype.findIndex === "function" && @@ -26643,12 +26945,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Int8Array.prototype.fill === "function" && typeof Uint8Array.prototype.fill === "function" && @@ -26731,11 +27034,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Int8Array.prototype.keys === "function" && typeof Uint8Array.prototype.keys === "function" && @@ -26818,11 +27122,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Int8Array.prototype.values === "function" && typeof Uint8Array.prototype.values === "function" && @@ -26905,11 +27210,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Int8Array.prototype.entries === "function" && typeof Uint8Array.prototype.entries === "function" && @@ -26992,11 +27298,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return typeof Int8Array.prototype[Symbol.iterator] === "function" && typeof Uint8Array.prototype[Symbol.iterator] === "function" && @@ -27075,6 +27382,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
return typeof Int8Array[Symbol.species] === "function" && typeof Uint8Array[Symbol.species] === "function" && @@ -27098,7 +27406,7 @@

+

Map

@@ -27170,11 +27478,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
var key = {}; var map = new Map(); @@ -27251,11 +27560,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var key1 = {}; var key2 = {}; @@ -27333,11 +27643,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
new Map(); try { @@ -27411,11 +27722,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
new Map(null); return true;
} @@ -27493,11 +27805,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var passed = false; var _set = Map.prototype.set; @@ -27577,6 +27890,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -27660,11 +27974,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var map = new Map(); return map.set(0, 0) === map;
} @@ -27737,12 +28052,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
var map = new Map(); map.set(-0, "foo"); @@ -27820,11 +28136,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var key = {}; var map = new Map(); @@ -27896,11 +28213,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
return typeof Map.prototype.delete === "function";
}
@@ -27967,11 +28285,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Map.prototype.clear === "function";
}
@@ -28038,11 +28357,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Map.prototype.forEach === "function";
}
@@ -28109,11 +28429,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Map.prototype.keys === "function";
}
@@ -28180,11 +28501,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Map.prototype.values === "function";
}
@@ -28251,11 +28573,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Map.prototype.entries === "function";
}
@@ -28322,11 +28645,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return typeof Map.prototype[Symbol.iterator] === "function";
}
@@ -28400,11 +28724,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
new Map(); var obj = {}; @@ -28487,12 +28812,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
// Iterator instance var iterator = new Map()[Symbol.iterator](); @@ -28566,6 +28892,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var prop = Object.getOwnPropertyDescriptor(Map, Symbol.species); return 'get' in prop && Map[Symbol.species] === Map;
} @@ -28582,7 +28909,7 @@

+

Set

@@ -28655,11 +28982,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
var obj = {}; var set = new Set(); @@ -28736,11 +29064,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var obj1 = {}; var obj2 = {}; @@ -28817,11 +29146,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
new Set(); try { @@ -28895,11 +29225,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
new Set(null); return true;
} @@ -28977,11 +29308,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var passed = false; var _add = Set.prototype.add; @@ -29064,6 +29396,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -29150,11 +29483,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var set = new Set(); return set.add(0) === set;
} @@ -29227,12 +29561,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
var set = new Set(); set.add(-0); @@ -29312,11 +29647,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var obj = {}; var set = new Set(); @@ -29390,11 +29726,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
return typeof Set.prototype.delete === "function";
}
@@ -29461,11 +29798,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Set.prototype.clear === "function";
}
@@ -29532,11 +29870,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Set.prototype.forEach === "function";
}
@@ -29603,11 +29942,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Set.prototype.keys === "function";
}
@@ -29674,11 +30014,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Set.prototype.values === "function";
}
@@ -29745,11 +30086,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
return typeof Set.prototype.entries === "function";
}
@@ -29816,11 +30158,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return typeof Set.prototype[Symbol.iterator] === "function";
}
@@ -29894,11 +30237,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
new Set(); var obj = {}; @@ -29981,12 +30325,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
// Iterator instance var iterator = new Set()[Symbol.iterator](); @@ -30060,6 +30405,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var prop = Object.getOwnPropertyDescriptor(Set, Symbol.species); return 'get' in prop && Set[Symbol.species] === Set;
} @@ -30076,7 +30422,7 @@

+

WeakMap

@@ -30148,11 +30494,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
var key = {}; var weakmap = new WeakMap(); @@ -30229,11 +30576,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var key1 = {}; var key2 = {}; @@ -30311,11 +30659,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
new WeakMap(); try { @@ -30389,11 +30738,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
new WeakMap(null); return true;
} @@ -30471,11 +30821,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var passed = false; var _set = WeakMap.prototype.set; @@ -30555,11 +30906,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
var f = Object.freeze({}); var m = new WeakMap; @@ -30632,6 +30984,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -30716,11 +31069,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
+
function(){
var weakmap = new WeakMap(); var key = {}; @@ -30789,11 +31143,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
return typeof WeakMap.prototype.delete === "function";
}
@@ -30866,12 +31221,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Flag
+
function(){
if (!("clear" in WeakMap.prototype)) { return true; @@ -30947,12 +31303,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var m = new WeakMap; return m.has(1) === false @@ -31029,11 +31386,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
+
function(){
new WeakMap(); var obj = {}; @@ -31047,7 +31405,7 @@

+

WeakSet

@@ -31120,11 +31478,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var obj1 = {}; var weakset = new WeakSet(); @@ -31200,11 +31559,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var obj1 = {}, obj2 = {}; var weakset = new WeakSet([obj1, obj2]); @@ -31280,11 +31640,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
new WeakSet(); try { @@ -31358,11 +31719,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
new WeakSet(null); return true;
} @@ -31440,11 +31802,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var passed = false; var _add = WeakSet.prototype.add; @@ -31524,6 +31887,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -31608,11 +31972,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var weakset = new WeakSet(); var obj = {}; @@ -31681,11 +32046,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return typeof WeakSet.prototype.delete === "function";
}
@@ -31758,12 +32124,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
if (!("clear" in WeakSet.prototype)) { return true; @@ -31838,12 +32205,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var s = new WeakSet; return s.has(1) === false @@ -31919,11 +32287,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
new WeakSet(); var obj = {}; @@ -31937,7 +32306,7 @@

+

Proxy

@@ -32007,6 +32376,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
new Proxy({}, {}); try { @@ -32085,6 +32455,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
new Proxy({}, {}); return !Proxy.hasOwnProperty('prototype');
} @@ -32163,6 +32534,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = { }; var proxy = new Proxy(proxied, { @@ -32246,6 +32618,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = { }; var proxy = Object.create(new Proxy(proxied, { @@ -32350,6 +32723,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; var proxied = { }; @@ -32456,6 +32830,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = { }; var passed = false; @@ -32543,6 +32918,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = { }; var passed = false; @@ -32649,6 +33025,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -32754,6 +33131,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var passed = false; @@ -32839,6 +33217,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var passed = false; @@ -32941,6 +33320,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -33043,6 +33423,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var passed = false; @@ -33136,6 +33517,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -33235,6 +33617,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var fakeDesc = { value: "foo", configurable: true }; @@ -33369,6 +33752,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -33502,6 +33886,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var passed = false; @@ -33613,6 +33998,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -33719,6 +34105,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var fakeProto = {}; @@ -33810,6 +34197,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -33906,6 +34294,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var newProto = {}; @@ -34004,6 +34393,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -34099,6 +34489,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var passed = false; @@ -34200,6 +34591,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -34302,6 +34694,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var passed = false; @@ -34396,6 +34789,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -34489,6 +34883,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = {}; var passed = false; @@ -34599,6 +34994,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -34710,6 +35106,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = function(){}; var passed = false; @@ -34804,6 +35201,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy(function(){}, { @@ -34896,6 +35294,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var proxied = function(){}; var passed = false; @@ -34998,6 +35397,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = false; new Proxy({},{}); @@ -35100,6 +35500,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = Proxy.revocable({}, { get: function() { return 5; } }); var passed = (obj.proxy.foo === 5); @@ -35179,6 +35580,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Array.isArray(new Proxy([], {}));
}
@@ -35250,6 +35652,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return JSON.stringify(new Proxy(['foo'], {})) === '["foo"]';
}
+

Reflect

@@ -35328,6 +35731,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Reflect.get({ qux: 987 }, "qux") === 987;
}
@@ -35401,6 +35805,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = {}; Reflect.set(obj, "quux", 654); @@ -35474,6 +35879,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Reflect.has({ qux: 987 }, "qux");
}
@@ -35547,6 +35953,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = { bar: 456 }; Reflect.deleteProperty(obj, "bar"); @@ -35623,6 +36030,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = { baz: 789 }; var desc = Reflect.getOwnPropertyDescriptor(obj, "baz"); @@ -35700,6 +36108,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = {}; Reflect.defineProperty(obj, "foo", { value: 123 }); @@ -35774,6 +36183,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Reflect.getPrototypeOf([]) === Array.prototype;
}
@@ -35847,6 +36257,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = {}; Reflect.setPrototypeOf(obj, Array.prototype); @@ -35921,6 +36332,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Reflect.isExtensible({}) && !Reflect.isExtensible(Object.preventExtensions({}));
} @@ -35995,6 +36407,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = {}; Reflect.preventExtensions(obj); @@ -36072,6 +36485,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = Object.create({ C: true }); obj.A = true; @@ -36155,6 +36569,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var s1 = Symbol(), s2 = Symbol(), s3 = Symbol(); var proto = {}; @@ -36234,6 +36649,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Reflect.apply(Array.prototype.push, [1,2], [3,4,5]) === 5;
}
@@ -36307,6 +36723,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Reflect.construct(function(a, b, c) { this.qux = a + b + c; @@ -36384,6 +36801,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Reflect.construct(function(a, b, c) { if (new.target === Object) { @@ -36461,6 +36879,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function F(){} var obj = Reflect.construct(function(){ this.y = 1; }, [], F); @@ -36537,6 +36956,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function F(){} var obj = Reflect.construct(Array, [], F); @@ -36614,6 +37034,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function F(){} var obj = Reflect.construct(RegExp, ["baz","g"], F); @@ -36690,6 +37111,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function F(){} var obj = Reflect.construct(Function, ["return 2"], F); @@ -36782,6 +37204,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function F(){} var p1 = Reflect.construct(Promise,[function(resolve, reject) { resolve("foo"); }], F); @@ -36815,7 +37238,7 @@

+

Promise

@@ -36903,11 +37326,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var p1 = new Promise(function(resolve, reject) { resolve("foo"); }); var p2 = new Promise(function(resolve, reject) { reject("quux"); }); @@ -37001,11 +37425,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
new Promise(function(){}); try { @@ -37083,11 +37508,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
new Promise(function(){}); try { @@ -37173,11 +37599,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var fulfills = Promise.all([ new Promise(function(resolve) { setTimeout(resolve,2000,"foo"); }), @@ -37271,12 +37698,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
var fulfills = Promise.all(global.__createIterableObject([ new Promise(function(resolve) { setTimeout(resolve,2000,"foo"); }), @@ -37371,11 +37799,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var fulfills = Promise.race([ new Promise(function(resolve) { setTimeout(resolve,1000,"foo"); }), @@ -37469,12 +37898,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
var fulfills = Promise.race(global.__createIterableObject([ new Promise(function(resolve) { setTimeout(resolve,1000,"foo"); }), @@ -37552,6 +37982,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var prop = Object.getOwnPropertyDescriptor(Promise, Symbol.species); return 'get' in prop && Promise[Symbol.species] === Promise;
} @@ -37568,7 +37999,7 @@

+

Symbol

@@ -37639,11 +38070,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var object = {}; var symbol = Symbol(); @@ -37714,11 +38146,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return typeof Symbol() === "symbol";
}
@@ -37797,11 +38230,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var object = {}; var symbol = Symbol(); @@ -37889,11 +38323,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var object = {}; var symbol = Symbol(); @@ -37974,11 +38409,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var symbol = Symbol(); var passed = symbol.foo === void undefined; @@ -38063,11 +38499,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var symbol = Symbol(); @@ -38146,12 +38583,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return String(Symbol("foo")) === "Symbol(foo)";
}
@@ -38223,11 +38661,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var symbol = Symbol(); try { @@ -38303,6 +38742,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var symbol = Symbol(); var symbolObject = Object(symbol); @@ -38387,11 +38827,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var object = { foo: Symbol() }; object[Symbol()] = 1; @@ -38471,6 +38912,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var testSymbolObject = function (sym) { var object = { foo: sym }; @@ -38560,11 +39002,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var symbol = Symbol.for('foo'); return Symbol.for('foo') === symbol && @@ -38573,7 +39016,7 @@

+

well-known symbols

@@ -38643,6 +39086,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var passed = false; var obj = { foo: true }; @@ -38725,6 +39169,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var a = [], b = []; b[Symbol.isConcatSpreadable] = false; @@ -38816,10 +39261,11 @@

No
No
No
No
No
No
No
No
+
function(){
if (typeof Symbol !== 'function' || !Symbol.isConcatSpreadable) { return null; @@ -38899,11 +39345,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return "iterator" in Symbol;
}
@@ -38972,12 +39419,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
return (function() { return typeof arguments[Symbol.iterator] === 'function' @@ -39043,6 +39491,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
return "species" in Symbol;
}
@@ -39119,6 +39568,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var obj = []; obj.constructor = {}; @@ -39200,6 +39650,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var obj = []; obj.constructor = {}; @@ -39281,6 +39732,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var obj = []; obj.constructor = {}; @@ -39362,6 +39814,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var obj = []; obj.constructor = {}; @@ -39443,6 +39896,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var obj = []; obj.constructor = {}; @@ -39527,6 +39981,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
No
No
No
No
+
function(){
var passed = false; var obj = { constructor: {} }; @@ -39610,6 +40065,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var promise = new Promise(function(resolve){ resolve(42); }); var FakePromise1 = promise.constructor = function(exec){ exec(function(){}, function(){}); }; @@ -39690,6 +40146,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var O = {}; O[Symbol.replace] = function(){ @@ -39769,6 +40226,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var O = {}; O[Symbol.search] = function(){ @@ -39848,6 +40306,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var O = {}; O[Symbol.split] = function(){ @@ -39927,6 +40386,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var O = {}; O[Symbol.match] = function(){ @@ -40006,6 +40466,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var re = /./; re[Symbol.match] = false; @@ -40086,6 +40547,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var re = /./; try { @@ -40169,6 +40631,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var re = /./; try { @@ -40252,6 +40715,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var re = /./; try { @@ -40339,6 +40803,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var a = {}, b = {}, c = {}; var passed = 0; @@ -40421,6 +40886,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
No
+
function(){
var a = {}; a[Symbol.toStringTag] = "foo"; @@ -40507,6 +40973,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Yes
Yes
+
function(){
var s = Symbol.toStringTag; var passed = true; @@ -40623,6 +41090,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Error
No
Error
Error
No
+
function(){
var passed = true; var s = Symbol.toStringTag; @@ -40720,6 +41188,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
No
+
function(){
var s = Symbol.toStringTag; return Math[s] === "Math" @@ -40800,11 +41269,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var a = { foo: 1, bar: 2 }; a[Symbol.unscopables] = { bar: true }; @@ -40822,7 +41292,7 @@

+

Object static methods

@@ -40889,12 +41359,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var o = Object.assign({a:true}, {b:true}, {c:true}); return "a" in o && "b" in o && "c" in o;
} @@ -40965,10 +41436,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return typeof Object.is === 'function' && Object.is(NaN, NaN) && @@ -41045,11 +41517,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var o = {}; var sym = Symbol(), sym2 = Symbol(), sym3 = Symbol(); @@ -41124,18 +41597,19 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return Object.setPrototypeOf({}, Array.prototype) instanceof Array;
}
+

function "name" property

@@ -41205,10 +41679,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
function foo(){}; return foo.name === 'foo' && @@ -41279,10 +41754,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return (function foo(){}).name === 'foo' && (function(){}).name === '';
} @@ -41347,6 +41823,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return (new Function).name === "anonymous";
}
@@ -41422,12 +41899,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
function foo() {}; return foo.bind({}).name === "bound foo" && @@ -41494,6 +41972,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var foo = function() {}; var bar = function baz() {}; @@ -41571,6 +42050,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var o = { foo: function(){}, bar: function baz(){}}; o.qux = function(){}; @@ -41649,6 +42129,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var o = { get foo(){}, set foo(x){} }; var descriptor = Object.getOwnPropertyDescriptor(o, "foo"); @@ -41727,12 +42208,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var o = { foo(){} }; return o.foo.name === "foo";
} @@ -41800,12 +42282,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var f = "foo"; return ({f() { return f; }}).f() === "foo";
} @@ -41877,6 +42360,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var sym1 = Symbol("foo"); var sym2 = Symbol(); @@ -41960,6 +42444,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class foo {}; class bar { static name() {} }; @@ -42035,6 +42520,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return class foo {}.name === "foo" && typeof class bar { static name() {} }.name === "function";
} @@ -42111,6 +42597,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
No
Error
Error
+
function(){
var foo = class {}; var bar = class baz {}; @@ -42191,6 +42678,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
No
Error
Error
+
function(){
var o = { foo: class {}, bar: class baz {}}; o.qux = class {}; @@ -42268,6 +42756,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { foo(){} }; return (new C).foo.name === "foo";
} @@ -42341,6 +42830,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { static foo(){} }; return C.foo.name === "foo";
} @@ -42418,12 +42908,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
var descriptor = Object.getOwnPropertyDescriptor(function f(){},"name"); return descriptor.enumerable === false && @@ -42433,7 +42924,7 @@

+

String static methods

@@ -42499,12 +42990,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof String.raw === 'function';
}
@@ -42570,19 +43062,20 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof String.fromCodePoint === 'function';
}
+

String.prototype methods

@@ -42648,12 +43141,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof String.prototype.codePointAt === 'function';
}
@@ -42722,11 +43216,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof String.prototype.normalize === "function" && "c\u0327\u0301".normalize("NFC") === "\u1e09" @@ -42795,12 +43290,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof String.prototype.repeat === 'function' && "foo".repeat(3) === "foofoofoo";
} @@ -42868,12 +43364,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof String.prototype.startsWith === 'function' && "foobar".startsWith("foo");
} @@ -42944,12 +43441,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
try { "a".startsWith(/./); @@ -43020,12 +43518,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof String.prototype.endsWith === 'function' && "foobar".endsWith("bar");
} @@ -43096,12 +43595,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
try { "a".endsWith(/./); @@ -43172,12 +43672,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof String.prototype.includes === 'function' && "foobar".includes("oba");
} @@ -43245,11 +43746,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return typeof String.prototype[Symbol.iterator] === 'function';
}
@@ -43325,12 +43827,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
+
function(){
// Iterator instance var iterator = ''[Symbol.iterator](); @@ -43347,7 +43850,7 @@

+

RegExp.prototype properties

@@ -43411,6 +43914,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return /./igm.flags === "gim" && /./.flags === "";
}
@@ -43482,6 +43986,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return typeof RegExp.prototype[Symbol.match] === 'function';
}
@@ -43553,6 +44058,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return typeof RegExp.prototype[Symbol.replace] === 'function';
}
@@ -43624,6 +44130,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return typeof RegExp.prototype[Symbol.split] === 'function';
}
@@ -43695,6 +44202,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return typeof RegExp.prototype[Symbol.search] === 'function';
}
@@ -43766,6 +44274,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var prop = Object.getOwnPropertyDescriptor(RegExp, Symbol.species); return 'get' in prop && RegExp[Symbol.species] === RegExp;
} @@ -43782,7 +44291,7 @@

+

Array static methods

@@ -43848,12 +44357,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Array.from({ 0: "foo", 1: "bar", length: 2 }) + '' === "foo,bar";
}
@@ -43920,12 +44430,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var iterable = (function*(){ yield 1; yield 2; yield 3; }()); return Array.from(iterable) + '' === "1,2,3";
} @@ -43993,12 +44504,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject([1, 2, 3]); return Array.from(iterable) + '' === "1,2,3";
} @@ -44066,12 +44578,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject([1, 2, 3]); return Array.from(Object.create(iterable)) + '' === "1,2,3";
} @@ -44140,12 +44653,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Array.from({ 0: "foo", 1: "bar", length: 2 }, function(e, i) { return e + this.baz + i; @@ -44216,12 +44730,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var iterable = (function*(){ yield "foo"; yield "bar"; yield "bal"; }()); return Array.from(iterable, function(e, i) { @@ -44293,12 +44808,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject(["foo", "bar", "bal"]); return Array.from(iterable, function(e, i) { @@ -44370,12 +44886,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var iterable = global.__createIterableObject(["foo", "bar", "bal"]); return Array.from(Object.create(iterable), function(e, i) { @@ -44448,6 +44965,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var closed = false; var iter = global.__createIterableObject([1, 2, 3], { @@ -44530,12 +45048,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Array.of === 'function' && Array.of(2)[0] === 2;
} @@ -44600,6 +45119,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var prop = Object.getOwnPropertyDescriptor(Array, Symbol.species); return 'get' in prop && Array[Symbol.species] === Array;
} @@ -44616,7 +45136,7 @@

+

Array.prototype methods

@@ -44682,12 +45202,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
return typeof Array.prototype.copyWithin === 'function';
}
@@ -44753,12 +45274,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof Array.prototype.find === 'function';
}
@@ -44824,12 +45346,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof Array.prototype.findIndex === 'function';
}
@@ -44895,12 +45418,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
+
function(){
return typeof Array.prototype.fill === 'function';
}
@@ -44967,11 +45491,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Array.prototype.keys === 'function';
}
@@ -45024,6 +45549,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return typeof Array.prototype.values === 'function';
}
@@ -45109,11 +45635,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Array.prototype.entries === 'function';
}
@@ -45223,10 +45750,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
if ([0, 1, 2].splice(0).length !== 3) { // IE <= 8 and other pre-ES6 engines fail this check @@ -45335,11 +45863,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return typeof Array.prototype[Symbol.iterator] === 'function';
}
@@ -45412,6 +45941,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
// Iterator instance var iterator = [][Symbol.iterator](); @@ -45505,11 +46035,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var unscopables = Array.prototype[Symbol.unscopables]; if (!unscopables) { @@ -45524,7 +46055,7 @@

+

Number properties

@@ -45592,10 +46123,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return typeof Number.isFinite === 'function';
}
@@ -45662,11 +46194,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Number.isInteger === 'function';
}
@@ -45733,11 +46266,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Number.isSafeInteger === 'function';
}
@@ -45805,10 +46339,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return typeof Number.isNaN === 'function';
}
@@ -45877,11 +46412,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
var actualGlobal = Function('return this')(); return typeof Number.parseFloat === 'function' @@ -45952,11 +46488,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
var actualGlobal = Function('return this')(); return typeof Number.parseInt === 'function' @@ -46025,11 +46562,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Number.EPSILON === 'number';
}
@@ -46096,11 +46634,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Number.MIN_SAFE_INTEGER === 'number';
}
@@ -46167,18 +46706,19 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Number.MAX_SAFE_INTEGER === 'number';
}
+

Math methods

@@ -46245,11 +46785,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.clz32 === "function";
}
@@ -46316,11 +46857,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.imul === "function";
}
@@ -46387,11 +46929,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.sign === "function";
}
@@ -46458,11 +47001,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.log10 === "function";
}
@@ -46529,11 +47073,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.log2 === "function";
}
@@ -46600,11 +47145,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.log1p === "function";
}
@@ -46671,11 +47217,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.expm1 === "function";
}
@@ -46742,11 +47289,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.cosh === "function";
}
@@ -46813,11 +47361,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.sinh === "function";
}
@@ -46884,11 +47433,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.tanh === "function";
}
@@ -46955,11 +47505,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.acosh === "function";
}
@@ -47026,11 +47577,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.asinh === "function";
}
@@ -47097,11 +47649,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.atanh === "function";
}
@@ -47168,11 +47721,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.trunc === "function";
}
@@ -47239,11 +47793,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.fround === "function";
}
@@ -47310,11 +47865,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return typeof Math.cbrt === "function";
}
@@ -47384,11 +47940,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
return Math.hypot() === 0 && Math.hypot(1) === 1 && @@ -47398,7 +47955,7 @@

+

@@ -47465,6 +48022,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var tp = Date.prototype[Symbol.toPrimitive]; return tp.call(Object(2), "number") === 2 @@ -47489,7 +48047,7 @@

+

Array is subclassable

@@ -47558,6 +48116,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -47638,6 +48197,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -47715,6 +48275,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -47789,6 +48350,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Array {} return Array.isArray(new C());
} @@ -47862,6 +48424,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
No
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -47937,6 +48500,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
No
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -48012,6 +48576,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
No
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -48088,6 +48653,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
No
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -48165,6 +48731,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
No
Error
Error
+
function(){
class C extends Array {} var c = new C(); @@ -48241,6 +48808,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Array {} return C.from({ length: 0 }) instanceof C;
} @@ -48314,6 +48882,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Array {} return C.of(0) instanceof C;
} @@ -48329,7 +48898,7 @@

+

RegExp is subclassable

@@ -48395,6 +48964,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class R extends RegExp {} var r = new R("baz","g"); @@ -48470,6 +49040,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class R extends RegExp {} var r = new R("baz","g"); @@ -48545,6 +49116,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class R extends RegExp {} var r = new R("baz","g"); @@ -48620,6 +49192,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class R extends RegExp {} var r = new R("baz"); @@ -48636,7 +49209,7 @@

+

Function is subclassable

@@ -48702,6 +49275,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Function {} var c = new C("return 'foo';"); @@ -48777,6 +49351,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
Error
Error
+
function(){
class C extends Function {} var c = new C("return 'foo';"); @@ -48853,6 +49428,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Function {} var c = new C("this.bar = 2;"); @@ -48929,6 +49505,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Function {} var c = new C("x", "return this.bar + x;"); @@ -49004,6 +49581,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Function {} var c = new C("x", "return this.bar + x;"); @@ -49079,6 +49657,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
Error
Error
+
function(){
class C extends Function {} var c = new C("x", "y", "return this.bar + x + y;").bind({bar:1}, 2); @@ -49095,7 +49674,7 @@

+

Promise is subclassable

@@ -49181,6 +49760,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class P extends Promise {} var p1 = new P(function(resolve, reject) { resolve("foo"); }); @@ -49276,6 +49856,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Promise {} var c = new C(function(resolve, reject) { resolve("foo"); }); @@ -49364,6 +49945,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class P extends Promise {} var fulfills = P.all([ @@ -49465,6 +50047,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class P extends Promise {} var fulfills = P.race([ @@ -49494,7 +50077,7 @@

+

miscellaneous subclassables

@@ -49562,6 +50145,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Boolean {} var c = new C(true); @@ -49641,6 +50225,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Number {} var c = new C(6); @@ -49722,6 +50307,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
Error
Error
+
function(){
class C extends String {} var c = new C("golly"); @@ -49803,6 +50389,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C extends Error {} var c = new C(); @@ -49884,6 +50471,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var key = {}; class M extends Map {} @@ -49968,6 +50556,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var obj = {}; class S extends Set {} @@ -49996,7 +50585,7 @@

+

prototype of bound functions

@@ -50073,13 +50662,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
function correctProtoBound(proto) { var f = function(){}; @@ -50168,13 +50758,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
No
Error
Error
+
function(){
function correctProtoBound(proto) { var f = function*(){}; @@ -50263,13 +50854,14 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
No
Error
Error
+
function(){
function correctProtoBound(proto) { var f = ()=>5; @@ -50357,6 +50949,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
function correctProtoBound(proto) { class C {} @@ -50451,6 +51044,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
function correctProtoBound(superclass) { class C extends superclass { @@ -50476,7 +51070,7 @@

+

Proxy, internal 'get' calls

@@ -50544,6 +51138,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// ToPrimitive -> Get -> [[Get]] var get = []; @@ -50623,6 +51218,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// CreateListFromArrayLike -> Get -> [[Get]] var get = []; @@ -50702,6 +51298,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
Error
Error
Error
+
function(){
// InstanceofOperator -> GetMethod -> GetV -> [[Get]] // InstanceofOperator -> OrdinaryHasInstance -> Get -> [[Get]] @@ -50786,6 +51383,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// HasBinding -> Get -> [[Get]] var get = []; @@ -50868,6 +51466,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// CreateDynamicFunction -> GetPrototypeFromConstructor -> Get -> [[Get]] var get = []; @@ -50947,6 +51546,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// ClassDefinitionEvaluation -> Get -> [[Get]] var get = []; @@ -51037,6 +51637,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// IteratorComplete -> Get -> [[Get]] // IteratorValue -> Get -> [[Get]] @@ -51135,6 +51736,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// ToPropertyDescriptor -> Get -> [[Get]] var get = []; @@ -51222,6 +51824,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Object.assign -> Get -> [[Get]] var get = []; @@ -51301,6 +51904,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Object.defineProperties -> Get -> [[Get]] var get = []; @@ -51380,6 +51984,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Function.prototype.bind -> Get -> [[Get]] var get = []; @@ -51459,6 +52064,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Error.prototype.toString -> Get -> [[Get]] var get = []; @@ -51539,6 +52145,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// String.raw -> Get -> [[Get]] var get = []; @@ -51621,6 +52228,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// RegExp -> Get -> [[Get]] var get = []; @@ -51690,6 +52298,7 @@

No
No
No
No
No
No
No
No
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
// RegExp.prototype.flags -> Get -> [[Get]] var expected = []; @@ -51810,6 +52419,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// RegExp.prototype.test -> RegExpExec -> Get -> [[Get]] var get = []; @@ -51890,6 +52500,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// RegExp.prototype.toString -> Get -> [[Get]] var get = []; @@ -51931,6 +52542,7 @@

No
No
No
No
No
No
No
No
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
// RegExp.prototype[Symbol.match] -> Get -> [[Get]] var get = []; @@ -52056,6 +52668,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// RegExp.prototype[Symbol.replace] -> Get -> [[Get]] var get = []; @@ -52136,6 +52749,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
Error
+
function(){
// RegExp.prototype[Symbol.search] -> Get -> [[Get]] var get = []; @@ -52219,6 +52833,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// RegExp.prototype[Symbol.split] -> Get -> [[Get]] var get = []; @@ -52301,6 +52916,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.from -> Get -> [[Get]] var get = []; @@ -52386,6 +53002,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
Error
Error
Error
+
function(){
// Array.prototype.concat -> Get -> [[Get]] var get = []; @@ -52485,6 +53102,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
Error
Error
+
function(){
// Array.prototype methods -> Get -> [[Get]] var methods = ['copyWithin', 'every', 'fill', 'filter', 'find', 'findIndex', 'forEach', @@ -52578,6 +53196,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.pop -> Get -> [[Get]] var get = []; @@ -52657,6 +53276,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.reverse -> Get -> [[Get]] var get = []; @@ -52736,6 +53356,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.shift -> Get -> [[Get]] var get = []; @@ -52815,6 +53436,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
Error
Error
Error
Error
+
function(){
// Array.prototype.splice -> Get -> [[Get]] var get = []; @@ -52896,6 +53518,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.toString -> Get -> [[Get]] var get = []; @@ -52975,6 +53598,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// JSON.stringify -> Get -> [[Get]] var get = []; @@ -53054,6 +53678,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Promise resolve functions -> Get -> [[Get]] var get = []; @@ -53134,6 +53759,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
Error
Error
+
function(){
// String.prototype.match -> Get -> [[Get]] var get = []; @@ -53218,6 +53844,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// String.prototype.replace functions -> Get -> [[Get]] var get = []; @@ -53300,6 +53927,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Error
Error
Error
Error
+
function(){
// String.prototype.search functions -> Get -> [[Get]] var get = []; @@ -53384,6 +54012,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// String.prototype.split functions -> Get -> [[Get]] var get = []; @@ -53466,6 +54095,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Date.prototype.toJSON -> ToPrimitive -> Get -> [[Get]] // Date.prototype.toJSON -> Invoke -> GetMethod -> GetV -> [[Get]] @@ -53485,7 +54115,7 @@

+

Proxy, internal 'set' calls

@@ -53553,6 +54183,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Object.assign -> Set -> [[Set]] var set = []; @@ -53632,6 +54263,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.from -> Set -> [[Set]] var set = []; @@ -53711,6 +54343,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.from -> Set -> [[Set]] var set = []; @@ -53790,6 +54423,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.copyWithin -> Set -> [[Set]] var set = []; @@ -53869,6 +54503,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.fill -> Set -> [[Set]] var set = []; @@ -53948,6 +54583,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.pop -> Set -> [[Set]] var set = []; @@ -54027,6 +54663,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.push -> Set -> [[Set]] var set = []; @@ -54106,6 +54743,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.reverse -> Set -> [[Set]] var set = []; @@ -54185,6 +54823,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.shift -> Set -> [[Set]] var set = []; @@ -54264,6 +54903,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.splice -> Set -> [[Set]] var set = []; @@ -54343,6 +54983,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.unshift -> Set -> [[Set]] var set = []; @@ -54361,7 +55002,7 @@

+

Proxy, internal 'defineProperty' calls

@@ -54429,6 +55070,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// [[Set]] -> [[DefineOwnProperty]] var def = []; @@ -54508,6 +55150,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// SetIntegrityLevel -> DefinePropertyOrThrow -> [[DefineOwnProperty]] var def = []; @@ -54526,7 +55169,7 @@

+

Proxy, internal 'deleteProperty' calls

@@ -54594,6 +55237,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.copyWithin -> DeletePropertyOrThrow -> [[Delete]] var del = []; @@ -54673,6 +55317,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.pop -> DeletePropertyOrThrow -> [[Delete]] var del = []; @@ -54752,6 +55397,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.reverse -> DeletePropertyOrThrow -> [[Delete]] var del = []; @@ -54831,6 +55477,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.shift -> DeletePropertyOrThrow -> [[Delete]] var del = []; @@ -54910,6 +55557,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.splice -> DeletePropertyOrThrow -> [[Delete]] var del = []; @@ -54989,6 +55637,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.unshift -> DeletePropertyOrThrow -> [[Delete]] var del = []; @@ -55007,7 +55656,7 @@

+

Proxy, internal 'getOwnPropertyDescriptor' calls

@@ -55076,6 +55725,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// [[Set]] -> [[GetOwnProperty]] var gopd = []; @@ -55157,6 +55807,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Object.assign -> [[GetOwnProperty]] var gopd = []; @@ -55238,6 +55889,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Object.prototype.hasOwnProperty -> HasOwnProperty -> [[GetOwnProperty]] var gopd = []; @@ -55319,6 +55971,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Function.prototype.bind -> HasOwnProperty -> [[GetOwnProperty]] var gopd = []; @@ -55338,7 +55991,7 @@

+

Proxy, internal 'ownKeys' calls

@@ -55406,6 +56059,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// SetIntegrityLevel -> [[OwnPropertyKeys]] var ownKeysCalled = 0; @@ -55485,6 +56139,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// TestIntegrityLevel -> [[OwnPropertyKeys]] var ownKeysCalled = 0; @@ -55564,6 +56219,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// SerializeJSONObject -> EnumerableOwnNames -> [[OwnPropertyKeys]] var ownKeysCalled = 0; @@ -55582,7 +56238,7 @@

+

Object static methods accept primitives

@@ -55648,12 +56304,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.getPrototypeOf('a').constructor === String;
}
@@ -55719,12 +56376,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.getOwnPropertyDescriptor('a', 'foo') === void undefined;
}
@@ -55792,12 +56450,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var s = Object.getOwnPropertyNames('a'); return s.length === 2 && @@ -55865,12 +56524,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.seal('a') === 'a';
}
@@ -55936,12 +56596,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.freeze('a') === 'a';
}
@@ -56007,12 +56668,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.preventExtensions('a') === 'a';
}
@@ -56078,12 +56740,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.isSealed('a') === true;
}
@@ -56149,12 +56812,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.isFrozen('a') === true;
}
@@ -56220,12 +56884,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
return Object.isExtensible('a') === false;
}
@@ -56292,12 +56957,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var s = Object.keys('a'); return s.length === 1 && s[0] === '0';
} @@ -56305,7 +56971,7 @@

+

own property order

@@ -56405,10 +57071,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = { // Non-negative integer names appear first in value order @@ -56524,6 +57191,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var obj = { 2: true, @@ -56640,6 +57308,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
Error
+
function(){
var result = ''; var target = {}; @@ -56761,10 +57430,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = { 2: true, @@ -56861,10 +57531,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var result = ''; JSON.parse( @@ -56956,6 +57627,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var obj = { 2: true, @@ -57062,6 +57734,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var sym1 = Symbol(), sym2 = Symbol(), sym3 = Symbol(); var obj = { @@ -57091,7 +57764,7 @@

+

Updated identifier syntax

@@ -57161,12 +57834,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
try { eval('var ⸯ'); @@ -57237,12 +57911,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
var 𐋀; return true;
} @@ -57312,6 +57987,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var \u0061; try { @@ -57331,7 +58007,7 @@

+

miscellaneous

@@ -57398,12 +58074,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
'use strict'; return this === void undefined && ({ a:1, a:1 }).a === 1;
} @@ -57472,10 +58149,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
do {} while (false) return true;
}
@@ -57547,12 +58225,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
'use strict'; try { @@ -57629,12 +58308,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
var f = (Object.getOwnPropertyDescriptor({get a(){}}, 'a')).get; try { @@ -57707,10 +58387,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return new Date(NaN) + "" === "Invalid Date";
}
@@ -57774,6 +58455,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return new RegExp(/./im, "g").global === true;
}
@@ -57845,6 +58527,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return RegExp.prototype.toString.call({source: 'foo', flags: 'bar'}) === '/foo/bar';
}
@@ -57929,6 +58612,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
try { RegExp.prototype.exec(); return false; @@ -58023,12 +58707,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
var fn = function(a, b) {}; @@ -58050,7 +58735,7 @@

+

non-strict function semantics

@@ -58128,6 +58813,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
// Note: only available outside of strict mode. if (!this) return false; @@ -58221,10 +58907,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
// Note: only available outside of strict mode. if (!this) return false; @@ -58303,10 +58990,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
// Note: only available outside of strict mode. if (!this) return false; @@ -58320,7 +59008,7 @@

+

__proto__ in object literals

@@ -58389,10 +59077,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return { __proto__ : [] } instanceof Array && !({ __proto__ : null } instanceof Object);
} @@ -58464,12 +59153,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
+
function(){
try { eval("({ __proto__ : [], __proto__: {} })"); @@ -58544,12 +59234,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
if (!({ __proto__ : [] } instanceof Array)) { return false; @@ -58623,12 +59314,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
if (!({ __proto__ : [] } instanceof Array)) { return false; @@ -58701,12 +59393,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
+
function(){
if (!({ __proto__ : [] } instanceof Array)) { return false; @@ -58716,7 +59409,7 @@

+

Object.prototype.__proto__

@@ -58785,10 +59478,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var A = function(){}; return (new A()).__proto__ === A.prototype;
} @@ -58859,10 +59553,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var o = {}; o.__proto__ = Array.prototype; @@ -58933,11 +59628,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
var o = Object.create(null), p = {}; o.__proto__ = p; @@ -59006,11 +59702,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return Object.prototype.hasOwnProperty('__proto__');
}
@@ -59084,11 +59781,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
var desc = Object.getOwnPropertyDescriptor(Object.prototype,"__proto__"); var A = function(){}; @@ -59162,18 +59860,19 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
+
function(){
return Object.getOwnPropertyNames(Object.prototype).indexOf('__proto__') > -1;
}
+

String.prototype HTML methods

@@ -59248,10 +59947,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var i, names = ["anchor", "big", "bold", "fixed", "fontcolor", "fontsize", "italics", "link", "small", "strike", "sub", "sup"]; @@ -59333,10 +60033,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var i, names = ["anchor", "big", "bold", "fixed", "fontcolor", "fontsize", "italics", "link", "small", "strike", "sub", "sup"]; @@ -59417,10 +60118,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var i, names = ["anchor", "fontcolor", "fontsize", "link"]; for (i = 0; i < names.length; i++) { @@ -59433,7 +60135,7 @@

+

RegExp.prototype.compile

@@ -59505,10 +60207,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
if (typeof RegExp.prototype.compile !== 'function') return false @@ -59573,6 +60276,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var rx = /a/; return rx.compile('b') === rx;
} @@ -59592,7 +60296,7 @@

+

RegExp syntax extensions

@@ -59660,10 +60364,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /[\w-_]/.exec("-")[0] === "-";
}
@@ -59732,10 +60437,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /\z/.exec("\\z")[0] === "z" && /[\z]/.exec("[\\z]")[0] === "z";
} @@ -59804,10 +60510,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /\c2/.exec("\\c2")[0] === "\\c2";
}
@@ -59876,10 +60583,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /\u1/.exec("u1")[0] === "u1" && /[\u1]/.exec("u")[0] === "u";
} @@ -59949,10 +60657,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /\x1/.exec("x1")[0] === "x1" && /[\x1]/.exec("x")[0] === "x";
} @@ -60022,10 +60731,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /x{1/.exec("x{1")[0] === "x{1" && /x]1/.exec("x]1")[0] === "x]1";
} @@ -60095,10 +60805,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /\041/.exec("!")[0] === "!" && /[\041]/.exec("!")[0] === "!";
} @@ -60168,10 +60879,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return /\41/.exec("!")[0] === "!" && /[\41]/.exec("!")[0] === "!";
} @@ -60179,7 +60891,7 @@

+

@@ -60250,10 +60962,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
--> A comment <!-- Another comment @@ -60279,6 +60992,16 @@

Node.js ES2016 Support

Nightly!100% complete100% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
100% complete100% complete + 23.2.0
(these versions have identical results) @@ -60475,8 +61198,14 @@

Node.js ES2016 Support

100% complete100% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -63653,7 +64382,7 @@

- + @@ -63724,7 +64454,7 @@

- + @@ -63795,7 +64526,7 @@

- + @@ -63871,7 +64603,7 @@

- - + @@ -63957,7 +64690,7 @@

- + @@ -64032,7 +64766,7 @@

- + @@ -64130,7 +64865,7 @@

- + @@ -64241,7 +64977,7 @@

- - + @@ -64347,7 +65084,7 @@

- + - + @@ -64527,7 +65266,7 @@

- + @@ -64604,7 +65344,7 @@

- + @@ -64678,7 +65419,7 @@

- + @@ -64758,7 +65500,7 @@

- + @@ -64845,7 +65588,7 @@

-
20.18.0
+

exponentiation (**) operator

@@ -63715,6 +64444,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return 2 ** 3 === 8 && -(5 ** 2) === -25 && (-5) ** 2 === 25;
}
@@ -63786,6 +64516,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var a = 2; a **= 3; return a === 8;
}
@@ -63862,6 +64593,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
if (2 ** 3 !== 8) { return false; } try { @@ -63883,7 +64615,7 @@

+

Array.prototype.includes

@@ -63950,6 +64682,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return [1, 2, 3].includes(1) && ![1, 2, 3].includes(4) @@ -64025,6 +64758,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return [,].includes() && Array(1).includes();
} @@ -64123,6 +64857,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var passed = 0; return [].includes.call( @@ -64234,6 +64969,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return [ Int8Array, @@ -64269,7 +65005,7 @@

+

@@ -64340,6 +65076,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Error
No
+
function(){
function * generator() { yield 3; @@ -64433,12 +65170,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
function * generator() { yield * (function * () { @@ -64520,6 +65258,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
No
Error
Error
+
function(){
function foo(...a) {} try { @@ -64597,6 +65336,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var [x, ...[y, ...z]] = [1,2,3,4]; return x === 1 && y === 2 && z + '' === '3,4';
} @@ -64671,6 +65411,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return function ([x, ...[y, ...z]]) { return x === 1 && y === 2 && z + '' === '3,4'; @@ -64751,6 +65492,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var passed = true; var proxy = new Proxy({}, { @@ -64838,6 +65580,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Array.prototype.includes -> Get -> [[Get]] var get = []; @@ -64877,6 +65620,16 @@

Node.js ES2017 Support

Nightly!100% complete100% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
100% complete100% complete + 23.2.0
(these versions have identical results) @@ -65073,8 +65826,14 @@

Node.js ES2017 Support

100% complete100% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -68251,7 +69010,7 @@

- + @@ -68327,7 +69087,7 @@

- + @@ -68412,7 +69173,7 @@

- + @@ -68500,7 +69262,7 @@

- + @@ -68582,7 +69345,7 @@

- - + @@ -68668,7 +69432,7 @@

- + @@ -68749,7 +69514,7 @@

- - + @@ -68832,7 +69598,7 @@

- + @@ -68903,14 +69670,14 @@

- - + @@ -68992,7 +69760,7 @@

- + @@ -69085,7 +69854,7 @@

- + @@ -69168,7 +69938,7 @@

- + @@ -69241,7 +70012,7 @@

- + @@ -69320,7 +70092,7 @@

- + @@ -69407,7 +70180,7 @@

- + @@ -69488,7 +70262,7 @@

- + @@ -69566,7 +70341,7 @@

- + @@ -69644,7 +70420,7 @@

- + @@ -69727,7 +70504,7 @@

- + @@ -69820,7 +70598,7 @@

- + @@ -69913,7 +70692,7 @@

- + @@ -70004,7 +70784,7 @@

- + @@ -70086,7 +70867,7 @@

- + @@ -70159,7 +70941,7 @@

- + @@ -70239,7 +71022,7 @@

- - + @@ -70326,7 +71110,7 @@

- + @@ -70397,7 +71182,7 @@

- + @@ -70468,7 +71254,7 @@

- + @@ -70539,7 +71326,7 @@

- + @@ -70610,7 +71398,7 @@

- + @@ -70681,7 +71470,7 @@

- + @@ -70752,7 +71542,7 @@

- + @@ -70823,7 +71614,7 @@

- + @@ -70894,7 +71686,7 @@

- + @@ -70965,7 +71758,7 @@

- + @@ -71036,7 +71830,7 @@

- + @@ -71107,7 +71902,7 @@

- + @@ -71178,7 +71974,7 @@

- + @@ -71249,7 +72046,7 @@

- + @@ -71320,7 +72118,7 @@

- + @@ -71391,7 +72190,7 @@

- + @@ -71462,7 +72262,7 @@

- - + @@ -71550,7 +72351,7 @@

- + @@ -71627,7 +72429,7 @@

- - + - + - + @@ -71885,7 +72690,7 @@

- + - + - + @@ -72132,7 +72940,7 @@

- + - + - + - + @@ -72471,7 +73283,7 @@

- + @@ -72551,7 +73364,7 @@

- + - + - + - + @@ -72888,7 +73705,7 @@

- + @@ -72968,7 +73786,7 @@

- - + @@ -73060,7 +73879,7 @@

- + @@ -73151,7 +73971,7 @@

- + @@ -73247,7 +74068,7 @@

- + @@ -73348,7 +74170,7 @@

- - + -
20.18.0
+

Object static methods

@@ -68318,6 +69077,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var obj = Object.create({ a: "qux", d: "qux" }); obj.a = "foo"; @@ -68403,6 +69163,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var obj = Object.create({ a: "qux", d: "qux" }); obj.a = "foo"; @@ -68491,6 +69252,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var object = {a: 1}; var B = typeof Symbol === 'function' ? Symbol('b') : 'b'; @@ -68573,6 +69335,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
No
Error
Error
Error
Error
+
function(){
var P = new Proxy({ a: 1 }, { getOwnPropertyDescriptor: function (t, k) {} @@ -68592,7 +69355,7 @@

+

String padding

@@ -68657,6 +69420,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return 'hello'.padStart(10) === ' hello' && 'hello'.padStart(10, '1234') === '12341hello' @@ -68738,6 +69502,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return 'hello'.padEnd(10) === 'hello ' && 'hello'.padEnd(10, '1234') === 'hello12341' @@ -68761,7 +69526,7 @@

+

trailing commas in function syntax

@@ -68821,6 +69586,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof function f( a, b, ) {} === 'function';
}
@@ -68892,6 +69658,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Math.min(1,2,3,) === 1;
}
+

async functions

@@ -68982,6 +69749,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
async function a() { return "foo"; @@ -69075,6 +69843,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
async function a() { throw "foo"; @@ -69158,6 +69927,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
async function a() {} try { Function ("async\n function a() {await 0}")(); } catch (e) { return true; }
} @@ -69231,6 +70001,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
async function a() {}; return !a.hasOwnProperty("prototype");
} @@ -69310,6 +70081,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
(async function () { await Promise.resolve(); @@ -69397,6 +70169,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
(async function () { await Promise.resolve(); @@ -69478,6 +70251,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
async function a() { await Promise.resolve(); } try { Function ("(async function a() { await; }())")(); } catch (e) { return true; }
} @@ -69556,6 +70330,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
(async function () { await Promise.resolve(); @@ -69634,6 +70409,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
async function a() { await Promise.resolve(); } try { Function ("(async function a(b = await Promise.resolve()) {}())")(); } catch (e) { return true; }
} @@ -69717,6 +70493,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var o = { async a() { return await Promise.resolve("foo"); } @@ -69810,6 +70587,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
class C { async a() { return await Promise.resolve("foo"); } @@ -69903,6 +70681,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
function doSomething(callback) { callback(); @@ -69994,6 +70773,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var a = async () => await Promise.resolve("foo"); var p = a(); @@ -70076,6 +70856,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var asyncFunctionProto = Object.getPrototypeOf(async function () {}); return asyncFunctionProto !== function () {}.prototype @@ -70149,6 +70930,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return Object.getPrototypeOf(async function () {})[Symbol.toStringTag] === "AsyncFunction";
}
@@ -70229,6 +71011,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var a = async function () {}.constructor("return 'foo';"); var p = a(); @@ -70255,7 +71038,7 @@

+

shared memory and atomics

@@ -70312,6 +71095,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return typeof SharedArrayBuffer === 'function';
}
@@ -70383,6 +71167,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return SharedArrayBuffer[Symbol.species] === SharedArrayBuffer;
}
@@ -70454,6 +71239,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return 'byteLength' in SharedArrayBuffer.prototype;
}
@@ -70525,6 +71311,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof SharedArrayBuffer.prototype.slice === 'function';
}
@@ -70596,6 +71383,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return SharedArrayBuffer.prototype[Symbol.toStringTag] === 'SharedArrayBuffer';
}
@@ -70667,6 +71455,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.add === 'function';
}
@@ -70738,6 +71527,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.and === 'function';
}
@@ -70809,6 +71599,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.compareExchange === 'function';
}
@@ -70880,6 +71671,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.exchange === 'function';
}
@@ -70951,6 +71743,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.wait === 'function';
}
@@ -71019,6 +71812,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return typeof Atomics.notify === 'function';
}
@@ -71093,6 +71887,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.isLockFree === 'function';
}
@@ -71164,6 +71959,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.load === 'function';
}
@@ -71235,6 +72031,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.or === 'function';
}
@@ -71306,6 +72103,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.store === 'function';
}
@@ -71377,6 +72175,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.sub === 'function';
}
@@ -71448,6 +72247,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof Atomics.xor === 'function';
}
@@ -71476,7 +72276,7 @@

+

@@ -71538,6 +72338,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return "ſ".match(/\w/iu) && !"ſ".match(/\W/iu) && "\u212a".match(/\w/iu) && !"\u212a".match(/\W/iu) @@ -71616,6 +72417,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return (function () { 'use strict'; @@ -71644,7 +72446,7 @@

+

Object.prototype getter/setter methods

@@ -71717,10 +72519,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = {}; function bar() { return "bar"; } @@ -71798,11 +72601,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var obj = {}; var sym = Symbol(); @@ -71871,6 +72675,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
No
+
function(){
var key = '__accessors_test__'; __defineGetter__.call(1, key, function () {}); @@ -71964,10 +72769,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = {}; function bar() {} @@ -72045,11 +72851,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var obj = {}; var sym = Symbol(); @@ -72118,6 +72925,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
No
+
function(){
var key = '__accessors_test__'; __defineSetter__.call(1, key, function () {}); @@ -72213,10 +73021,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = { get foo() { return "bar"}, @@ -72298,10 +73107,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = { get foo() { return "bar"}, @@ -72383,11 +73193,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var sym = Symbol(); var sym2 = Symbol(); @@ -72457,6 +73268,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
No
+
function(){
__lookupGetter__.call(1, 'key'); try { @@ -72540,6 +73352,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var a = {}; var b = Object.create(a); @@ -72630,10 +73443,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = { set foo(baz) { return "bar"; }, @@ -72715,10 +73529,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var obj = { set foo(baz) { return "bar"; }, @@ -72800,11 +73615,12 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
+
function(){
var sym = Symbol(); var sym2 = Symbol(); @@ -72874,6 +73690,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
No
+
function(){
__lookupSetter__.call(1, 'key'); try { @@ -72957,6 +73774,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var a = {}; var b = Object.create(a); @@ -72979,7 +73797,7 @@

+

Proxy internal calls, getter/setter methods

@@ -73051,6 +73869,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Object.prototype.__defineGetter__ -> DefinePropertyOrThrow -> [[DefineOwnProperty]] var def = []; @@ -73142,6 +73961,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
// Object.prototype.__defineSetter__ -> DefinePropertyOrThrow -> [[DefineOwnProperty]] var def = []; @@ -73236,6 +74056,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
// Object.prototype.__lookupGetter__ -> [[GetOwnProperty]] // Object.prototype.__lookupGetter__ -> [[GetPrototypeOf]] @@ -73337,6 +74158,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
// Object.prototype.__lookupSetter__ -> [[GetOwnProperty]] // Object.prototype.__lookupSetter__ -> [[GetPrototypeOf]] @@ -73370,7 +74192,7 @@

+

@@ -73439,10 +74261,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
for (var i = 0 in {}) {} return i === 0;
} @@ -73466,6 +74289,16 @@

Node.js ES2018 Support

Nightly!100% complete100% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
100% complete100% complete + 23.2.0
(these versions have identical results) @@ -73662,8 +74495,14 @@

Node.js ES2018 Support

90% complete90% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -76840,7 +77679,7 @@

- + @@ -76912,7 +77752,7 @@

- + @@ -76986,7 +77827,7 @@

- - + @@ -77092,7 +77934,7 @@

- + @@ -77207,7 +78050,7 @@

- + @@ -77316,7 +78160,7 @@

- - + @@ -77415,7 +78260,7 @@

- + @@ -77494,7 +78340,7 @@

- + @@ -77573,7 +78420,7 @@

- - + @@ -77653,7 +78501,7 @@

- + @@ -77725,7 +78574,7 @@

- + @@ -77796,7 +78646,7 @@

- + @@ -77867,7 +78718,7 @@

- + @@ -77938,7 +78790,7 @@

- + @@ -78009,7 +78862,7 @@

- + @@ -78080,7 +78934,7 @@

- + @@ -78151,7 +79006,7 @@

- + @@ -78222,14 +79078,14 @@

- - + @@ -78307,7 +79164,7 @@

- + @@ -78402,7 +79260,7 @@

- - + @@ -78514,7 +79373,7 @@

- + @@ -78602,7 +79462,7 @@

-
20.18.0
+

object rest/spread properties

@@ -76900,6 +77739,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var { a, ...rest } = { a: 1, b: 2, c: 3 }; return a === 1 && rest.a === void undefined && rest.b === 2 && rest.c === 3;
} @@ -76974,6 +77814,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var spread = { b: 2, c: 3 }; var O = { a: 1, ...spread }; @@ -76995,7 +77836,7 @@

+

Promise.prototype.finally

@@ -77077,6 +77918,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var p1 = Promise.resolve("foo"); var p2 = Promise.reject("bar"); @@ -77192,6 +78034,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var score = 0; function thenFn(result) { @@ -77301,6 +78144,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var score = 0; Promise @@ -77343,7 +78187,7 @@

+

@@ -77401,6 +78245,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
const regex = /foo.bar/s; return regex.test('foo\nbar');
} @@ -77479,6 +78324,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
var result = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/.exec('2016-03-11'); return result.groups.year === '2016' @@ -77559,6 +78405,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
return /(?<=a)b/.test('ab') && /(?<!a)b/.test('cb') && !/(?<=a)b/.test('b');
} @@ -77581,7 +78428,7 @@

+

RegExp Unicode Property Escapes

@@ -77638,6 +78485,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
const regexGreekSymbol = /\p{Script=Greek}/u; return regexGreekSymbol.test('π');
} @@ -77705,6 +78553,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return /\p{Extended_Pictographic}/u.test("\xA9") && /\p{Emoji}/u.test("🥰");
}
@@ -77774,6 +78623,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Yes
Yes
+
function(){
return /\p{Script=Elymaic}/u.test("\u{10fe0}") && /\p{Emoji}/u.test("🥱");
}
@@ -77845,6 +78695,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Yes
Yes
+
function(){
return /\p{Other_Symbol}/u.test("\u32FF");
}
@@ -77909,6 +78760,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Yes
Yes
+
function(){
return /\p{Script=Chorasmian}/u.test("\u{10fb0}") && /\p{Emoji}/u.test("🥲");
}
@@ -77967,6 +78819,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Yes
Yes
Error
Error
+
function(){
return /\p{Script=Vithkuqi}/u.test("\u{10570}") && /\p{Emoji}/u.test("🫠");
}
@@ -78033,6 +78886,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Yes
Yes
Yes
Yes
+
function(){
return /\p{Script=Kawi}/u.test("\u{11f00}") && /\p{Emoji}/u.test("🫨");
}
@@ -78099,6 +78953,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
No
No
+
function(){
return /\p{Unified_Ideograph}/u.test("\u{2ebf0}");
}
@@ -78167,6 +79022,7 @@

Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return /\p{Script=Todhri}/u.test("\u{105c0}") && /\p{Emoji}/u.test("🫩");
}
+

Asynchronous Iterators

@@ -78292,6 +79148,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
async function*generator() { yield 42; @@ -78387,6 +79244,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var asyncIterable = {}; asyncIterable[Symbol.asyncIterator] = function () { @@ -78433,7 +79291,7 @@

+

@@ -78493,6 +79351,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var p = new Proxy({}, { ownKeys() { @@ -78588,6 +79447,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
function tag(strings, a) { return strings[0] === void undefined @@ -78632,6 +79492,16 @@

Node.js ES2019 Support

Nightly!95% complete95% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
95% complete95% complete + 23.2.0
(these versions have identical results) @@ -78828,8 +79698,14 @@

Node.js ES2019 Support

95% complete95% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -82006,7 +82882,7 @@

- + @@ -82077,7 +82954,7 @@

- + @@ -82148,7 +83026,7 @@

- + @@ -82220,7 +83099,7 @@

- - + @@ -82300,7 +83180,7 @@

- - + - + - + - + - - + @@ -82758,7 +83643,7 @@

- + @@ -82831,7 +83717,7 @@

- + @@ -82905,7 +83792,7 @@

- - + @@ -82997,7 +83885,7 @@

- + @@ -83081,7 +83970,7 @@

- + @@ -83170,7 +84060,7 @@

- - + - + - + - + @@ -83481,7 +84375,7 @@

- + @@ -83554,7 +84449,7 @@

- + @@ -83627,7 +84523,7 @@

- + @@ -83700,7 +84597,7 @@

- - + @@ -83779,7 +84677,7 @@

- + @@ -83850,14 +84749,14 @@

- - + @@ -83929,7 +84829,7 @@

-
20.18.0
+

Symbol.prototype.description

@@ -82057,6 +82933,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return Symbol('foo').description === 'foo';
}
@@ -82128,6 +83005,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return Symbol('').description === '';
}
@@ -82200,6 +83078,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return Symbol.prototype.hasOwnProperty('description') && Symbol().description === void undefined;
} @@ -82228,7 +83107,7 @@

+

@@ -82279,6 +83158,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var object = Object.fromEntries(new Map([['foo', 42], ['bar', 23]])); return object.foo === 42 && object.bar === 23;
} @@ -82308,7 +83188,7 @@

+

string trimming

@@ -82376,10 +83256,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return ' \t \n abc \t\n'.trimLeft() === 'abc \t\n';
}
@@ -82447,10 +83328,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
return ' \t \n abc \t\n'.trimRight() === ' \t \n abc';
}
@@ -82506,6 +83388,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
+
function(){
return ' \t \n abc \t\n'.trimStart() === 'abc \t\n';
}
@@ -82621,6 +83504,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
+
function(){
return ' \t \n abc \t\n'.trimEnd() === ' \t \n abc';
}
+

Array.prototype.{flat, flatMap}

@@ -82738,6 +83622,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return [1, [2, 3], [4, [5, 6]]].flat().join('') === '12345,6';
}
@@ -82811,6 +83696,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return [{a: 1, b: 2}, {a: 3, b: 4}].flatMap(function (it) { return [it.a, it.b]; @@ -82884,6 +83770,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return Array.prototype[Symbol.unscopables].flat && Array.prototype[Symbol.unscopables].flatMap;
} @@ -82920,7 +83807,7 @@

+

optional catch binding

@@ -82982,6 +83869,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
try { throw new Error(); @@ -83066,6 +83954,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
(async function () { try { @@ -83155,6 +84044,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
function *foo() { try { @@ -83188,7 +84078,7 @@

+

Function.prototype.toString revision

@@ -83258,10 +84148,11 @@

Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
var fn = function ('a', ' /\x2A a \x2A/ b, c /\x2A b \x2A/ //', '/\x2A c \x2A/ ; /\x2A d \x2A/ //'); var str = 'function anonymous(a, /\x2A a \x2A/ b, c /\x2A b \x2A/ //\n) {\n/\x2A c \x2A/ ; /\x2A d \x2A/ //\n}'; @@ -83330,12 +84221,13 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
+
function(){
var str = 'a => b'; return eval('(' + str + ')') + '' === str;
} @@ -83405,10 +84297,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
const NATIVE_EVAL_RE = /\bfunction\b[\s\S]*\beval\b[\s\S]*\([\s\S]*\)[\s\S]*\{[\s\S]*\[[\s\S]*\bnative\b[\s\S]+\bcode\b[\s\S]*\][\s\S]*\}/; return NATIVE_EVAL_RE.test(eval + '');
} @@ -83474,6 +84367,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var str = 'class A {}'; return eval('(' + str + ')') + '' === str;
} @@ -83547,6 +84441,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var str = 'class /\x2A a \x2A/ A /\x2A b \x2A/ extends /\x2A c \x2A/ function B() {} /\x2A d \x2A/ { /\x2A e \x2A/ constructor /\x2A f \x2A/ ( /\x2A g \x2A/ ) /\x2A h \x2A/ { /\x2A i \x2A/ ; /\x2A j \x2A/ } /\x2A k \x2A/ m /\x2A l \x2A/ ( /\x2A m \x2A/ ) /\x2A n \x2A/ { /\x2A o \x2A/ } /\x2A p \x2A/ }'; return eval('(/\x2A before \x2A/' + str + '/\x2A after \x2A/)') + '' === str;
} @@ -83612,6 +84507,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
Flag
+
function(){
var str = 'function \\u0061(\\u{62}, \\u0063) { \\u0062 = \\u{00063}; return b; }'; return eval('(/\x2A before \x2A/' + str + '/\x2A after \x2A/)') + '' === str;
} @@ -83685,6 +84581,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
Flag
No
Flag
+
function(){
var str = '[ /\x2A a \x2A/ "f" /\x2A b \x2A/ ] /\x2A c \x2A/ ( /\x2A d \x2A/ ) /\x2A e \x2A/ { /\x2A f \x2A/ }'; return eval('({ /\x2A before \x2A/' + str + '/\x2A after \x2A/ }.f)') + '' === str;
} @@ -83708,7 +84605,7 @@

+

JSON superset

@@ -83764,6 +84661,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return eval("'\u2028'") === "\u2028";
}
@@ -83835,6 +84733,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return eval("'\u2029'") === "\u2029";
}
+

@@ -83908,6 +84807,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return JSON.stringify('\uDF06\uD834') === "\"\\udf06\\ud834\"" && JSON.stringify('\uDEAD') === "\"\\udead\"";
} @@ -83953,6 +84853,16 @@

Node.js ES2020 Support

Nightly!100% complete100% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
100% complete100% complete + 23.2.0
(these versions have identical results) @@ -84149,8 +85059,14 @@

Node.js ES2020 Support

100% complete100% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -87327,7 +88243,7 @@

- + @@ -87408,7 +88325,7 @@

- + @@ -87494,7 +88412,7 @@

- - + @@ -87577,7 +88496,7 @@

- + @@ -87648,7 +88568,7 @@

- + @@ -87719,7 +88640,7 @@

- + @@ -87790,7 +88712,7 @@

- + @@ -87864,7 +88787,7 @@

- + @@ -87941,7 +88865,7 @@

- + @@ -88018,7 +88943,7 @@

- + @@ -88095,7 +89021,7 @@

- - + @@ -88187,7 +89114,7 @@

- + @@ -88274,7 +89202,7 @@

- - + @@ -88359,7 +89288,7 @@

- + @@ -88438,7 +89368,7 @@

- - + @@ -88524,7 +89455,7 @@

- + @@ -88599,7 +89531,7 @@

- + @@ -88674,7 +89607,7 @@

- + @@ -88751,7 +89685,7 @@

- + @@ -88830,7 +89765,7 @@

-
20.18.0
+

String.prototype.matchAll

@@ -87387,6 +88303,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
var iterator = '11a2bb'.matchAll(/(\d)(\D)/g); if(iterator[Symbol.iterator]() !== iterator)return false; @@ -87464,6 +88381,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
if (typeof String.prototype.matchAll !== 'function') return false; try { @@ -87506,7 +88424,7 @@

+

BigInt

@@ -87561,6 +88479,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (1n + 2n) === 3n;
}
@@ -87632,6 +88551,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return BigInt("3") === 3n;
}
@@ -87703,6 +88623,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof BigInt.asUintN === 'function';
}
@@ -87774,6 +88695,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return typeof BigInt.asIntN === 'function';
}
@@ -87848,6 +88770,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var buffer = new ArrayBuffer(64); var view = new BigInt64Array(buffer); @@ -87925,6 +88848,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var buffer = new ArrayBuffer(64); var view = new BigUint64Array(buffer); @@ -88002,6 +88926,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -88079,6 +89004,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var buffer = new ArrayBuffer(64); var view = new DataView(buffer); @@ -88105,7 +89031,7 @@

+

@@ -88163,6 +89089,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
Promise.allSettled([ Promise.resolve(1), @@ -88244,6 +89171,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return (null ?? 42) === 42 && (undefined ?? 42) === 42 && @@ -88286,7 +89214,7 @@

+

globalThis

@@ -88338,6 +89266,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var actualGlobal = Function ('return this')(); actualGlobal.__system_global_test__ = 42; @@ -88417,6 +89346,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var actualGlobal = Function ('return this')(); if (typeof globalThis !== 'object') { return false; } @@ -88451,7 +89381,7 @@

+

optional chaining operator (?.)

@@ -88494,6 +89424,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var foo = { baz: 42 }; var bar = null; @@ -88569,6 +89500,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var foo = { baz: 42 }; var bar = null; @@ -88644,6 +89576,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var foo = { baz: function () { return this.value; }, value: 42 }; var bar = null; @@ -88721,6 +89654,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var foo = { baz: function () { return 42; } }; var bar = {}; @@ -88795,6 +89729,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var fn = null; var n = null; @@ -88857,6 +89792,16 @@

Node.js ES2021 Support

Nightly!100% complete100% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
100% complete100% complete + 23.2.0
(these versions have identical results) @@ -89053,8 +89998,14 @@

Node.js ES2021 Support

100% complete100% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -92231,7 +93182,7 @@

- + @@ -92302,7 +93254,7 @@

- + @@ -92374,7 +93327,7 @@

- - + @@ -92459,7 +93413,7 @@

- + @@ -92542,7 +93497,7 @@

- - + @@ -92628,7 +93584,7 @@

- + @@ -92702,7 +93659,7 @@

- - + @@ -92787,7 +93745,7 @@

- + @@ -92867,7 +93826,7 @@

- + @@ -92944,7 +93904,7 @@

- + @@ -93024,7 +93985,7 @@

- + @@ -93104,7 +94066,7 @@

- + @@ -93181,7 +94144,7 @@

- + @@ -93261,7 +94225,7 @@

- + @@ -93341,7 +94306,7 @@

- + @@ -93418,7 +94384,7 @@

-
20.18.0
+

@@ -92269,6 +93220,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return 'q=query+string+parameters'.replaceAll('+', ' ') === 'q=query string parameters';
}
@@ -92351,6 +93303,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
return 1_000_000.000_001 === 1000000.000001 && 0b1010_0001_1000_0101 === 0b1010000110000101;
} @@ -92382,7 +93335,7 @@

+

Promise.any

@@ -92426,6 +93379,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
Promise.any([ Promise.reject(1), @@ -92509,6 +93463,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
Promise.any([ Promise.reject(1), @@ -92555,7 +93510,7 @@

+

WeakReferences

@@ -92597,6 +93552,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var O = {}; var weakref = new WeakRef(O); @@ -92671,6 +93627,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var fr = new FinalizationRegistry(function () {}); return Object.getPrototypeOf(fr) === FinalizationRegistry.prototype;
} @@ -92710,7 +93667,7 @@

+

Logical Assignment

@@ -92754,6 +93711,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let a; let b = 0; @@ -92834,6 +93792,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let a = 1; let i = 1; @@ -92911,6 +93870,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let i = 1; var obj = { get x() { return 1 }, set x(n) { i++; } }; @@ -92991,6 +93951,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let a; let b = 0; @@ -93071,6 +94032,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let a; let i = 1; @@ -93148,6 +94110,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let i = 1; var obj = { get x() { return }, set x(n) { i++; } }; @@ -93228,6 +94191,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let a; let b = 0; @@ -93308,6 +94272,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let a = 1; let i = 1; @@ -93385,6 +94350,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let i = 1; var obj = { get x() { return 1 }, set x(n) { i++; } }; @@ -93444,6 +94410,16 @@

Node.js ES2022 Support

Nightly!97% complete97% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
97% complete97% complete + 23.2.0
(these versions have identical results) @@ -93640,8 +94616,14 @@

Node.js ES2022 Support

97% complete97% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -96818,7 +97800,7 @@

- + @@ -96892,7 +97875,7 @@

- + @@ -96975,7 +97959,7 @@

- + @@ -97061,7 +98046,7 @@

- + @@ -97144,7 +98130,7 @@

- + @@ -97227,7 +98214,7 @@

- + @@ -97307,7 +98295,7 @@

- + @@ -97388,7 +98377,7 @@

- - + @@ -97476,7 +98466,7 @@

- + @@ -97550,7 +98541,7 @@

- + @@ -97627,7 +98619,7 @@

- + @@ -97707,7 +98700,7 @@

- - + @@ -97794,7 +98788,7 @@

- + @@ -97877,7 +98872,7 @@

- + @@ -97963,7 +98959,7 @@

- + @@ -98052,7 +99049,7 @@

- - + @@ -98145,7 +99143,7 @@

- + @@ -98226,7 +99225,7 @@

- - + @@ -98316,7 +99316,7 @@

- + @@ -98403,7 +99404,7 @@

- + @@ -98506,7 +99508,7 @@

- - + @@ -98608,7 +99611,7 @@

- + @@ -98685,7 +99689,7 @@

- - + @@ -98770,7 +99775,7 @@

- + @@ -98842,7 +99848,7 @@

- + @@ -98914,7 +99921,7 @@

- + @@ -98986,7 +99994,7 @@

- + @@ -99058,7 +100067,7 @@

- + @@ -99130,7 +100140,7 @@

- + @@ -99202,7 +100213,7 @@

- + @@ -99274,7 +100286,7 @@

- + @@ -99346,7 +100359,7 @@

- + @@ -99418,7 +100432,7 @@

- + @@ -99490,7 +100505,7 @@

- + @@ -99562,7 +100578,7 @@

- + @@ -99634,7 +100651,7 @@

- + @@ -99706,7 +100724,7 @@

- + @@ -99778,7 +100797,7 @@

- + @@ -99850,14 +100870,14 @@

- - + @@ -99928,7 +100949,7 @@

- + @@ -100014,7 +101036,7 @@

-
20.18.0
+

instance class fields

@@ -96871,6 +97853,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
class C { x = 'x'; @@ -96954,6 +97937,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
class C { #x; @@ -97040,6 +98024,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
class C { #x = 42; @@ -97113,6 +98098,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Flag
Error
Flag
+
function(){
class C { #x = 42; @@ -97197,6 +98183,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
class C { #x = 42; @@ -97286,6 +98273,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
class C { ['x'] = 42; @@ -97367,6 +98355,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
{ let a = ["hello world"]; @@ -97402,7 +98391,7 @@

+

static class fields

@@ -97455,6 +98444,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
class C { static x = 'x'; @@ -97529,6 +98519,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return (class X { static name = "name"; }).name === 'name';
}
@@ -97606,6 +98597,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
class C { static #x = 42; @@ -97686,6 +98678,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
class C { static ['x'] = 42; @@ -97717,7 +98710,7 @@

+

private class methods

@@ -97763,6 +98756,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
class C { #x() { return 42; } @@ -97846,6 +98840,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
class C { static #x() { return 42; } @@ -97932,6 +98927,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
var y = false; class C { @@ -98021,6 +99017,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
var y = false; class C { @@ -98068,7 +99065,7 @@

+

@@ -98109,6 +99106,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
class A { #x; @@ -98187,6 +99185,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
let ok = false; class A { @@ -98237,7 +99236,7 @@

+

.at() method on the built-in indexables

@@ -98279,6 +99278,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
var arr = [1, 2, 3]; return arr.at(0) === 1 @@ -98366,6 +99366,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
var str = 'abc'; return str.at(0) === 'a' @@ -98469,6 +99470,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
return [ 'Int8Array', @@ -98537,7 +99539,7 @@

+

Object.hasOwn

@@ -98570,6 +99572,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return Object.hasOwn({ x: 2 }, "x") === true;
}
@@ -98647,6 +99650,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var ok = !!Object.hasOwn; try { @@ -98698,7 +99702,7 @@

+

Error.cause property

@@ -98732,6 +99736,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new Error('error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -98803,6 +99808,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in Error.prototype);
}
@@ -98876,6 +99882,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new EvalError('error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -98947,6 +99954,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in EvalError.prototype);
}
@@ -99020,6 +100028,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new RangeError('error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -99091,6 +100100,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in RangeError.prototype);
}
@@ -99164,6 +100174,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new ReferenceError('error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -99235,6 +100246,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in ReferenceError.prototype);
}
@@ -99308,6 +100320,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new SyntaxError('error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -99379,6 +100392,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in SyntaxError.prototype);
}
@@ -99452,6 +100466,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new TypeError('error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -99523,6 +100538,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in TypeError.prototype);
}
@@ -99596,6 +100612,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new URIError('error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -99667,6 +100684,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in URIError.prototype);
}
@@ -99740,6 +100758,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Flag
No
No
No
No
+
function(){
var error = new AggregateError([], 'error', { cause: 'cause' }) return error.hasOwnProperty('cause') && error.cause === 'cause';
} @@ -99811,6 +100830,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
Yes
+
function(){
return !('cause' in AggregateError.prototype);
}
+

RegExp Match Indices (`hasIndices` / `d` flag)

@@ -99894,6 +100914,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return new RegExp('a', 'd') instanceof RegExp;
}
@@ -100007,6 +101028,7 @@

No
No
No
No
No
No
No
No
Error
Error
Error
Error
Error
Error
+
function(){
var expected = ['hasIndices']; // Sorted alphabetically by shortname – "dgimsuy". @@ -100052,6 +101074,16 @@

Node.js ES2023 Support

Nightly!100% complete100% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
100% complete100% complete + 23.2.0
(these versions have identical results) @@ -100248,8 +101280,14 @@

Node.js ES2023 Support

100% complete100% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -103426,7 +104464,7 @@

- + @@ -103498,7 +104537,7 @@

- + @@ -103571,7 +104611,7 @@

- - + @@ -103654,7 +104695,7 @@

- - + @@ -103737,7 +104779,7 @@

- + @@ -103810,7 +104853,7 @@

- + @@ -103883,7 +104927,7 @@

- + @@ -103956,7 +105001,7 @@

- + @@ -104029,7 +105075,7 @@

- + @@ -104102,7 +105149,7 @@

- + @@ -104175,7 +105223,7 @@

-
20.18.0
+

Array find from last

@@ -103455,6 +104493,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var arr = [{ x: 1 }, { x: 2 }, { x: 1 }, { x: 2 }]; return arr.findLast(function (o) { return o.x === 1; }) === arr[2];
} @@ -103528,6 +104567,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
var arr = [{ x: 1 }, { x: 2 }, { x: 1 }, { x: 2 }]; return arr.findLastIndex(function (o) { return o.x === 1; }) === 2;
} @@ -103579,7 +104619,7 @@

+

@@ -103631,6 +104671,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
try { return !eval('#!/wash/your/hands'); @@ -103665,7 +104706,7 @@

+

Change Array by copy

@@ -103688,6 +104729,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var arr = [1, 2, 3]; return arr.toReversed()[0] === 3 && arr[0] === 1;
} @@ -103761,6 +104803,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var arr = ['C', 'A', 'B']; return arr.toSorted()[0] === 'A' && arr[0] === 'C';
} @@ -103834,6 +104877,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var arr = ['A', 'C']; return arr.toSpliced(1, 0, 'B')[1] === 'B' && arr[1] === 'C';
} @@ -103907,6 +104951,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var arr = ['A', 'X', 'C']; return arr.with(1, 'B')[1] === 'B' && arr[1] === 'X';
} @@ -103980,6 +105025,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var arr = new Uint8Array([1, 2, 3]); return arr.toReversed()[0] == 3 && arr[0] == 1;
} @@ -104053,6 +105099,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var arr = new Uint8Array([3, 1, 2]); return arr.toSorted()[0] == 1 && arr[0] == 3;
} @@ -104126,6 +105173,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
var arr = new Uint8Array([1, 0, 2]); return arr.with(1, 2)[1] == 2 && arr[1] == 0;
} @@ -104199,6 +105247,16 @@

Node.js ES2024 Support

Nightly!100% complete100% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
100% complete100% complete + 23.2.0
(these versions have identical results) @@ -104395,8 +105453,14 @@

Node.js ES2024 Support

83% complete75% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -107573,7 +108637,7 @@

- + @@ -107645,7 +108710,7 @@

- + @@ -107718,7 +108784,7 @@

- + @@ -107790,7 +108857,7 @@

- + @@ -107864,7 +108932,7 @@

- + @@ -107938,7 +109007,7 @@

- + @@ -108009,14 +109079,14 @@

- - + @@ -108090,7 +109161,7 @@

- + @@ -108167,7 +109239,7 @@

- + @@ -108243,7 +109316,7 @@

- - + @@ -108327,7 +109401,7 @@

- - + @@ -108413,7 +109488,7 @@

- + @@ -108494,7 +109570,7 @@

-
20.18.0
+

RegExp `v` flag

@@ -107596,6 +108660,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return /[\p{ASCII}&&\p{Decimal_Number}]/v.test("0") && /[\p{Any}--[\x01-\u{10ffff}]]/v.test("\0")
} @@ -107669,6 +108734,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return /^\p{Emoji_Keycap_Sequence}$/v.test("*\uFE0F\u20E3") && !/^\p{Emoji_Keycap_Sequence}$/v.test("*");
} @@ -107741,6 +108807,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
return new RegExp('a', 'v') instanceof RegExp;
}
@@ -107815,6 +108882,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
var flags = []; var p = new Proxy({}, { get: function (o, k) { flags.push(k); return o[k]; }}); @@ -107886,6 +108954,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
No
No
+
function(){
return /^\p{RGI_Emoji}$/v.test("🐦‍🔥");
}
@@ -107954,6 +109023,7 @@

Yes
Yes
Yes
Yes
No
No
No
No
No
No
+
function(){
return /^\p{RGI_Emoji}$/v.test("🇨🇶");
}
+

ArrayBuffer.prototype.transfer

@@ -108039,6 +109109,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Flag
+
function(){
const buffer1 = new Uint8Array([1, 2]).buffer; const buffer2 = buffer1.transfer(); @@ -108116,6 +109187,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
const buffer1 = new Uint8Array([1, 2]).buffer; const buffer2 = buffer1.transferToFixedLength(); @@ -108192,6 +109264,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
No
+
function(){
const buffer1 = new Uint8Array([1, 2]).buffer; const buffer2 = buffer1.transfer(); @@ -108252,7 +109325,7 @@

+

@@ -108274,6 +109347,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var obj = Promise.withResolvers(); return obj instanceof Object @@ -108338,7 +109412,7 @@

+

Array Grouping

@@ -108362,6 +109436,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
const array = [1, 2, 3, 4]; const obj = Object.groupBy(array, (num, index) => { @@ -108443,6 +109518,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Error
Error
Error
Error
Error
+
function(){
const array = [1, 2, 3, 4]; const odd = { odd: true }; @@ -108523,6 +109599,16 @@

Node.js ES2025 Support

Nightly!96% complete96% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
96% complete96% complete + 23.2.0
(these versions have identical results) @@ -108719,8 +109805,14 @@

Node.js ES2025 Support

82% complete0% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -111897,7 +112989,7 @@

- + @@ -111968,7 +113061,7 @@

- + @@ -112047,7 +113141,7 @@

- - + @@ -112136,7 +113231,7 @@

- + @@ -112214,7 +113310,7 @@

- + @@ -112292,7 +113389,7 @@

- + @@ -112369,7 +113467,7 @@

- + @@ -112443,7 +113542,7 @@

- + @@ -112514,7 +113614,7 @@

- + @@ -112585,14 +113686,14 @@

- - + @@ -112664,7 +113766,7 @@

- + @@ -112737,7 +113840,7 @@

- + @@ -112810,7 +113914,7 @@

- - + @@ -112889,7 +113994,7 @@

- + @@ -112962,7 +114068,7 @@

- + @@ -113038,7 +114145,7 @@

- + @@ -113120,7 +114228,7 @@

- + @@ -113199,7 +114308,7 @@

- + @@ -113270,7 +114380,7 @@

- + @@ -113341,7 +114452,7 @@

- + @@ -113412,7 +114524,7 @@

- + @@ -113483,7 +114596,7 @@

- + @@ -113556,7 +114670,7 @@

- + @@ -113629,7 +114744,7 @@

- + @@ -113700,7 +114816,7 @@

- + @@ -113771,7 +114888,7 @@

- + @@ -113842,7 +114960,7 @@

- + @@ -113914,7 +115033,7 @@

- + @@ -113986,7 +115106,7 @@

-
20.18.0
+

@@ -111914,6 +113006,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
return /(?<year>[0-9]{4})-[0-9]{2}|[0-9]{2}-(?<year>[0-9]{4})/.test("12-1995");
}
@@ -111993,6 +113086,7 @@

No
No
No
No
No
No
Error
Error
Error
Error
Error
Error
+
function(){
var called = false; var argsMatch = false; @@ -112062,7 +113156,7 @@

+

Set methods

@@ -112083,6 +113177,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var set = new Set([1, 2, 3]).intersection(new Set([2, 3, 4])); return set.size === 2 @@ -112161,6 +113256,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var set = new Set([1, 2]).union(new Set([2, 3])); return set.size === 3 @@ -112239,6 +113335,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var set = new Set([1, 2, 3]).difference(new Set([3, 4])); return set.size === 2 @@ -112316,6 +113413,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
var set = new Set([1, 2]).symmetricDifference(new Set([2, 3])); return set.size === 2 @@ -112390,6 +113488,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return new Set([1, 2, 3]).isDisjointFrom(new Set([4, 5, 6]));
}
@@ -112461,6 +113560,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return new Set([1, 2, 3]).isSubsetOf(new Set([5, 4, 3, 2, 1]));
}
@@ -112532,6 +113632,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return new Set([5, 4, 3, 2, 1]).isSupersetOf(new Set([1, 2, 3]));
}
+

RegExp Pattern Modifiers

@@ -112610,6 +113711,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
const regex = /^[a-z](?-i:[a-z])$/i; return regex.test("ab") && regex.test("Ab") && !regex.test("aB");
} @@ -112683,6 +113785,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
const regex = /^a|(?m:^b)/; return regex.test("a") && regex.test("b") && regex.test("c\nb") && !regex.test("c\na");
} @@ -112756,6 +113859,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Error
Error
Error
+
function(){
const regex = /.(?-s:.)/s; return regex.test("\na") && regex.test("aa") && !regex.test("\n\n");
} @@ -112818,7 +113922,7 @@

+

Iterator Helpers

@@ -112836,6 +113940,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return [1, 2, 3].values() instanceof Iterator;
}
@@ -112909,6 +114014,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
class Class extends Iterator { } const instance = new Class(); @@ -112985,6 +114091,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
const iterator = Iterator.from([1, 2, 3]); return 'next' in iterator @@ -113067,6 +114174,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
const iterator = Iterator.from({ i: 0, @@ -113146,6 +114254,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return Array.from([1, 2, 3].values().drop(1)).join() === '2,3';
}
@@ -113217,6 +114326,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return [1, 2, 3].values().every(it => typeof it === 'number');
}
@@ -113288,6 +114398,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return Array.from([1, 2, 3].values().filter(it => it % 2)).join() === '1,3';
}
@@ -113359,6 +114470,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return [1, 2, 3].values().find(it => it % 2) === 1;
}
@@ -113430,6 +114542,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return Array.from([1, 2, 3].values().flatMap(it => [it, 0])).join() === '1,0,2,0,3,0';
}
@@ -113503,6 +114616,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
let result = ''; [1, 2, 3].values().forEach(it => result += it); @@ -113576,6 +114690,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return Array.from([1, 2, 3].values().map(it => it * it)).join() === '1,4,9';
}
@@ -113647,6 +114762,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return [1, 2, 3].values().reduce((a, b) => a + b) === 6;
}
@@ -113718,6 +114834,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return [1, 2, 3].values().some(it => typeof it === 'number');
}
@@ -113789,6 +114906,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return Array.from([1, 2, 3].values().take(2)).join() === '1,2';
}
@@ -113861,6 +114979,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
const array = [1, 2, 3].values().toArray(); return Array.isArray(array) && array.join() === '1,2,3';
} @@ -113933,6 +115052,7 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Error
Flag
Error
Flag
Error
Error
+
function(){
return Iterator.prototype[Symbol.toStringTag] === 'Iterator';
}
@@ -114009,6 +115129,16 @@

Node.js ESNEXT Support

Nightly!5% complete5% complete + 23.3.0 +
(these versions have identical results) + + + + + +
23.3.0v8 12.9.202.28-node.11
+
5% complete5% complete + 23.2.0
(these versions have identical results) @@ -114205,8 +115335,14 @@

Node.js ESNEXT Support

5% complete5% complete - 20.18.0 + 20.18.1
(these versions have identical results) + + + + + +
20.18.1v8 11.3.244.8-node.23
@@ -117383,7 +118519,7 @@

- + @@ -117462,7 +118599,7 @@

- - + - + - - + - - + - + - + @@ -117945,7 +119088,7 @@

- + - + - + @@ -118174,7 +119320,7 @@

- - + - - + @@ -118360,7 +119508,7 @@

- + - - + @@ -118523,7 +119673,7 @@

- + @@ -118610,7 +119761,7 @@

- + @@ -118696,7 +119848,7 @@

- + @@ -118777,7 +119930,7 @@

- - + - + - - + @@ -119023,7 +120179,7 @@

- + @@ -119096,7 +120253,7 @@

- + @@ -119181,7 +120339,7 @@

- + @@ -119276,7 +120435,7 @@

- + @@ -119371,7 +120531,7 @@

- + @@ -119462,7 +120623,7 @@

- + @@ -119543,7 +120705,7 @@

- + @@ -119624,7 +120787,7 @@

- + @@ -119705,7 +120869,7 @@

- + @@ -119786,7 +120951,7 @@

- + @@ -119868,7 +121034,7 @@

- + @@ -119950,7 +121117,7 @@

- + @@ -120031,7 +121199,7 @@

- + @@ -120106,7 +121275,7 @@

- + @@ -120187,7 +121357,7 @@

- + @@ -120268,7 +121439,7 @@

- + -
20.18.0
+

Class and Property Decorators

@@ -117454,6 +118590,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
class A { @nonconf @@ -117477,7 +118614,7 @@

+

Legacy RegExp features in JavaScript

@@ -117547,10 +118684,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
var re = /\w/; re.exec('x'); @@ -117623,10 +118761,11 @@

Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
+
function(){
for (var i = 1; i < 10; i++) { if (!(('$' + i) in RegExp)) return false; @@ -117636,7 +118775,7 @@

+

@@ -117705,12 +118844,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
return RegExp.escape("The Quick Brown Fox") === "The\\ Quick\\ Brown\\ Fox" && RegExp.escape("(*.*)") === "\\(\\*\\.\\*\\)" && @@ -117720,7 +118860,7 @@

+

Uint8Array to/from base64 and hex

@@ -117787,12 +118927,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const arr = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]); return arr.toBase64() === "SGVsbG8gV29ybGQ=";
} @@ -117862,12 +119003,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const arr1 = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]); const arr2 = Uint8Array.fromBase64("SGVsbG8gV29ybGQ="); @@ -117938,6 +119080,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const arr1 = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]); let arr2 = new Uint8Array(16); @@ -118016,12 +119159,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const arr = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]); return arr.toHex() === "48656c6c6f20576f726c64";
} @@ -118091,12 +119235,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const arr1 = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]); const arr2 = Uint8Array.fromHex("48656c6c6f20576f726c64"); @@ -118167,6 +119312,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const arr1 = new Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]); let arr2 = new Uint8Array(16); @@ -118192,7 +119338,7 @@

+

@@ -118263,10 +119409,11 @@

No
No
No
No
No
No
No
No
+
function(){
return typeof ShadowRealm === "function" && ["evaluate", "importValue"].every(function(key){ @@ -118283,7 +119430,7 @@

+

@@ -118335,6 +119482,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
var result; function* generator() { @@ -118433,12 +119581,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
return !Array.isTemplateObject([]) && Array.isTemplateObject((it => it)`a${1}c`);
} @@ -118446,7 +119595,7 @@

+

throw expressions

@@ -118498,6 +119647,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
var a, b; try { @@ -118585,6 +119735,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
function fn (arg = throw 42) { return arg; @@ -118671,6 +119822,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
var fn = () => throw 42; try { @@ -118752,6 +119904,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
true ? 42 : throw 21; try { @@ -118789,7 +119942,7 @@

+

Map.prototype.upsert

@@ -118858,12 +120011,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const map = new Map([['a', 1]]); if (map.upsert('a', it => 2, () => 3) !== 2) return false; @@ -118936,12 +120090,13 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
const a = {}, b = {}; const map = new WeakMap([[a, 1]]); @@ -118952,7 +120107,7 @@

+

Async Iterator Helpers

@@ -119008,6 +120163,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
return (async function*() {})() instanceof AsyncIterator;
}
@@ -119089,6 +120245,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
class Class extends AsyncIterator { } const instance = new Class(); @@ -119166,6 +120323,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -119261,6 +120419,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -119356,6 +120515,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -119447,6 +120607,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -119528,6 +120689,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
(async function*() { yield * [1, 2, 3] })().every(it => typeof it === 'number').then(it => { if (it === true) asyncTestPassed(); @@ -119609,6 +120771,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -119690,6 +120853,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
(async function*() { yield * [1, 2, 3] })().find(it => it % 2).then(it => { if (it === 1) asyncTestPassed(); @@ -119771,6 +120935,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -119853,6 +121018,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
let result = ''; (async function*() { yield * [1, 2, 3] })().forEach(it => result += it).then(() => { @@ -119935,6 +121101,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -120016,6 +121183,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
(async function*() { yield * [1, 2, 3] })().reduce((a, b) => a + b).then(it => { if (it === 6) asyncTestPassed(); @@ -120091,6 +121259,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
(async function*() { yield * [1, 2, 3] })().some(it => typeof it === 'number').then(it => { if (it === true) asyncTestPassed(); @@ -120172,6 +121341,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
async function toArray(iterator) { const result = []; @@ -120253,6 +121423,7 @@

Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
(async function*() { yield * [1, 2, 3] })().toArray().then(it => { if (Array.isArray(it) && it.join() === '1,2,3') asyncTestPassed(); @@ -120338,10 +121509,11 @@

Error
Error
Error
Error
Error
Error
Error
Error
+
function(){
return AsyncIterator.prototype[Symbol.toStringTag] === 'AsyncIterator';
}
diff --git a/results/v8/20.18.1--harmony.json b/results/v8/20.18.1--harmony.json new file mode 100644 index 000000000..928a2903e --- /dev/null +++ b/results/v8/20.18.1--harmony.json @@ -0,0 +1,1044 @@ +{ + "_version": "20.18.1--harmony", + "_engine": "v8 11.3.244.8-node.23", + "ESNEXT": { + "_successful": 2, + "_count": 36, + "_percent": 0.05555555555555555, + "Stage 3›Class and Property Decorators›class decorators": "Invalid or unexpected token", + "Stage 3›Legacy RegExp features in JavaScript›RegExp \"lastMatch\"": true, + "Stage 3›Legacy RegExp features in JavaScript›RegExp.$1-$9": true, + "Stage 3›RegExp Escaping": "RegExp.escape is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toBase64()": "arr.toBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromBase64()": "Uint8Array.fromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromBase64()": "arr2.setFromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toHex()": "arr.toHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromHex()": "Uint8Array.fromHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromHex()": "arr2.setFromHex is not a function", + "Stage 2.7›ShadowRealm": false, + "Stage 2›Generator function.sent Meta Property": "Unexpected token '.'", + "Stage 2›throw expressions›logical": "Unexpected token 'throw'", + "Stage 2›throw expressions›parameter initializers": "Unexpected token 'throw'", + "Stage 2›throw expressions›arrow function bodies": "Unexpected token 'throw'", + "Stage 2›throw expressions›conditionals": "Unexpected token 'throw'", + "Stage 2›Map.prototype.upsert›Map.prototype.upsert": "map.upsert is not a function", + "Stage 2›Map.prototype.upsert›WeakMap.prototype.upsert": "map.upsert is not a function", + "Stage 2›Array.isTemplateObject": "Array.isTemplateObject is not a function", + "Stage 2›Async Iterator Helpers›instanceof AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›extends AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, async iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.drop": "(intermediate value)(...).drop is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.every": "(intermediate value)(...).every is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.filter": "(intermediate value)(...).filter is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.find": "(intermediate value)(...).find is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.flatMap": "(intermediate value)(...).flatMap is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.forEach": "(intermediate value)(...).forEach is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.map": "(intermediate value)(...).map is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.reduce": "(intermediate value)(...).reduce is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.some": "(intermediate value)(...).some is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.take": "(intermediate value)(...).take is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.toArray": "(intermediate value)(...).toArray is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype[@@toStringTag]": "AsyncIterator is not defined" + }, + "ES2025": { + "_successful": 0, + "_count": 28, + "_percent": 0, + "features›Duplicate named capturing groups": "Invalid regular expression: /(?[0-9]{4})-[0-9]{2}|[0-9]{2}-(?[0-9]{4})/: Duplicate capture group name", + "features›Set methods›Set.prototype.intersection()": "(intermediate value).intersection is not a function", + "features›Set methods›Set.prototype.union()": "(intermediate value).union is not a function", + "features›Set methods›Set.prototype.difference()": "(intermediate value).difference is not a function", + "features›Set methods›Set.prototype.symmetricDifference()": "(intermediate value).symmetricDifference is not a function", + "features›Set methods›Set.prototype.isDisjointFrom()": "(intermediate value).isDisjointFrom is not a function", + "features›Set methods›Set.prototype.isSubsetOf()": "(intermediate value).isSubsetOf is not a function", + "features›Set methods›Set.prototype.isSupersetOf()": "(intermediate value).isSupersetOf is not a function", + "features›RegExp Pattern Modifiers›i flag": "Invalid regular expression: /^[a-z](?-i:[a-z])$/i: Invalid group", + "features›RegExp Pattern Modifiers›m flag": "Invalid regular expression: /^a|(?m:^b)/: Invalid group", + "features›RegExp Pattern Modifiers›s flag": "Invalid regular expression: /.(?-s:.)/s: Invalid group", + "features›Iterator Helpers›instanceof Iterator": "Iterator is not defined", + "features›Iterator Helpers›extends Iterator": "Iterator is not defined", + "features›Iterator Helpers›Iterator.from, iterable": "Iterator is not defined", + "features›Iterator Helpers›Iterator.from, iterator": "Iterator is not defined", + "features›Iterator Helpers›Iterator.prototype.drop": "[1,2,3].values(...).drop is not a function", + "features›Iterator Helpers›Iterator.prototype.every": "[1,2,3].values(...).every is not a function", + "features›Iterator Helpers›Iterator.prototype.filter": "[1,2,3].values(...).filter is not a function", + "features›Iterator Helpers›Iterator.prototype.find": "[1,2,3].values(...).find is not a function", + "features›Iterator Helpers›Iterator.prototype.flatMap": "[1,2,3].values(...).flatMap is not a function", + "features›Iterator Helpers›Iterator.prototype.forEach": "[1,2,3].values(...).forEach is not a function", + "features›Iterator Helpers›Iterator.prototype.map": "[1,2,3].values(...).map is not a function", + "features›Iterator Helpers›Iterator.prototype.reduce": "[1,2,3].values(...).reduce is not a function", + "features›Iterator Helpers›Iterator.prototype.some": "[1,2,3].values(...).some is not a function", + "features›Iterator Helpers›Iterator.prototype.take": "[1,2,3].values(...).take is not a function", + "features›Iterator Helpers›Iterator.prototype.toArray": "[1,2,3].values(...).toArray is not a function", + "features›Iterator Helpers›Iterator.prototype[@@toStringTag]": "Iterator is not defined", + "features›Promise.try": "Promise.try is not a function" + }, + "ES2024": { + "_successful": 8, + "_count": 12, + "_percent": 0.6666666666666666, + "features›RegExp `v` flag›set notations": true, + "features›RegExp `v` flag›properties of Strings": true, + "features›RegExp `v` flag›constructor supports it": true, + "features›RegExp `v` flag›shows up in flags": true, + "features›RegExp `v` flag›Unicode 15.1": true, + "features›RegExp `v` flag›Unicode 16.0": false, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transfer()": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transferToFixedLength()": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.detached": true, + "features›Promise.withResolvers": "Promise.withResolvers is not a function", + "features›Array Grouping›Object.groupBy()": "Object.groupBy is not a function", + "features›Array Grouping›Map.groupBy()": "Map.groupBy is not a function" + }, + "ES2023": { + "_successful": 10, + "_count": 10, + "_percent": 1, + "features›Array find from last›Array.prototype.findLast": true, + "features›Array find from last›Array.prototype.findLastIndex": true, + "features›Hashbang Grammar": true, + "features›Change Array by copy›Array.prototype.toReversed()": true, + "features›Change Array by copy›Array.prototype.toSorted()": true, + "features›Change Array by copy›Array.prototype.toSpliced()": true, + "features›Change Array by copy›Array.prototype.with()": true, + "features›Change Array by copy›TypedArray.prototype.toReversed()": true, + "features›Change Array by copy›TypedArray.prototype.toSorted()": true, + "features›Change Array by copy›TypedArray.prototype.with()": true + }, + "ES2022": { + "_successful": 39, + "_count": 40, + "_percent": 0.975, + "features›instance class fields›public instance class fields": true, + "features›instance class fields›private instance class fields basic support": true, + "features›instance class fields›private instance class fields initializers": true, + "features›instance class fields›optional private instance class fields access": true, + "features›instance class fields›optional deep private instance class fields access": true, + "features›instance class fields›computed instance class fields": true, + "features›instance class fields›resolving identifier in parent scope": true, + "features›static class fields›public static class fields": true, + "features›static class fields›static class fields use [[Define]]": true, + "features›static class fields›private static class fields": true, + "features›static class fields›computed static class fields": true, + "features›private class methods›private instance methods": true, + "features›private class methods›private static methods": true, + "features›private class methods›private accessor properties": true, + "features›private class methods›private static accessor properties": true, + "features›Ergonomic brand checks for private fields": true, + "features›.at() method on the built-in indexables›Array.prototype.at()": true, + "features›.at() method on the built-in indexables›String.prototype.at()": true, + "features›.at() method on the built-in indexables›%TypedArray%.prototype.at()": true, + "features›Object.hasOwn›Basic functionality": true, + "features›Object.hasOwn›ToObject called before ToPropertyKey": true, + "features›Class static initialization blocks": true, + "features›Error.cause property›Error has cause": true, + "features›Error.cause property›Error.prototype lacks cause": true, + "features›Error.cause property›EvalError has cause": true, + "features›Error.cause property›EvalError.prototype lacks cause": true, + "features›Error.cause property›RangeError has cause": true, + "features›Error.cause property›RangeError.prototype lacks cause": true, + "features›Error.cause property›ReferenceError has cause": true, + "features›Error.cause property›ReferenceError.prototype lacks cause": true, + "features›Error.cause property›SyntaxError has cause": true, + "features›Error.cause property›SyntaxError.prototype lacks cause": true, + "features›Error.cause property›TypeError has cause": true, + "features›Error.cause property›TypeError.prototype lacks cause": true, + "features›Error.cause property›URIError has cause": true, + "features›Error.cause property›URIError.prototype lacks cause": true, + "features›Error.cause property›AggregateError has cause": true, + "features›Error.cause property›AggregateError.prototype lacks cause": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›constructor supports it": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›shows up in flags": false + }, + "ES2021": { + "_successful": 15, + "_count": 15, + "_percent": 1, + "features›String.prototype.replaceAll": true, + "features›Promise.any›fulfillment": true, + "features›Promise.any›AggregateError": true, + "features›WeakReferences›WeakRef minimal support": true, + "features›WeakReferences›FinalizationRegistry minimal support": true, + "features›Logical Assignment›||= basic support": true, + "features›Logical Assignment›||= short-circuiting behaviour": true, + "features›Logical Assignment›||= setter not unecessarily invoked": true, + "features›Logical Assignment›&&= basic support": true, + "features›Logical Assignment›&&= short-circuiting behaviour": true, + "features›Logical Assignment›&&= setter not unecessarily invoked": true, + "features›Logical Assignment›??= basic support": true, + "features›Logical Assignment›??= short-circuiting behaviour": true, + "features›Logical Assignment›??= setter not unecessarily invoked": true, + "features›numeric separators": true + }, + "ES2020": { + "_successful": 19, + "_count": 19, + "_percent": 1, + "features›String.prototype.matchAll›basic functionality": true, + "features›String.prototype.matchAll›throws on non-global regex": true, + "features›BigInt›basic functionality": true, + "features›BigInt›constructor": true, + "features›BigInt›BigInt.asUintN": true, + "features›BigInt›BigInt.asIntN": true, + "features›BigInt›BigInt64Array": true, + "features›BigInt›BigUint64Array": true, + "features›BigInt›DataView.prototype.getBigInt64": true, + "features›BigInt›DataView.prototype.getBigUint64": true, + "features›Promise.allSettled": true, + "features›globalThis›\"globalThis\" global property is global object": true, + "features›globalThis›\"globalThis\" global property has correct property descriptor": true, + "features›optional chaining operator (?.)›optional property access": true, + "features›optional chaining operator (?.)›optional bracket access": true, + "features›optional chaining operator (?.)›optional method call": true, + "features›optional chaining operator (?.)›optional function call": true, + "features›optional chaining operator (?.)›spread parameters after optional chaining": true, + "features›nullish coalescing operator (??)": true + }, + "ES2019": { + "_successful": 23, + "_count": 24, + "_percent": 0.9583333333333334, + "features›Symbol.prototype.description›basic": true, + "features›Symbol.prototype.description›empty description": true, + "features›Symbol.prototype.description›undefined description": true, + "features›Object.fromEntries": true, + "features›string trimming›String.prototype.trimLeft": true, + "features›string trimming›String.prototype.trimRight": true, + "features›string trimming›String.prototype.trimStart": true, + "features›string trimming›String.prototype.trimEnd": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flat": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flatMap": true, + "features›Array.prototype.{flat, flatMap}›flat and flatMap in Array.prototype[@@unscopables]": true, + "misc›optional catch binding›basic": true, + "misc›optional catch binding›await": true, + "misc›optional catch binding›yield": true, + "misc›Function.prototype.toString revision›functions created with the Function constructor": "Unexpected string", + "misc›Function.prototype.toString revision›arrows": true, + "misc›Function.prototype.toString revision›[native code]": true, + "misc›Function.prototype.toString revision›class expression with implicit constructor": true, + "misc›Function.prototype.toString revision›class expression with explicit constructor": true, + "misc›Function.prototype.toString revision›unicode escape sequences in identifiers": true, + "misc›Function.prototype.toString revision›methods and computed property names": true, + "misc›JSON superset›LINE SEPARATOR can appear in string literals": true, + "misc›JSON superset›PARAGRAPH SEPARATOR can appear in string literals": true, + "misc›Well-formed JSON.stringify": true + }, + "ES2018": { + "_successful": 20, + "_count": 21, + "_percent": 0.9523809523809523, + "features›object rest/spread properties›object rest properties": true, + "features›object rest/spread properties›object spread properties": true, + "features›Promise.prototype.finally›basic support": true, + "features›Promise.prototype.finally›don't change resolution value": true, + "features›Promise.prototype.finally›change rejection value": true, + "features›s (dotAll) flag for regular expressions": true, + "features›RegExp named capture groups": true, + "features›RegExp Lookbehind Assertions": true, + "features›RegExp Unicode Property Escapes›basic": true, + "features›RegExp Unicode Property Escapes›Unicode 11": true, + "features›RegExp Unicode Property Escapes›Unicode 12": true, + "features›RegExp Unicode Property Escapes›Unicode 12.1": true, + "features›RegExp Unicode Property Escapes›Unicode 13": true, + "features›RegExp Unicode Property Escapes›Unicode 14": true, + "features›RegExp Unicode Property Escapes›Unicode 15": true, + "features›RegExp Unicode Property Escapes›Unicode 15.1": true, + "features›RegExp Unicode Property Escapes›Unicode 16.0": "Invalid regular expression: /\\p{Script=Todhri}/u: Invalid property name", + "features›Asynchronous Iterators›async generators": true, + "features›Asynchronous Iterators›for-await-of loops": true, + "misc›Proxy \"ownKeys\" handler, duplicate keys for non-extensible targets": true, + "misc›template literal revision": true + }, + "ES2017": { + "_successful": 64, + "_count": 64, + "_percent": 1, + "features›Object static methods›Object.values": true, + "features›Object static methods›Object.entries": true, + "features›Object static methods›Object.getOwnPropertyDescriptors": true, + "features›Object static methods›Object.getOwnPropertyDescriptors doesn't provide undefined descriptors": true, + "features›String padding›String.prototype.padStart": true, + "features›String padding›String.prototype.padEnd": true, + "features›trailing commas in function syntax›in parameter lists": true, + "features›trailing commas in function syntax›in argument lists": true, + "features›async functions›return": true, + "features›async functions›throw": true, + "features›async functions›no line break between async and function": true, + "features›async functions›no \"prototype\" property": true, + "features›async functions›await": true, + "features›async functions›await, rejection": true, + "features›async functions›must await a value": true, + "features›async functions›can await non-Promise values": true, + "features›async functions›cannot await in parameters": true, + "features›async functions›async methods, object literals": true, + "features›async functions›async methods, classes": true, + "features›async functions›async arrow functions in methods, classes": true, + "features›async functions›async arrow functions": true, + "features›async functions›correct prototype chain": true, + "features›async functions›async function prototype, Symbol.toStringTag": true, + "features›async functions›async function constructor": true, + "features›shared memory and atomics›SharedArrayBuffer": true, + "features›shared memory and atomics›SharedArrayBuffer[Symbol.species]": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.byteLength": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.slice": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype[Symbol.toStringTag]": true, + "features›shared memory and atomics›Atomics.add": true, + "features›shared memory and atomics›Atomics.and": true, + "features›shared memory and atomics›Atomics.compareExchange": true, + "features›shared memory and atomics›Atomics.exchange": true, + "features›shared memory and atomics›Atomics.wait": true, + "features›shared memory and atomics›Atomics.notify": true, + "features›shared memory and atomics›Atomics.isLockFree": true, + "features›shared memory and atomics›Atomics.load": true, + "features›shared memory and atomics›Atomics.or": true, + "features›shared memory and atomics›Atomics.store": true, + "features›shared memory and atomics›Atomics.sub": true, + "features›shared memory and atomics›Atomics.xor": true, + "misc›RegExp \"u\" flag, case folding": true, + "misc›arguments.caller removed": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, data properties can shadow accessors": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, data properties can shadow accessors": true, + "annex b›Proxy internal calls, getter/setter methods›__defineGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__defineSetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupSetter__": true, + "annex b›assignments allowed in for-in head in non-strict mode": true + }, + "ES2016": { + "_successful": 14, + "_count": 14, + "_percent": 1, + "features›exponentiation (**) operator›basic support": true, + "features›exponentiation (**) operator›assignment": true, + "features›exponentiation (**) operator›early syntax error for unary negation without parens": true, + "features›Array.prototype.includes›Array.prototype.includes": true, + "features›Array.prototype.includes›Array.prototype.includes handles sparse arrays": true, + "features›Array.prototype.includes›Array.prototype.includes is generic": true, + "features›Array.prototype.includes›%TypedArray%.prototype.includes": true, + "misc›generator functions can't be used with \"new\"": true, + "misc›generator throw() caught by inner generator": true, + "misc›strict fn w/ non-strict non-simple params is error": true, + "misc›nested rest destructuring, declarations": true, + "misc›nested rest destructuring, parameters": true, + "misc›Proxy, \"enumerate\" handler removed": true, + "misc›Proxy internal calls, Array.prototype.includes": true + }, + "ES2015": { + "_successful": 692, + "_count": 697, + "_percent": 0.9928263988522238, + "optimisation›proper tail calls (tail call optimisation)›direct recursion": "Maximum call stack size exceeded", + "optimisation›proper tail calls (tail call optimisation)›mutual recursion": "Maximum call stack size exceeded", + "syntax›default function parameters›basic functionality": true, + "syntax›default function parameters›explicit undefined defers to the default": true, + "syntax›default function parameters›defaults can refer to previous params": true, + "syntax›default function parameters›arguments object interaction": true, + "syntax›default function parameters›temporal dead zone": true, + "syntax›default function parameters›separate scope": true, + "syntax›default function parameters›new Function() support": true, + "syntax›rest parameters›basic functionality": true, + "syntax›rest parameters›function 'length' property": true, + "syntax›rest parameters›arguments object interaction": true, + "syntax›rest parameters›can't be used in setters": true, + "syntax›rest parameters›new Function() support": true, + "syntax›spread syntax for iterable objects›with arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with strings, in function calls": true, + "syntax›spread syntax for iterable objects›with strings, in array literals": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in function calls": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in array literals": true, + "syntax›spread syntax for iterable objects›with generator instances, in calls": true, + "syntax›spread syntax for iterable objects›with generator instances, in arrays": true, + "syntax›spread syntax for iterable objects›with generic iterables, in calls": true, + "syntax›spread syntax for iterable objects›with generic iterables, in arrays": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in calls": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in arrays": true, + "syntax›spread syntax for iterable objects›spreading non-iterables is a runtime error": true, + "syntax›object literal extensions›computed properties": true, + "syntax›object literal extensions›shorthand properties": true, + "syntax›object literal extensions›shorthand methods": true, + "syntax›object literal extensions›string-keyed shorthand methods": true, + "syntax›object literal extensions›computed shorthand methods": true, + "syntax›object literal extensions›computed accessors": true, + "syntax›for..of loops›with arrays": true, + "syntax›for..of loops›with sparse arrays": true, + "syntax›for..of loops›with strings": true, + "syntax›for..of loops›with astral plane strings": true, + "syntax›for..of loops›with generator instances": true, + "syntax›for..of loops›with generic iterables": true, + "syntax›for..of loops›with instances of generic iterables": true, + "syntax›for..of loops›iterator closing, break": true, + "syntax›for..of loops›iterator closing, throw": true, + "syntax›octal and binary literals›octal literals": true, + "syntax›octal and binary literals›binary literals": true, + "syntax›octal and binary literals›octal supported by Number()": true, + "syntax›octal and binary literals›binary supported by Number()": true, + "syntax›template literals›basic functionality": true, + "syntax›template literals›toString conversion": true, + "syntax›template literals›tagged template literals": true, + "syntax›template literals›passed array is frozen": true, + "syntax›template literals›line break normalisation": true, + "syntax›template literals›TemplateStrings call site caching": true, + "syntax›template literals›TemplateStrings permanent caching": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag, lastIndex": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, non-BMP Unicode characters": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, Unicode code point escapes": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, case folding": true, + "syntax›destructuring, declarations›with arrays": true, + "syntax›destructuring, declarations›with sparse arrays": true, + "syntax›destructuring, declarations›with strings": true, + "syntax›destructuring, declarations›with astral plane strings": true, + "syntax›destructuring, declarations›with generator instances": true, + "syntax›destructuring, declarations›with generic iterables": true, + "syntax›destructuring, declarations›with instances of generic iterables": true, + "syntax›destructuring, declarations›iterator closing": true, + "syntax›destructuring, declarations›trailing commas in iterable patterns": true, + "syntax›destructuring, declarations›with objects": true, + "syntax›destructuring, declarations›object destructuring with primitives": true, + "syntax›destructuring, declarations›trailing commas in object patterns": true, + "syntax›destructuring, declarations›throws on null and undefined": true, + "syntax›destructuring, declarations›computed properties": true, + "syntax›destructuring, declarations›multiples in a single var statement": true, + "syntax›destructuring, declarations›nested": true, + "syntax›destructuring, declarations›in for-in loop heads": true, + "syntax›destructuring, declarations›in for-of loop heads": true, + "syntax›destructuring, declarations›in catch heads": true, + "syntax›destructuring, declarations›rest": true, + "syntax›destructuring, declarations›defaults": true, + "syntax›destructuring, declarations›defaults, let temporal dead zone": true, + "syntax›destructuring, assignment›with arrays": true, + "syntax›destructuring, assignment›with sparse arrays": true, + "syntax›destructuring, assignment›with strings": true, + "syntax›destructuring, assignment›with astral plane strings": true, + "syntax›destructuring, assignment›with generator instances": true, + "syntax›destructuring, assignment›with generic iterables": true, + "syntax›destructuring, assignment›with instances of generic iterables": true, + "syntax›destructuring, assignment›iterator closing": true, + "syntax›destructuring, assignment›iterable destructuring expression": true, + "syntax›destructuring, assignment›chained iterable destructuring": true, + "syntax›destructuring, assignment›trailing commas in iterable patterns": true, + "syntax›destructuring, assignment›with objects": true, + "syntax›destructuring, assignment›object destructuring with primitives": true, + "syntax›destructuring, assignment›trailing commas in object patterns": true, + "syntax›destructuring, assignment›object destructuring expression": true, + "syntax›destructuring, assignment›parenthesised left-hand-side is a syntax error": true, + "syntax›destructuring, assignment›chained object destructuring": true, + "syntax›destructuring, assignment›throws on null and undefined": true, + "syntax›destructuring, assignment›computed properties": true, + "syntax›destructuring, assignment›nested": true, + "syntax›destructuring, assignment›rest": true, + "syntax›destructuring, assignment›nested rest": true, + "syntax›destructuring, assignment›empty patterns": true, + "syntax›destructuring, assignment›defaults": true, + "syntax›destructuring, parameters›with arrays": true, + "syntax›destructuring, parameters›with sparse arrays": true, + "syntax›destructuring, parameters›with strings": true, + "syntax›destructuring, parameters›with astral plane strings": true, + "syntax›destructuring, parameters›with generator instances": true, + "syntax›destructuring, parameters›with generic iterables": true, + "syntax›destructuring, parameters›with instances of generic iterables": true, + "syntax›destructuring, parameters›iterator closing": true, + "syntax›destructuring, parameters›trailing commas in iterable patterns": true, + "syntax›destructuring, parameters›with objects": true, + "syntax›destructuring, parameters›object destructuring with primitives": true, + "syntax›destructuring, parameters›trailing commas in object patterns": true, + "syntax›destructuring, parameters›throws on null and undefined": true, + "syntax›destructuring, parameters›computed properties": true, + "syntax›destructuring, parameters›nested": true, + "syntax›destructuring, parameters›'arguments' interaction": true, + "syntax›destructuring, parameters›new Function() support": true, + "syntax›destructuring, parameters›in parameters, function 'length' property": true, + "syntax›destructuring, parameters›rest": true, + "syntax›destructuring, parameters›empty patterns": true, + "syntax›destructuring, parameters›defaults": true, + "syntax›destructuring, parameters›defaults, separate scope": true, + "syntax›destructuring, parameters›defaults, new Function() support": true, + "syntax›destructuring, parameters›aliased defaults, arrow function": true, + "syntax›destructuring, parameters›shorthand defaults, arrow function": true, + "syntax›destructuring, parameters›duplicate identifier": true, + "syntax›Unicode code point escapes›in strings": true, + "syntax›Unicode code point escapes›in identifiers": true, + "syntax›Unicode code point escapes›in property key definitions": true, + "syntax›Unicode code point escapes›in property key accesses": true, + "syntax›new.target›in constructors": true, + "syntax›new.target›assignment is an early error": true, + "bindings›const›basic support": true, + "bindings›const›is block-scoped": true, + "bindings›const›scope shadow resolution": true, + "bindings›const›cannot be in statements": true, + "bindings›const›redefining a const is an error": true, + "bindings›const›for loop statement scope": true, + "bindings›const›for-in loop iteration scope": true, + "bindings›const›for-of loop iteration scope": true, + "bindings›const›temporal dead zone": true, + "bindings›const›basic support (strict mode)": true, + "bindings›const›is block-scoped (strict mode)": true, + "bindings›const›scope shadow resolution (strict mode)": true, + "bindings›const›cannot be in statements (strict mode)": true, + "bindings›const›redefining a const (strict mode)": true, + "bindings›const›for loop statement scope (strict mode)": true, + "bindings›const›for-in loop iteration scope (strict mode)": true, + "bindings›const›for-of loop iteration scope (strict mode)": true, + "bindings›const›temporal dead zone (strict mode)": true, + "bindings›let›basic support": true, + "bindings›let›is block-scoped": true, + "bindings›let›scope shadow resolution": true, + "bindings›let›cannot be in statements": true, + "bindings›let›for loop statement scope": true, + "bindings›let›temporal dead zone": true, + "bindings›let›for/for-in loop iteration scope": true, + "bindings›let›for-in loop binding shadowing parameter": true, + "bindings›let›basic support (strict mode)": true, + "bindings›let›is block-scoped (strict mode)": true, + "bindings›let›scope shadow resolution (strict mode)": true, + "bindings›let›cannot be in statements (strict mode)": true, + "bindings›let›for loop statement scope (strict mode)": true, + "bindings›let›temporal dead zone (strict mode)": true, + "bindings›let›for/for-in loop iteration scope (strict mode)": true, + "bindings›let›for-in loop binding shadowing parameter (strict mode)": true, + "bindings›block-level function declaration": true, + "functions›arrow functions›0 parameters": true, + "functions›arrow functions›1 parameter, no brackets": true, + "functions›arrow functions›multiple parameters": true, + "functions›arrow functions›lexical \"this\" binding": true, + "functions›arrow functions›\"this\" unchanged by call or apply": true, + "functions›arrow functions›can't be bound, can be curried": true, + "functions›arrow functions›lexical \"arguments\" binding": true, + "functions›arrow functions›no line break between params and =>": true, + "functions›arrow functions›correct precedence": true, + "functions›arrow functions›no \"prototype\" property": true, + "functions›arrow functions›lexical \"super\" binding in constructors": true, + "functions›arrow functions›lexical \"super\" binding in methods": true, + "functions›arrow functions›lexical \"new.target\" binding": true, + "functions›class›class statement": true, + "functions›class›is block-scoped": true, + "functions›class›class expression": true, + "functions›class›anonymous class": true, + "functions›class›constructor": true, + "functions›class›prototype methods": true, + "functions›class›string-keyed methods": true, + "functions›class›computed prototype methods": true, + "functions›class›optional semicolons": true, + "functions›class›static methods": true, + "functions›class›computed static methods": true, + "functions›class›accessor properties": true, + "functions›class›computed accessor properties": true, + "functions›class›static accessor properties": true, + "functions›class›computed static accessor properties": true, + "functions›class›class name is lexically scoped": true, + "functions›class›computed names, temporal dead zone": true, + "functions›class›methods aren't enumerable": true, + "functions›class›implicit strict mode": true, + "functions›class›constructor requires new": true, + "functions›class›extends": true, + "functions›class›extends expressions": true, + "functions›class›extends null": true, + "functions›class›new.target": true, + "functions›super›statement in constructors": true, + "functions›super›expression in constructors": true, + "functions›super›in methods, property access": true, + "functions›super›in methods, method calls": true, + "functions›super›method calls use correct \"this\" binding": true, + "functions›super›constructor calls use correct \"new.target\" binding": true, + "functions›super›is statically bound": true, + "functions›super›super() invokes the correct constructor": true, + "functions›generators›basic functionality": true, + "functions›generators›generator function expressions": true, + "functions›generators›correct \"this\" binding": true, + "functions›generators›can't use \"this\" with new": true, + "functions›generators›sending": true, + "functions›generators›%GeneratorPrototype%": true, + "functions›generators›%GeneratorPrototype% prototype chain": true, + "functions›generators›%GeneratorPrototype%.constructor": true, + "functions›generators›%GeneratorPrototype%.throw": true, + "functions›generators›%GeneratorPrototype%.return": true, + "functions›generators›yield operator precedence": true, + "functions›generators›yield *, arrays": true, + "functions›generators›yield *, sparse arrays": true, + "functions›generators›yield *, strings": true, + "functions›generators›yield *, astral plane strings": true, + "functions›generators›yield *, generator instances": true, + "functions›generators›yield *, generic iterables": true, + "functions›generators›yield *, instances of iterables": true, + "functions›generators›yield * on non-iterables is a runtime error": true, + "functions›generators›yield *, iterator closing": true, + "functions›generators›yield *, iterator closing via throw()": true, + "functions›generators›shorthand generator methods": true, + "functions›generators›string-keyed shorthand generator methods": true, + "functions›generators›computed shorthand generators": true, + "functions›generators›shorthand generator methods, classes": true, + "functions›generators›computed shorthand generators, classes": true, + "functions›generators›shorthand generators can't be constructors": true, + "built-ins›typed arrays›Int8Array": true, + "built-ins›typed arrays›Uint8Array": true, + "built-ins›typed arrays›Uint8ClampedArray": true, + "built-ins›typed arrays›Int16Array": true, + "built-ins›typed arrays›Uint16Array": true, + "built-ins›typed arrays›Int32Array": true, + "built-ins›typed arrays›Uint32Array": true, + "built-ins›typed arrays›Float32Array": true, + "built-ins›typed arrays›Float64Array": true, + "built-ins›typed arrays›DataView (Int8)": true, + "built-ins›typed arrays›DataView (Uint8)": true, + "built-ins›typed arrays›DataView (Int16)": true, + "built-ins›typed arrays›DataView (Uint16)": true, + "built-ins›typed arrays›DataView (Int32)": true, + "built-ins›typed arrays›DataView (Uint32)": true, + "built-ins›typed arrays›DataView (Float32)": true, + "built-ins›typed arrays›DataView (Float64)": true, + "built-ins›typed arrays›ArrayBuffer[Symbol.species]": true, + "built-ins›typed arrays›constructors require new": true, + "built-ins›typed arrays›constructors accept generic iterables": true, + "built-ins›typed arrays›correct prototype chains": true, + "built-ins›typed arrays›%TypedArray%.from": true, + "built-ins›typed arrays›%TypedArray%.of": true, + "built-ins›typed arrays›%TypedArray%.prototype.subarray": true, + "built-ins›typed arrays›%TypedArray%.prototype.join": true, + "built-ins›typed arrays›%TypedArray%.prototype.indexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.lastIndexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.slice": true, + "built-ins›typed arrays›%TypedArray%.prototype.every": true, + "built-ins›typed arrays›%TypedArray%.prototype.filter": true, + "built-ins›typed arrays›%TypedArray%.prototype.forEach": true, + "built-ins›typed arrays›%TypedArray%.prototype.map": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduce": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduceRight": true, + "built-ins›typed arrays›%TypedArray%.prototype.reverse": true, + "built-ins›typed arrays›%TypedArray%.prototype.some": true, + "built-ins›typed arrays›%TypedArray%.prototype.sort": true, + "built-ins›typed arrays›%TypedArray%.prototype.copyWithin": true, + "built-ins›typed arrays›%TypedArray%.prototype.find": true, + "built-ins›typed arrays›%TypedArray%.prototype.findIndex": true, + "built-ins›typed arrays›%TypedArray%.prototype.fill": true, + "built-ins›typed arrays›%TypedArray%.prototype.keys": true, + "built-ins›typed arrays›%TypedArray%.prototype.values": true, + "built-ins›typed arrays›%TypedArray%.prototype.entries": true, + "built-ins›typed arrays›%TypedArray%.prototype[Symbol.iterator]": true, + "built-ins›typed arrays›%TypedArray%[Symbol.species]": true, + "built-ins›Map›basic functionality": true, + "built-ins›Map›constructor arguments": true, + "built-ins›Map›constructor requires new": true, + "built-ins›Map›constructor accepts null": true, + "built-ins›Map›constructor invokes set": true, + "built-ins›Map›iterator closing": true, + "built-ins›Map›Map.prototype.set returns this": true, + "built-ins›Map›-0 key converts to +0": true, + "built-ins›Map›Map.prototype.size": true, + "built-ins›Map›Map.prototype.delete": true, + "built-ins›Map›Map.prototype.clear": true, + "built-ins›Map›Map.prototype.forEach": true, + "built-ins›Map›Map.prototype.keys": true, + "built-ins›Map›Map.prototype.values": true, + "built-ins›Map›Map.prototype.entries": true, + "built-ins›Map›Map.prototype[Symbol.iterator]": true, + "built-ins›Map›Map.prototype isn't an instance": true, + "built-ins›Map›Map iterator prototype chain": true, + "built-ins›Map›Map[Symbol.species]": true, + "built-ins›Set›basic functionality": true, + "built-ins›Set›constructor arguments": true, + "built-ins›Set›constructor requires new": true, + "built-ins›Set›constructor accepts null": true, + "built-ins›Set›constructor invokes add": true, + "built-ins›Set›iterator closing": true, + "built-ins›Set›Set.prototype.add returns this": true, + "built-ins›Set›-0 key converts to +0": true, + "built-ins›Set›Set.prototype.size": true, + "built-ins›Set›Set.prototype.delete": true, + "built-ins›Set›Set.prototype.clear": true, + "built-ins›Set›Set.prototype.forEach": true, + "built-ins›Set›Set.prototype.keys": true, + "built-ins›Set›Set.prototype.values": true, + "built-ins›Set›Set.prototype.entries": true, + "built-ins›Set›Set.prototype[Symbol.iterator]": true, + "built-ins›Set›Set.prototype isn't an instance": true, + "built-ins›Set›Set iterator prototype chain": true, + "built-ins›Set›Set[Symbol.species]": true, + "built-ins›WeakMap›basic functionality": true, + "built-ins›WeakMap›constructor arguments": true, + "built-ins›WeakMap›constructor requires new": true, + "built-ins›WeakMap›constructor accepts null": true, + "built-ins›WeakMap›constructor invokes set": true, + "built-ins›WeakMap›frozen objects as keys": true, + "built-ins›WeakMap›iterator closing": true, + "built-ins›WeakMap›WeakMap.prototype.set returns this": true, + "built-ins›WeakMap›WeakMap.prototype.delete": true, + "built-ins›WeakMap›no WeakMap.prototype.clear method": true, + "built-ins›WeakMap›.has, .get and .delete methods accept primitives": true, + "built-ins›WeakMap›WeakMap.prototype isn't an instance": true, + "built-ins›WeakSet›basic functionality": true, + "built-ins›WeakSet›constructor arguments": true, + "built-ins›WeakSet›constructor requires new": true, + "built-ins›WeakSet›constructor accepts null": true, + "built-ins›WeakSet›constructor invokes add": true, + "built-ins›WeakSet›iterator closing": true, + "built-ins›WeakSet›WeakSet.prototype.add returns this": true, + "built-ins›WeakSet›WeakSet.prototype.delete": true, + "built-ins›WeakSet›no WeakSet.prototype.clear method": true, + "built-ins›WeakSet›.has and .delete methods accept primitives": true, + "built-ins›WeakSet›WeakSet.prototype isn't an instance": true, + "built-ins›Proxy›constructor requires new": true, + "built-ins›Proxy›no \"prototype\" property": true, + "built-ins›Proxy›\"get\" handler": true, + "built-ins›Proxy›\"get\" handler, instances of proxies": true, + "built-ins›Proxy›\"get\" handler invariants": true, + "built-ins›Proxy›\"set\" handler": true, + "built-ins›Proxy›\"set\" handler, instances of proxies": true, + "built-ins›Proxy›\"set\" handler invariants": true, + "built-ins›Proxy›\"has\" handler": true, + "built-ins›Proxy›\"has\" handler, instances of proxies": true, + "built-ins›Proxy›\"has\" handler invariants": true, + "built-ins›Proxy›\"deleteProperty\" handler": true, + "built-ins›Proxy›\"deleteProperty\" handler invariant": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler invariants": true, + "built-ins›Proxy›\"defineProperty\" handler": true, + "built-ins›Proxy›\"defineProperty\" handler invariants": true, + "built-ins›Proxy›\"getPrototypeOf\" handler": true, + "built-ins›Proxy›\"getPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"setPrototypeOf\" handler": true, + "built-ins›Proxy›\"setPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"isExtensible\" handler": true, + "built-ins›Proxy›\"isExtensible\" handler invariant": true, + "built-ins›Proxy›\"preventExtensions\" handler": true, + "built-ins›Proxy›\"preventExtensions\" handler invariant": true, + "built-ins›Proxy›\"ownKeys\" handler": true, + "built-ins›Proxy›\"ownKeys\" handler invariant": true, + "built-ins›Proxy›\"apply\" handler": true, + "built-ins›Proxy›\"apply\" handler invariant": true, + "built-ins›Proxy›\"construct\" handler": true, + "built-ins›Proxy›\"construct\" handler invariants": true, + "built-ins›Proxy›Proxy.revocable": true, + "built-ins›Proxy›Array.isArray support": true, + "built-ins›Proxy›JSON.stringify support": true, + "built-ins›Reflect›Reflect.get": true, + "built-ins›Reflect›Reflect.set": true, + "built-ins›Reflect›Reflect.has": true, + "built-ins›Reflect›Reflect.deleteProperty": true, + "built-ins›Reflect›Reflect.getOwnPropertyDescriptor": true, + "built-ins›Reflect›Reflect.defineProperty": true, + "built-ins›Reflect›Reflect.getPrototypeOf": true, + "built-ins›Reflect›Reflect.setPrototypeOf": true, + "built-ins›Reflect›Reflect.isExtensible": true, + "built-ins›Reflect›Reflect.preventExtensions": true, + "built-ins›Reflect›Reflect.ownKeys, string keys": true, + "built-ins›Reflect›Reflect.ownKeys, symbol keys": true, + "built-ins›Reflect›Reflect.apply": true, + "built-ins›Reflect›Reflect.construct": true, + "built-ins›Reflect›Reflect.construct sets new.target meta-property": true, + "built-ins›Reflect›Reflect.construct creates instances from third argument": true, + "built-ins›Reflect›Reflect.construct, Array subclassing": true, + "built-ins›Reflect›Reflect.construct, RegExp subclassing": true, + "built-ins›Reflect›Reflect.construct, Function subclassing": true, + "built-ins›Reflect›Reflect.construct, Promise subclassing": true, + "built-ins›Promise›basic functionality": true, + "built-ins›Promise›constructor requires new": true, + "built-ins›Promise›Promise.prototype isn't an instance": true, + "built-ins›Promise›Promise.all": true, + "built-ins›Promise›Promise.all, generic iterables": true, + "built-ins›Promise›Promise.race": true, + "built-ins›Promise›Promise.race, generic iterables": true, + "built-ins›Promise›Promise[Symbol.species]": true, + "built-ins›Symbol›basic functionality": true, + "built-ins›Symbol›typeof support": true, + "built-ins›Symbol›symbol keys are hidden to pre-ES6 code": true, + "built-ins›Symbol›Object.defineProperty support": true, + "built-ins›Symbol›symbols inherit from Symbol.prototype": true, + "built-ins›Symbol›cannot coerce to string or number": true, + "built-ins›Symbol›can convert with String()": true, + "built-ins›Symbol›new Symbol() throws": true, + "built-ins›Symbol›Object(symbol)": true, + "built-ins›Symbol›JSON.stringify ignores symbol primitives": true, + "built-ins›Symbol›JSON.stringify ignores symbol objects": true, + "built-ins›Symbol›global symbol registry": true, + "built-ins›well-known symbols›Symbol.hasInstance": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, non-spreadable array": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, spreadable object with poisoned getter": false, + "built-ins›well-known symbols›Symbol.iterator, existence": true, + "built-ins›well-known symbols›Symbol.iterator, arguments object": true, + "built-ins›well-known symbols›Symbol.species, existence": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.concat": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.filter": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.map": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.slice": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.splice": true, + "built-ins›well-known symbols›Symbol.species, RegExp.prototype[Symbol.split]": true, + "built-ins›well-known symbols›Symbol.species, Promise.prototype.then": true, + "built-ins›well-known symbols›Symbol.replace": true, + "built-ins›well-known symbols›Symbol.search": true, + "built-ins›well-known symbols›Symbol.split": true, + "built-ins›well-known symbols›Symbol.match": true, + "built-ins›well-known symbols›Symbol.match, RegExp constructor": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.startsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.endsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.includes": true, + "built-ins›well-known symbols›Symbol.toPrimitive": true, + "built-ins›well-known symbols›Symbol.toStringTag": true, + "built-ins›well-known symbols›Symbol.toStringTag affects existing built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, new built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, misc. built-ins": true, + "built-ins›well-known symbols›Symbol.unscopables": true, + "built-in extensions›Object static methods›Object.assign": true, + "built-in extensions›Object static methods›Object.is": true, + "built-in extensions›Object static methods›Object.getOwnPropertySymbols": true, + "built-in extensions›Object static methods›Object.setPrototypeOf": true, + "built-in extensions›function \"name\" property›function statements": true, + "built-in extensions›function \"name\" property›function expressions": true, + "built-in extensions›function \"name\" property›new Function": true, + "built-in extensions›function \"name\" property›bound functions": true, + "built-in extensions›function \"name\" property›variables (function)": true, + "built-in extensions›function \"name\" property›object methods (function)": true, + "built-in extensions›function \"name\" property›accessor properties": true, + "built-in extensions›function \"name\" property›shorthand methods": true, + "built-in extensions›function \"name\" property›shorthand methods (no lexical binding)": true, + "built-in extensions›function \"name\" property›symbol-keyed methods": true, + "built-in extensions›function \"name\" property›class statements": true, + "built-in extensions›function \"name\" property›class expressions": true, + "built-in extensions›function \"name\" property›variables (class)": true, + "built-in extensions›function \"name\" property›object methods (class)": true, + "built-in extensions›function \"name\" property›class prototype methods": true, + "built-in extensions›function \"name\" property›class static methods": true, + "built-in extensions›function \"name\" property›isn't writable, is configurable": true, + "built-in extensions›String static methods›String.raw": true, + "built-in extensions›String static methods›String.fromCodePoint": true, + "built-in extensions›String.prototype methods›String.prototype.codePointAt": true, + "built-in extensions›String.prototype methods›String.prototype.normalize": true, + "built-in extensions›String.prototype methods›String.prototype.repeat": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.includes": true, + "built-in extensions›String.prototype methods›String.prototype[Symbol.iterator]": true, + "built-in extensions›String.prototype methods›String iterator prototype chain": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype.flags": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.match]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.replace]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.split]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.search]": true, + "built-in extensions›RegExp.prototype properties›RegExp[Symbol.species]": true, + "built-in extensions›Array static methods›Array.from, array-like objects": true, + "built-in extensions›Array static methods›Array.from, generator instances": true, + "built-in extensions›Array static methods›Array.from, generic iterables": true, + "built-in extensions›Array static methods›Array.from, instances of generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, array-like objects": true, + "built-in extensions›Array static methods›Array.from map function, generator instances": true, + "built-in extensions›Array static methods›Array.from map function, generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, instances of iterables": true, + "built-in extensions›Array static methods›Array.from, iterator closing": true, + "built-in extensions›Array static methods›Array.of": true, + "built-in extensions›Array static methods›Array[Symbol.species]": true, + "built-in extensions›Array.prototype methods›Array.prototype.copyWithin": true, + "built-in extensions›Array.prototype methods›Array.prototype.find": true, + "built-in extensions›Array.prototype methods›Array.prototype.findIndex": true, + "built-in extensions›Array.prototype methods›Array.prototype.fill": true, + "built-in extensions›Array.prototype methods›Array.prototype.keys": true, + "built-in extensions›Array.prototype methods›Array.prototype.values": true, + "built-in extensions›Array.prototype methods›Array.prototype.entries": true, + "built-in extensions›Array.prototype methods›Array.prototype.splice": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.iterator]": true, + "built-in extensions›Array.prototype methods›Array iterator prototype chain": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.unscopables]": true, + "built-in extensions›Number properties›Number.isFinite": true, + "built-in extensions›Number properties›Number.isInteger": true, + "built-in extensions›Number properties›Number.isSafeInteger": true, + "built-in extensions›Number properties›Number.isNaN": true, + "built-in extensions›Number properties›Number.parseFloat": true, + "built-in extensions›Number properties›Number.parseInt": true, + "built-in extensions›Number properties›Number.EPSILON": true, + "built-in extensions›Number properties›Number.MIN_SAFE_INTEGER": true, + "built-in extensions›Number properties›Number.MAX_SAFE_INTEGER": true, + "built-in extensions›Math methods›Math.clz32": true, + "built-in extensions›Math methods›Math.imul": true, + "built-in extensions›Math methods›Math.sign": true, + "built-in extensions›Math methods›Math.log10": true, + "built-in extensions›Math methods›Math.log2": true, + "built-in extensions›Math methods›Math.log1p": true, + "built-in extensions›Math methods›Math.expm1": true, + "built-in extensions›Math methods›Math.cosh": true, + "built-in extensions›Math methods›Math.sinh": true, + "built-in extensions›Math methods›Math.tanh": true, + "built-in extensions›Math methods›Math.acosh": true, + "built-in extensions›Math methods›Math.asinh": true, + "built-in extensions›Math methods›Math.atanh": true, + "built-in extensions›Math methods›Math.trunc": true, + "built-in extensions›Math methods›Math.fround": true, + "built-in extensions›Math methods›Math.cbrt": true, + "built-in extensions›Math methods›Math.hypot": true, + "built-in extensions›Date.prototype[Symbol.toPrimitive]": true, + "subclassing›Array is subclassable›length property (accessing)": true, + "subclassing›Array is subclassable›length property (setting)": true, + "subclassing›Array is subclassable›correct prototype chain": true, + "subclassing›Array is subclassable›Array.isArray support": true, + "subclassing›Array is subclassable›Array.prototype.concat": true, + "subclassing›Array is subclassable›Array.prototype.filter": true, + "subclassing›Array is subclassable›Array.prototype.map": true, + "subclassing›Array is subclassable›Array.prototype.slice": true, + "subclassing›Array is subclassable›Array.prototype.splice": true, + "subclassing›Array is subclassable›Array.from": true, + "subclassing›Array is subclassable›Array.of": true, + "subclassing›RegExp is subclassable›basic functionality": true, + "subclassing›RegExp is subclassable›correct prototype chain": true, + "subclassing›RegExp is subclassable›RegExp.prototype.exec": true, + "subclassing›RegExp is subclassable›RegExp.prototype.test": true, + "subclassing›Function is subclassable›can be called": true, + "subclassing›Function is subclassable›correct prototype chain": true, + "subclassing›Function is subclassable›can be used with \"new\"": true, + "subclassing›Function is subclassable›Function.prototype.call": true, + "subclassing›Function is subclassable›Function.prototype.apply": true, + "subclassing›Function is subclassable›Function.prototype.bind": true, + "subclassing›Promise is subclassable›basic functionality": true, + "subclassing›Promise is subclassable›correct prototype chain": true, + "subclassing›Promise is subclassable›Promise.all": true, + "subclassing›Promise is subclassable›Promise.race": true, + "subclassing›miscellaneous subclassables›Boolean is subclassable": true, + "subclassing›miscellaneous subclassables›Number is subclassable": true, + "subclassing›miscellaneous subclassables›String is subclassable": true, + "subclassing›miscellaneous subclassables›Error is subclassable": true, + "subclassing›miscellaneous subclassables›Map is subclassable": true, + "subclassing›miscellaneous subclassables›Set is subclassable": true, + "misc›prototype of bound functions›basic functions": true, + "misc›prototype of bound functions›generator functions": true, + "misc›prototype of bound functions›arrow functions": true, + "misc›prototype of bound functions›classes": true, + "misc›prototype of bound functions›subclasses": true, + "misc›Proxy, internal 'get' calls›ToPrimitive": true, + "misc›Proxy, internal 'get' calls›CreateListFromArrayLike": true, + "misc›Proxy, internal 'get' calls›instanceof operator": true, + "misc›Proxy, internal 'get' calls›HasBinding": true, + "misc›Proxy, internal 'get' calls›CreateDynamicFunction": true, + "misc›Proxy, internal 'get' calls›ClassDefinitionEvaluation": true, + "misc›Proxy, internal 'get' calls›IteratorComplete, IteratorValue": true, + "misc›Proxy, internal 'get' calls›ToPropertyDescriptor": true, + "misc›Proxy, internal 'get' calls›Object.assign": true, + "misc›Proxy, internal 'get' calls›Object.defineProperties": true, + "misc›Proxy, internal 'get' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'get' calls›Error.prototype.toString": true, + "misc›Proxy, internal 'get' calls›String.raw": true, + "misc›Proxy, internal 'get' calls›RegExp constructor": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.flags": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype.test": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.toString": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.match]": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.replace]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.search]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.split]": true, + "misc›Proxy, internal 'get' calls›Array.from": true, + "misc›Proxy, internal 'get' calls›Array.prototype.concat": true, + "misc›Proxy, internal 'get' calls›Array.prototype iteration methods": true, + "misc›Proxy, internal 'get' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'get' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'get' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'get' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'get' calls›Array.prototype.toString": true, + "misc›Proxy, internal 'get' calls›JSON.stringify": true, + "misc›Proxy, internal 'get' calls›Promise resolve functions": true, + "misc›Proxy, internal 'get' calls›String.prototype.match": true, + "misc›Proxy, internal 'get' calls›String.prototype.replace": true, + "misc›Proxy, internal 'get' calls›String.prototype.search": true, + "misc›Proxy, internal 'get' calls›String.prototype.split": true, + "misc›Proxy, internal 'get' calls›Date.prototype.toJSON": true, + "misc›Proxy, internal 'set' calls›Object.assign": true, + "misc›Proxy, internal 'set' calls›Array.from": true, + "misc›Proxy, internal 'set' calls›Array.of": true, + "misc›Proxy, internal 'set' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'set' calls›Array.prototype.fill": true, + "misc›Proxy, internal 'set' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'set' calls›Array.prototype.push": true, + "misc›Proxy, internal 'set' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'set' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'set' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'set' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'defineProperty' calls›[[Set]]": true, + "misc›Proxy, internal 'defineProperty' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›[[Set]]": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.assign": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.prototype.hasOwnProperty": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'ownKeys' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›TestIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›SerializeJSONObject": true, + "misc›Object static methods accept primitives›Object.getPrototypeOf": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyDescriptor": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyNames": true, + "misc›Object static methods accept primitives›Object.seal": true, + "misc›Object static methods accept primitives›Object.freeze": true, + "misc›Object static methods accept primitives›Object.preventExtensions": true, + "misc›Object static methods accept primitives›Object.isSealed": true, + "misc›Object static methods accept primitives›Object.isFrozen": true, + "misc›Object static methods accept primitives›Object.isExtensible": true, + "misc›Object static methods accept primitives›Object.keys": true, + "misc›own property order›Object.keys": true, + "misc›own property order›Object.getOwnPropertyNames": true, + "misc›own property order›Object.assign": true, + "misc›own property order›JSON.stringify": true, + "misc›own property order›JSON.parse": true, + "misc›own property order›Reflect.ownKeys, string key order": true, + "misc›own property order›Reflect.ownKeys, symbol key order": true, + "misc›Updated identifier syntax›var ⸯ;": true, + "misc›Updated identifier syntax›var 𐋀;": true, + "misc›Updated identifier syntax›no escaped reserved words as identifiers": true, + "misc›miscellaneous›duplicate property names in strict mode": true, + "misc›miscellaneous›no semicolon needed after do-while": true, + "misc›miscellaneous›no assignments allowed in for-in head in strict mode": true, + "misc›miscellaneous›accessors aren't constructors": true, + "misc›miscellaneous›Invalid Date": true, + "misc›miscellaneous›RegExp constructor can alter flags": true, + "misc›miscellaneous›RegExp.prototype.toString generic and uses \"flags\" property": true, + "misc›miscellaneous›built-in prototypes are not instances": true, + "misc›miscellaneous›function 'length' is configurable": true, + "annex b›non-strict function semantics›hoisted block-level function declaration": true, + "annex b›non-strict function semantics›labeled function statements": true, + "annex b›non-strict function semantics›function statements in if-statement clauses": true, + "annex b›__proto__ in object literals›basic support": true, + "annex b›__proto__ in object literals›multiple __proto__ is an error": true, + "annex b›__proto__ in object literals›not a computed property": true, + "annex b›__proto__ in object literals›not a shorthand property": true, + "annex b›__proto__ in object literals›not a shorthand method": true, + "annex b›Object.prototype.__proto__›get prototype": true, + "annex b›Object.prototype.__proto__›set prototype": true, + "annex b›Object.prototype.__proto__›absent from Object.create(null)": true, + "annex b›Object.prototype.__proto__›present in hasOwnProperty()": true, + "annex b›Object.prototype.__proto__›correct property descriptor": true, + "annex b›Object.prototype.__proto__›present in Object.getOwnPropertyNames()": true, + "annex b›String.prototype HTML methods›existence": true, + "annex b›String.prototype HTML methods›tags' names are lowercase": true, + "annex b›String.prototype HTML methods›quotes in arguments are escaped": true, + "annex b›RegExp.prototype.compile›basic functionality": true, + "annex b›RegExp.prototype.compile›returns this": true, + "annex b›RegExp syntax extensions›hyphens in character sets": true, + "annex b›RegExp syntax extensions›invalid character escapes": true, + "annex b›RegExp syntax extensions›invalid control-character escapes": true, + "annex b›RegExp syntax extensions›invalid Unicode escapes": true, + "annex b›RegExp syntax extensions›invalid hexadecimal escapes": true, + "annex b›RegExp syntax extensions›incomplete patterns and quantifiers": true, + "annex b›RegExp syntax extensions›octal escape sequences": true, + "annex b›RegExp syntax extensions›invalid backreferences become octal escapes": true, + "annex b›HTML-style comments": true + } +} \ No newline at end of file diff --git a/results/v8/20.18.1.json b/results/v8/20.18.1.json new file mode 100644 index 000000000..9f14d9578 --- /dev/null +++ b/results/v8/20.18.1.json @@ -0,0 +1,1044 @@ +{ + "_version": "20.18.1", + "_engine": "v8 11.3.244.8-node.23", + "ESNEXT": { + "_successful": 2, + "_count": 36, + "_percent": 0.05555555555555555, + "Stage 3›Class and Property Decorators›class decorators": "Invalid or unexpected token", + "Stage 3›Legacy RegExp features in JavaScript›RegExp \"lastMatch\"": true, + "Stage 3›Legacy RegExp features in JavaScript›RegExp.$1-$9": true, + "Stage 3›RegExp Escaping": "RegExp.escape is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toBase64()": "arr.toBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromBase64()": "Uint8Array.fromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromBase64()": "arr2.setFromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toHex()": "arr.toHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromHex()": "Uint8Array.fromHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromHex()": "arr2.setFromHex is not a function", + "Stage 2.7›ShadowRealm": false, + "Stage 2›Generator function.sent Meta Property": "Unexpected token '.'", + "Stage 2›throw expressions›logical": "Unexpected token 'throw'", + "Stage 2›throw expressions›parameter initializers": "Unexpected token 'throw'", + "Stage 2›throw expressions›arrow function bodies": "Unexpected token 'throw'", + "Stage 2›throw expressions›conditionals": "Unexpected token 'throw'", + "Stage 2›Map.prototype.upsert›Map.prototype.upsert": "map.upsert is not a function", + "Stage 2›Map.prototype.upsert›WeakMap.prototype.upsert": "map.upsert is not a function", + "Stage 2›Array.isTemplateObject": "Array.isTemplateObject is not a function", + "Stage 2›Async Iterator Helpers›instanceof AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›extends AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, async iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.drop": "(intermediate value)(...).drop is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.every": "(intermediate value)(...).every is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.filter": "(intermediate value)(...).filter is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.find": "(intermediate value)(...).find is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.flatMap": "(intermediate value)(...).flatMap is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.forEach": "(intermediate value)(...).forEach is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.map": "(intermediate value)(...).map is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.reduce": "(intermediate value)(...).reduce is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.some": "(intermediate value)(...).some is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.take": "(intermediate value)(...).take is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.toArray": "(intermediate value)(...).toArray is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype[@@toStringTag]": "AsyncIterator is not defined" + }, + "ES2025": { + "_successful": 0, + "_count": 28, + "_percent": 0, + "features›Duplicate named capturing groups": "Invalid regular expression: /(?[0-9]{4})-[0-9]{2}|[0-9]{2}-(?[0-9]{4})/: Duplicate capture group name", + "features›Set methods›Set.prototype.intersection()": "(intermediate value).intersection is not a function", + "features›Set methods›Set.prototype.union()": "(intermediate value).union is not a function", + "features›Set methods›Set.prototype.difference()": "(intermediate value).difference is not a function", + "features›Set methods›Set.prototype.symmetricDifference()": "(intermediate value).symmetricDifference is not a function", + "features›Set methods›Set.prototype.isDisjointFrom()": "(intermediate value).isDisjointFrom is not a function", + "features›Set methods›Set.prototype.isSubsetOf()": "(intermediate value).isSubsetOf is not a function", + "features›Set methods›Set.prototype.isSupersetOf()": "(intermediate value).isSupersetOf is not a function", + "features›RegExp Pattern Modifiers›i flag": "Invalid regular expression: /^[a-z](?-i:[a-z])$/i: Invalid group", + "features›RegExp Pattern Modifiers›m flag": "Invalid regular expression: /^a|(?m:^b)/: Invalid group", + "features›RegExp Pattern Modifiers›s flag": "Invalid regular expression: /.(?-s:.)/s: Invalid group", + "features›Iterator Helpers›instanceof Iterator": "Iterator is not defined", + "features›Iterator Helpers›extends Iterator": "Iterator is not defined", + "features›Iterator Helpers›Iterator.from, iterable": "Iterator is not defined", + "features›Iterator Helpers›Iterator.from, iterator": "Iterator is not defined", + "features›Iterator Helpers›Iterator.prototype.drop": "[1,2,3].values(...).drop is not a function", + "features›Iterator Helpers›Iterator.prototype.every": "[1,2,3].values(...).every is not a function", + "features›Iterator Helpers›Iterator.prototype.filter": "[1,2,3].values(...).filter is not a function", + "features›Iterator Helpers›Iterator.prototype.find": "[1,2,3].values(...).find is not a function", + "features›Iterator Helpers›Iterator.prototype.flatMap": "[1,2,3].values(...).flatMap is not a function", + "features›Iterator Helpers›Iterator.prototype.forEach": "[1,2,3].values(...).forEach is not a function", + "features›Iterator Helpers›Iterator.prototype.map": "[1,2,3].values(...).map is not a function", + "features›Iterator Helpers›Iterator.prototype.reduce": "[1,2,3].values(...).reduce is not a function", + "features›Iterator Helpers›Iterator.prototype.some": "[1,2,3].values(...).some is not a function", + "features›Iterator Helpers›Iterator.prototype.take": "[1,2,3].values(...).take is not a function", + "features›Iterator Helpers›Iterator.prototype.toArray": "[1,2,3].values(...).toArray is not a function", + "features›Iterator Helpers›Iterator.prototype[@@toStringTag]": "Iterator is not defined", + "features›Promise.try": "Promise.try is not a function" + }, + "ES2024": { + "_successful": 5, + "_count": 12, + "_percent": 0.4166666666666667, + "features›RegExp `v` flag›set notations": true, + "features›RegExp `v` flag›properties of Strings": true, + "features›RegExp `v` flag›constructor supports it": true, + "features›RegExp `v` flag›shows up in flags": true, + "features›RegExp `v` flag›Unicode 15.1": true, + "features›RegExp `v` flag›Unicode 16.0": false, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transfer()": "buffer1.transfer is not a function", + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transferToFixedLength()": "buffer1.transferToFixedLength is not a function", + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.detached": "buffer1.transfer is not a function", + "features›Promise.withResolvers": "Promise.withResolvers is not a function", + "features›Array Grouping›Object.groupBy()": "Object.groupBy is not a function", + "features›Array Grouping›Map.groupBy()": "Map.groupBy is not a function" + }, + "ES2023": { + "_successful": 10, + "_count": 10, + "_percent": 1, + "features›Array find from last›Array.prototype.findLast": true, + "features›Array find from last›Array.prototype.findLastIndex": true, + "features›Hashbang Grammar": true, + "features›Change Array by copy›Array.prototype.toReversed()": true, + "features›Change Array by copy›Array.prototype.toSorted()": true, + "features›Change Array by copy›Array.prototype.toSpliced()": true, + "features›Change Array by copy›Array.prototype.with()": true, + "features›Change Array by copy›TypedArray.prototype.toReversed()": true, + "features›Change Array by copy›TypedArray.prototype.toSorted()": true, + "features›Change Array by copy›TypedArray.prototype.with()": true + }, + "ES2022": { + "_successful": 39, + "_count": 40, + "_percent": 0.975, + "features›instance class fields›public instance class fields": true, + "features›instance class fields›private instance class fields basic support": true, + "features›instance class fields›private instance class fields initializers": true, + "features›instance class fields›optional private instance class fields access": true, + "features›instance class fields›optional deep private instance class fields access": true, + "features›instance class fields›computed instance class fields": true, + "features›instance class fields›resolving identifier in parent scope": true, + "features›static class fields›public static class fields": true, + "features›static class fields›static class fields use [[Define]]": true, + "features›static class fields›private static class fields": true, + "features›static class fields›computed static class fields": true, + "features›private class methods›private instance methods": true, + "features›private class methods›private static methods": true, + "features›private class methods›private accessor properties": true, + "features›private class methods›private static accessor properties": true, + "features›Ergonomic brand checks for private fields": true, + "features›.at() method on the built-in indexables›Array.prototype.at()": true, + "features›.at() method on the built-in indexables›String.prototype.at()": true, + "features›.at() method on the built-in indexables›%TypedArray%.prototype.at()": true, + "features›Object.hasOwn›Basic functionality": true, + "features›Object.hasOwn›ToObject called before ToPropertyKey": true, + "features›Class static initialization blocks": true, + "features›Error.cause property›Error has cause": true, + "features›Error.cause property›Error.prototype lacks cause": true, + "features›Error.cause property›EvalError has cause": true, + "features›Error.cause property›EvalError.prototype lacks cause": true, + "features›Error.cause property›RangeError has cause": true, + "features›Error.cause property›RangeError.prototype lacks cause": true, + "features›Error.cause property›ReferenceError has cause": true, + "features›Error.cause property›ReferenceError.prototype lacks cause": true, + "features›Error.cause property›SyntaxError has cause": true, + "features›Error.cause property›SyntaxError.prototype lacks cause": true, + "features›Error.cause property›TypeError has cause": true, + "features›Error.cause property›TypeError.prototype lacks cause": true, + "features›Error.cause property›URIError has cause": true, + "features›Error.cause property›URIError.prototype lacks cause": true, + "features›Error.cause property›AggregateError has cause": true, + "features›Error.cause property›AggregateError.prototype lacks cause": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›constructor supports it": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›shows up in flags": false + }, + "ES2021": { + "_successful": 15, + "_count": 15, + "_percent": 1, + "features›String.prototype.replaceAll": true, + "features›Promise.any›fulfillment": true, + "features›Promise.any›AggregateError": true, + "features›WeakReferences›WeakRef minimal support": true, + "features›WeakReferences›FinalizationRegistry minimal support": true, + "features›Logical Assignment›||= basic support": true, + "features›Logical Assignment›||= short-circuiting behaviour": true, + "features›Logical Assignment›||= setter not unecessarily invoked": true, + "features›Logical Assignment›&&= basic support": true, + "features›Logical Assignment›&&= short-circuiting behaviour": true, + "features›Logical Assignment›&&= setter not unecessarily invoked": true, + "features›Logical Assignment›??= basic support": true, + "features›Logical Assignment›??= short-circuiting behaviour": true, + "features›Logical Assignment›??= setter not unecessarily invoked": true, + "features›numeric separators": true + }, + "ES2020": { + "_successful": 19, + "_count": 19, + "_percent": 1, + "features›String.prototype.matchAll›basic functionality": true, + "features›String.prototype.matchAll›throws on non-global regex": true, + "features›BigInt›basic functionality": true, + "features›BigInt›constructor": true, + "features›BigInt›BigInt.asUintN": true, + "features›BigInt›BigInt.asIntN": true, + "features›BigInt›BigInt64Array": true, + "features›BigInt›BigUint64Array": true, + "features›BigInt›DataView.prototype.getBigInt64": true, + "features›BigInt›DataView.prototype.getBigUint64": true, + "features›Promise.allSettled": true, + "features›globalThis›\"globalThis\" global property is global object": true, + "features›globalThis›\"globalThis\" global property has correct property descriptor": true, + "features›optional chaining operator (?.)›optional property access": true, + "features›optional chaining operator (?.)›optional bracket access": true, + "features›optional chaining operator (?.)›optional method call": true, + "features›optional chaining operator (?.)›optional function call": true, + "features›optional chaining operator (?.)›spread parameters after optional chaining": true, + "features›nullish coalescing operator (??)": true + }, + "ES2019": { + "_successful": 23, + "_count": 24, + "_percent": 0.9583333333333334, + "features›Symbol.prototype.description›basic": true, + "features›Symbol.prototype.description›empty description": true, + "features›Symbol.prototype.description›undefined description": true, + "features›Object.fromEntries": true, + "features›string trimming›String.prototype.trimLeft": true, + "features›string trimming›String.prototype.trimRight": true, + "features›string trimming›String.prototype.trimStart": true, + "features›string trimming›String.prototype.trimEnd": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flat": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flatMap": true, + "features›Array.prototype.{flat, flatMap}›flat and flatMap in Array.prototype[@@unscopables]": true, + "misc›optional catch binding›basic": true, + "misc›optional catch binding›await": true, + "misc›optional catch binding›yield": true, + "misc›Function.prototype.toString revision›functions created with the Function constructor": "Unexpected string", + "misc›Function.prototype.toString revision›arrows": true, + "misc›Function.prototype.toString revision›[native code]": true, + "misc›Function.prototype.toString revision›class expression with implicit constructor": true, + "misc›Function.prototype.toString revision›class expression with explicit constructor": true, + "misc›Function.prototype.toString revision›unicode escape sequences in identifiers": true, + "misc›Function.prototype.toString revision›methods and computed property names": true, + "misc›JSON superset›LINE SEPARATOR can appear in string literals": true, + "misc›JSON superset›PARAGRAPH SEPARATOR can appear in string literals": true, + "misc›Well-formed JSON.stringify": true + }, + "ES2018": { + "_successful": 20, + "_count": 21, + "_percent": 0.9523809523809523, + "features›object rest/spread properties›object rest properties": true, + "features›object rest/spread properties›object spread properties": true, + "features›Promise.prototype.finally›basic support": true, + "features›Promise.prototype.finally›don't change resolution value": true, + "features›Promise.prototype.finally›change rejection value": true, + "features›s (dotAll) flag for regular expressions": true, + "features›RegExp named capture groups": true, + "features›RegExp Lookbehind Assertions": true, + "features›RegExp Unicode Property Escapes›basic": true, + "features›RegExp Unicode Property Escapes›Unicode 11": true, + "features›RegExp Unicode Property Escapes›Unicode 12": true, + "features›RegExp Unicode Property Escapes›Unicode 12.1": true, + "features›RegExp Unicode Property Escapes›Unicode 13": true, + "features›RegExp Unicode Property Escapes›Unicode 14": true, + "features›RegExp Unicode Property Escapes›Unicode 15": true, + "features›RegExp Unicode Property Escapes›Unicode 15.1": true, + "features›RegExp Unicode Property Escapes›Unicode 16.0": "Invalid regular expression: /\\p{Script=Todhri}/u: Invalid property name", + "features›Asynchronous Iterators›async generators": true, + "features›Asynchronous Iterators›for-await-of loops": true, + "misc›Proxy \"ownKeys\" handler, duplicate keys for non-extensible targets": true, + "misc›template literal revision": true + }, + "ES2017": { + "_successful": 64, + "_count": 64, + "_percent": 1, + "features›Object static methods›Object.values": true, + "features›Object static methods›Object.entries": true, + "features›Object static methods›Object.getOwnPropertyDescriptors": true, + "features›Object static methods›Object.getOwnPropertyDescriptors doesn't provide undefined descriptors": true, + "features›String padding›String.prototype.padStart": true, + "features›String padding›String.prototype.padEnd": true, + "features›trailing commas in function syntax›in parameter lists": true, + "features›trailing commas in function syntax›in argument lists": true, + "features›async functions›return": true, + "features›async functions›throw": true, + "features›async functions›no line break between async and function": true, + "features›async functions›no \"prototype\" property": true, + "features›async functions›await": true, + "features›async functions›await, rejection": true, + "features›async functions›must await a value": true, + "features›async functions›can await non-Promise values": true, + "features›async functions›cannot await in parameters": true, + "features›async functions›async methods, object literals": true, + "features›async functions›async methods, classes": true, + "features›async functions›async arrow functions in methods, classes": true, + "features›async functions›async arrow functions": true, + "features›async functions›correct prototype chain": true, + "features›async functions›async function prototype, Symbol.toStringTag": true, + "features›async functions›async function constructor": true, + "features›shared memory and atomics›SharedArrayBuffer": true, + "features›shared memory and atomics›SharedArrayBuffer[Symbol.species]": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.byteLength": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.slice": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype[Symbol.toStringTag]": true, + "features›shared memory and atomics›Atomics.add": true, + "features›shared memory and atomics›Atomics.and": true, + "features›shared memory and atomics›Atomics.compareExchange": true, + "features›shared memory and atomics›Atomics.exchange": true, + "features›shared memory and atomics›Atomics.wait": true, + "features›shared memory and atomics›Atomics.notify": true, + "features›shared memory and atomics›Atomics.isLockFree": true, + "features›shared memory and atomics›Atomics.load": true, + "features›shared memory and atomics›Atomics.or": true, + "features›shared memory and atomics›Atomics.store": true, + "features›shared memory and atomics›Atomics.sub": true, + "features›shared memory and atomics›Atomics.xor": true, + "misc›RegExp \"u\" flag, case folding": true, + "misc›arguments.caller removed": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, data properties can shadow accessors": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, data properties can shadow accessors": true, + "annex b›Proxy internal calls, getter/setter methods›__defineGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__defineSetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupSetter__": true, + "annex b›assignments allowed in for-in head in non-strict mode": true + }, + "ES2016": { + "_successful": 14, + "_count": 14, + "_percent": 1, + "features›exponentiation (**) operator›basic support": true, + "features›exponentiation (**) operator›assignment": true, + "features›exponentiation (**) operator›early syntax error for unary negation without parens": true, + "features›Array.prototype.includes›Array.prototype.includes": true, + "features›Array.prototype.includes›Array.prototype.includes handles sparse arrays": true, + "features›Array.prototype.includes›Array.prototype.includes is generic": true, + "features›Array.prototype.includes›%TypedArray%.prototype.includes": true, + "misc›generator functions can't be used with \"new\"": true, + "misc›generator throw() caught by inner generator": true, + "misc›strict fn w/ non-strict non-simple params is error": true, + "misc›nested rest destructuring, declarations": true, + "misc›nested rest destructuring, parameters": true, + "misc›Proxy, \"enumerate\" handler removed": true, + "misc›Proxy internal calls, Array.prototype.includes": true + }, + "ES2015": { + "_successful": 692, + "_count": 697, + "_percent": 0.9928263988522238, + "optimisation›proper tail calls (tail call optimisation)›direct recursion": "Maximum call stack size exceeded", + "optimisation›proper tail calls (tail call optimisation)›mutual recursion": "Maximum call stack size exceeded", + "syntax›default function parameters›basic functionality": true, + "syntax›default function parameters›explicit undefined defers to the default": true, + "syntax›default function parameters›defaults can refer to previous params": true, + "syntax›default function parameters›arguments object interaction": true, + "syntax›default function parameters›temporal dead zone": true, + "syntax›default function parameters›separate scope": true, + "syntax›default function parameters›new Function() support": true, + "syntax›rest parameters›basic functionality": true, + "syntax›rest parameters›function 'length' property": true, + "syntax›rest parameters›arguments object interaction": true, + "syntax›rest parameters›can't be used in setters": true, + "syntax›rest parameters›new Function() support": true, + "syntax›spread syntax for iterable objects›with arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with strings, in function calls": true, + "syntax›spread syntax for iterable objects›with strings, in array literals": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in function calls": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in array literals": true, + "syntax›spread syntax for iterable objects›with generator instances, in calls": true, + "syntax›spread syntax for iterable objects›with generator instances, in arrays": true, + "syntax›spread syntax for iterable objects›with generic iterables, in calls": true, + "syntax›spread syntax for iterable objects›with generic iterables, in arrays": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in calls": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in arrays": true, + "syntax›spread syntax for iterable objects›spreading non-iterables is a runtime error": true, + "syntax›object literal extensions›computed properties": true, + "syntax›object literal extensions›shorthand properties": true, + "syntax›object literal extensions›shorthand methods": true, + "syntax›object literal extensions›string-keyed shorthand methods": true, + "syntax›object literal extensions›computed shorthand methods": true, + "syntax›object literal extensions›computed accessors": true, + "syntax›for..of loops›with arrays": true, + "syntax›for..of loops›with sparse arrays": true, + "syntax›for..of loops›with strings": true, + "syntax›for..of loops›with astral plane strings": true, + "syntax›for..of loops›with generator instances": true, + "syntax›for..of loops›with generic iterables": true, + "syntax›for..of loops›with instances of generic iterables": true, + "syntax›for..of loops›iterator closing, break": true, + "syntax›for..of loops›iterator closing, throw": true, + "syntax›octal and binary literals›octal literals": true, + "syntax›octal and binary literals›binary literals": true, + "syntax›octal and binary literals›octal supported by Number()": true, + "syntax›octal and binary literals›binary supported by Number()": true, + "syntax›template literals›basic functionality": true, + "syntax›template literals›toString conversion": true, + "syntax›template literals›tagged template literals": true, + "syntax›template literals›passed array is frozen": true, + "syntax›template literals›line break normalisation": true, + "syntax›template literals›TemplateStrings call site caching": true, + "syntax›template literals›TemplateStrings permanent caching": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag, lastIndex": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, non-BMP Unicode characters": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, Unicode code point escapes": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, case folding": true, + "syntax›destructuring, declarations›with arrays": true, + "syntax›destructuring, declarations›with sparse arrays": true, + "syntax›destructuring, declarations›with strings": true, + "syntax›destructuring, declarations›with astral plane strings": true, + "syntax›destructuring, declarations›with generator instances": true, + "syntax›destructuring, declarations›with generic iterables": true, + "syntax›destructuring, declarations›with instances of generic iterables": true, + "syntax›destructuring, declarations›iterator closing": true, + "syntax›destructuring, declarations›trailing commas in iterable patterns": true, + "syntax›destructuring, declarations›with objects": true, + "syntax›destructuring, declarations›object destructuring with primitives": true, + "syntax›destructuring, declarations›trailing commas in object patterns": true, + "syntax›destructuring, declarations›throws on null and undefined": true, + "syntax›destructuring, declarations›computed properties": true, + "syntax›destructuring, declarations›multiples in a single var statement": true, + "syntax›destructuring, declarations›nested": true, + "syntax›destructuring, declarations›in for-in loop heads": true, + "syntax›destructuring, declarations›in for-of loop heads": true, + "syntax›destructuring, declarations›in catch heads": true, + "syntax›destructuring, declarations›rest": true, + "syntax›destructuring, declarations›defaults": true, + "syntax›destructuring, declarations›defaults, let temporal dead zone": true, + "syntax›destructuring, assignment›with arrays": true, + "syntax›destructuring, assignment›with sparse arrays": true, + "syntax›destructuring, assignment›with strings": true, + "syntax›destructuring, assignment›with astral plane strings": true, + "syntax›destructuring, assignment›with generator instances": true, + "syntax›destructuring, assignment›with generic iterables": true, + "syntax›destructuring, assignment›with instances of generic iterables": true, + "syntax›destructuring, assignment›iterator closing": true, + "syntax›destructuring, assignment›iterable destructuring expression": true, + "syntax›destructuring, assignment›chained iterable destructuring": true, + "syntax›destructuring, assignment›trailing commas in iterable patterns": true, + "syntax›destructuring, assignment›with objects": true, + "syntax›destructuring, assignment›object destructuring with primitives": true, + "syntax›destructuring, assignment›trailing commas in object patterns": true, + "syntax›destructuring, assignment›object destructuring expression": true, + "syntax›destructuring, assignment›parenthesised left-hand-side is a syntax error": true, + "syntax›destructuring, assignment›chained object destructuring": true, + "syntax›destructuring, assignment›throws on null and undefined": true, + "syntax›destructuring, assignment›computed properties": true, + "syntax›destructuring, assignment›nested": true, + "syntax›destructuring, assignment›rest": true, + "syntax›destructuring, assignment›nested rest": true, + "syntax›destructuring, assignment›empty patterns": true, + "syntax›destructuring, assignment›defaults": true, + "syntax›destructuring, parameters›with arrays": true, + "syntax›destructuring, parameters›with sparse arrays": true, + "syntax›destructuring, parameters›with strings": true, + "syntax›destructuring, parameters›with astral plane strings": true, + "syntax›destructuring, parameters›with generator instances": true, + "syntax›destructuring, parameters›with generic iterables": true, + "syntax›destructuring, parameters›with instances of generic iterables": true, + "syntax›destructuring, parameters›iterator closing": true, + "syntax›destructuring, parameters›trailing commas in iterable patterns": true, + "syntax›destructuring, parameters›with objects": true, + "syntax›destructuring, parameters›object destructuring with primitives": true, + "syntax›destructuring, parameters›trailing commas in object patterns": true, + "syntax›destructuring, parameters›throws on null and undefined": true, + "syntax›destructuring, parameters›computed properties": true, + "syntax›destructuring, parameters›nested": true, + "syntax›destructuring, parameters›'arguments' interaction": true, + "syntax›destructuring, parameters›new Function() support": true, + "syntax›destructuring, parameters›in parameters, function 'length' property": true, + "syntax›destructuring, parameters›rest": true, + "syntax›destructuring, parameters›empty patterns": true, + "syntax›destructuring, parameters›defaults": true, + "syntax›destructuring, parameters›defaults, separate scope": true, + "syntax›destructuring, parameters›defaults, new Function() support": true, + "syntax›destructuring, parameters›aliased defaults, arrow function": true, + "syntax›destructuring, parameters›shorthand defaults, arrow function": true, + "syntax›destructuring, parameters›duplicate identifier": true, + "syntax›Unicode code point escapes›in strings": true, + "syntax›Unicode code point escapes›in identifiers": true, + "syntax›Unicode code point escapes›in property key definitions": true, + "syntax›Unicode code point escapes›in property key accesses": true, + "syntax›new.target›in constructors": true, + "syntax›new.target›assignment is an early error": true, + "bindings›const›basic support": true, + "bindings›const›is block-scoped": true, + "bindings›const›scope shadow resolution": true, + "bindings›const›cannot be in statements": true, + "bindings›const›redefining a const is an error": true, + "bindings›const›for loop statement scope": true, + "bindings›const›for-in loop iteration scope": true, + "bindings›const›for-of loop iteration scope": true, + "bindings›const›temporal dead zone": true, + "bindings›const›basic support (strict mode)": true, + "bindings›const›is block-scoped (strict mode)": true, + "bindings›const›scope shadow resolution (strict mode)": true, + "bindings›const›cannot be in statements (strict mode)": true, + "bindings›const›redefining a const (strict mode)": true, + "bindings›const›for loop statement scope (strict mode)": true, + "bindings›const›for-in loop iteration scope (strict mode)": true, + "bindings›const›for-of loop iteration scope (strict mode)": true, + "bindings›const›temporal dead zone (strict mode)": true, + "bindings›let›basic support": true, + "bindings›let›is block-scoped": true, + "bindings›let›scope shadow resolution": true, + "bindings›let›cannot be in statements": true, + "bindings›let›for loop statement scope": true, + "bindings›let›temporal dead zone": true, + "bindings›let›for/for-in loop iteration scope": true, + "bindings›let›for-in loop binding shadowing parameter": true, + "bindings›let›basic support (strict mode)": true, + "bindings›let›is block-scoped (strict mode)": true, + "bindings›let›scope shadow resolution (strict mode)": true, + "bindings›let›cannot be in statements (strict mode)": true, + "bindings›let›for loop statement scope (strict mode)": true, + "bindings›let›temporal dead zone (strict mode)": true, + "bindings›let›for/for-in loop iteration scope (strict mode)": true, + "bindings›let›for-in loop binding shadowing parameter (strict mode)": true, + "bindings›block-level function declaration": true, + "functions›arrow functions›0 parameters": true, + "functions›arrow functions›1 parameter, no brackets": true, + "functions›arrow functions›multiple parameters": true, + "functions›arrow functions›lexical \"this\" binding": true, + "functions›arrow functions›\"this\" unchanged by call or apply": true, + "functions›arrow functions›can't be bound, can be curried": true, + "functions›arrow functions›lexical \"arguments\" binding": true, + "functions›arrow functions›no line break between params and =>": true, + "functions›arrow functions›correct precedence": true, + "functions›arrow functions›no \"prototype\" property": true, + "functions›arrow functions›lexical \"super\" binding in constructors": true, + "functions›arrow functions›lexical \"super\" binding in methods": true, + "functions›arrow functions›lexical \"new.target\" binding": true, + "functions›class›class statement": true, + "functions›class›is block-scoped": true, + "functions›class›class expression": true, + "functions›class›anonymous class": true, + "functions›class›constructor": true, + "functions›class›prototype methods": true, + "functions›class›string-keyed methods": true, + "functions›class›computed prototype methods": true, + "functions›class›optional semicolons": true, + "functions›class›static methods": true, + "functions›class›computed static methods": true, + "functions›class›accessor properties": true, + "functions›class›computed accessor properties": true, + "functions›class›static accessor properties": true, + "functions›class›computed static accessor properties": true, + "functions›class›class name is lexically scoped": true, + "functions›class›computed names, temporal dead zone": true, + "functions›class›methods aren't enumerable": true, + "functions›class›implicit strict mode": true, + "functions›class›constructor requires new": true, + "functions›class›extends": true, + "functions›class›extends expressions": true, + "functions›class›extends null": true, + "functions›class›new.target": true, + "functions›super›statement in constructors": true, + "functions›super›expression in constructors": true, + "functions›super›in methods, property access": true, + "functions›super›in methods, method calls": true, + "functions›super›method calls use correct \"this\" binding": true, + "functions›super›constructor calls use correct \"new.target\" binding": true, + "functions›super›is statically bound": true, + "functions›super›super() invokes the correct constructor": true, + "functions›generators›basic functionality": true, + "functions›generators›generator function expressions": true, + "functions›generators›correct \"this\" binding": true, + "functions›generators›can't use \"this\" with new": true, + "functions›generators›sending": true, + "functions›generators›%GeneratorPrototype%": true, + "functions›generators›%GeneratorPrototype% prototype chain": true, + "functions›generators›%GeneratorPrototype%.constructor": true, + "functions›generators›%GeneratorPrototype%.throw": true, + "functions›generators›%GeneratorPrototype%.return": true, + "functions›generators›yield operator precedence": true, + "functions›generators›yield *, arrays": true, + "functions›generators›yield *, sparse arrays": true, + "functions›generators›yield *, strings": true, + "functions›generators›yield *, astral plane strings": true, + "functions›generators›yield *, generator instances": true, + "functions›generators›yield *, generic iterables": true, + "functions›generators›yield *, instances of iterables": true, + "functions›generators›yield * on non-iterables is a runtime error": true, + "functions›generators›yield *, iterator closing": true, + "functions›generators›yield *, iterator closing via throw()": true, + "functions›generators›shorthand generator methods": true, + "functions›generators›string-keyed shorthand generator methods": true, + "functions›generators›computed shorthand generators": true, + "functions›generators›shorthand generator methods, classes": true, + "functions›generators›computed shorthand generators, classes": true, + "functions›generators›shorthand generators can't be constructors": true, + "built-ins›typed arrays›Int8Array": true, + "built-ins›typed arrays›Uint8Array": true, + "built-ins›typed arrays›Uint8ClampedArray": true, + "built-ins›typed arrays›Int16Array": true, + "built-ins›typed arrays›Uint16Array": true, + "built-ins›typed arrays›Int32Array": true, + "built-ins›typed arrays›Uint32Array": true, + "built-ins›typed arrays›Float32Array": true, + "built-ins›typed arrays›Float64Array": true, + "built-ins›typed arrays›DataView (Int8)": true, + "built-ins›typed arrays›DataView (Uint8)": true, + "built-ins›typed arrays›DataView (Int16)": true, + "built-ins›typed arrays›DataView (Uint16)": true, + "built-ins›typed arrays›DataView (Int32)": true, + "built-ins›typed arrays›DataView (Uint32)": true, + "built-ins›typed arrays›DataView (Float32)": true, + "built-ins›typed arrays›DataView (Float64)": true, + "built-ins›typed arrays›ArrayBuffer[Symbol.species]": true, + "built-ins›typed arrays›constructors require new": true, + "built-ins›typed arrays›constructors accept generic iterables": true, + "built-ins›typed arrays›correct prototype chains": true, + "built-ins›typed arrays›%TypedArray%.from": true, + "built-ins›typed arrays›%TypedArray%.of": true, + "built-ins›typed arrays›%TypedArray%.prototype.subarray": true, + "built-ins›typed arrays›%TypedArray%.prototype.join": true, + "built-ins›typed arrays›%TypedArray%.prototype.indexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.lastIndexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.slice": true, + "built-ins›typed arrays›%TypedArray%.prototype.every": true, + "built-ins›typed arrays›%TypedArray%.prototype.filter": true, + "built-ins›typed arrays›%TypedArray%.prototype.forEach": true, + "built-ins›typed arrays›%TypedArray%.prototype.map": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduce": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduceRight": true, + "built-ins›typed arrays›%TypedArray%.prototype.reverse": true, + "built-ins›typed arrays›%TypedArray%.prototype.some": true, + "built-ins›typed arrays›%TypedArray%.prototype.sort": true, + "built-ins›typed arrays›%TypedArray%.prototype.copyWithin": true, + "built-ins›typed arrays›%TypedArray%.prototype.find": true, + "built-ins›typed arrays›%TypedArray%.prototype.findIndex": true, + "built-ins›typed arrays›%TypedArray%.prototype.fill": true, + "built-ins›typed arrays›%TypedArray%.prototype.keys": true, + "built-ins›typed arrays›%TypedArray%.prototype.values": true, + "built-ins›typed arrays›%TypedArray%.prototype.entries": true, + "built-ins›typed arrays›%TypedArray%.prototype[Symbol.iterator]": true, + "built-ins›typed arrays›%TypedArray%[Symbol.species]": true, + "built-ins›Map›basic functionality": true, + "built-ins›Map›constructor arguments": true, + "built-ins›Map›constructor requires new": true, + "built-ins›Map›constructor accepts null": true, + "built-ins›Map›constructor invokes set": true, + "built-ins›Map›iterator closing": true, + "built-ins›Map›Map.prototype.set returns this": true, + "built-ins›Map›-0 key converts to +0": true, + "built-ins›Map›Map.prototype.size": true, + "built-ins›Map›Map.prototype.delete": true, + "built-ins›Map›Map.prototype.clear": true, + "built-ins›Map›Map.prototype.forEach": true, + "built-ins›Map›Map.prototype.keys": true, + "built-ins›Map›Map.prototype.values": true, + "built-ins›Map›Map.prototype.entries": true, + "built-ins›Map›Map.prototype[Symbol.iterator]": true, + "built-ins›Map›Map.prototype isn't an instance": true, + "built-ins›Map›Map iterator prototype chain": true, + "built-ins›Map›Map[Symbol.species]": true, + "built-ins›Set›basic functionality": true, + "built-ins›Set›constructor arguments": true, + "built-ins›Set›constructor requires new": true, + "built-ins›Set›constructor accepts null": true, + "built-ins›Set›constructor invokes add": true, + "built-ins›Set›iterator closing": true, + "built-ins›Set›Set.prototype.add returns this": true, + "built-ins›Set›-0 key converts to +0": true, + "built-ins›Set›Set.prototype.size": true, + "built-ins›Set›Set.prototype.delete": true, + "built-ins›Set›Set.prototype.clear": true, + "built-ins›Set›Set.prototype.forEach": true, + "built-ins›Set›Set.prototype.keys": true, + "built-ins›Set›Set.prototype.values": true, + "built-ins›Set›Set.prototype.entries": true, + "built-ins›Set›Set.prototype[Symbol.iterator]": true, + "built-ins›Set›Set.prototype isn't an instance": true, + "built-ins›Set›Set iterator prototype chain": true, + "built-ins›Set›Set[Symbol.species]": true, + "built-ins›WeakMap›basic functionality": true, + "built-ins›WeakMap›constructor arguments": true, + "built-ins›WeakMap›constructor requires new": true, + "built-ins›WeakMap›constructor accepts null": true, + "built-ins›WeakMap›constructor invokes set": true, + "built-ins›WeakMap›frozen objects as keys": true, + "built-ins›WeakMap›iterator closing": true, + "built-ins›WeakMap›WeakMap.prototype.set returns this": true, + "built-ins›WeakMap›WeakMap.prototype.delete": true, + "built-ins›WeakMap›no WeakMap.prototype.clear method": true, + "built-ins›WeakMap›.has, .get and .delete methods accept primitives": true, + "built-ins›WeakMap›WeakMap.prototype isn't an instance": true, + "built-ins›WeakSet›basic functionality": true, + "built-ins›WeakSet›constructor arguments": true, + "built-ins›WeakSet›constructor requires new": true, + "built-ins›WeakSet›constructor accepts null": true, + "built-ins›WeakSet›constructor invokes add": true, + "built-ins›WeakSet›iterator closing": true, + "built-ins›WeakSet›WeakSet.prototype.add returns this": true, + "built-ins›WeakSet›WeakSet.prototype.delete": true, + "built-ins›WeakSet›no WeakSet.prototype.clear method": true, + "built-ins›WeakSet›.has and .delete methods accept primitives": true, + "built-ins›WeakSet›WeakSet.prototype isn't an instance": true, + "built-ins›Proxy›constructor requires new": true, + "built-ins›Proxy›no \"prototype\" property": true, + "built-ins›Proxy›\"get\" handler": true, + "built-ins›Proxy›\"get\" handler, instances of proxies": true, + "built-ins›Proxy›\"get\" handler invariants": true, + "built-ins›Proxy›\"set\" handler": true, + "built-ins›Proxy›\"set\" handler, instances of proxies": true, + "built-ins›Proxy›\"set\" handler invariants": true, + "built-ins›Proxy›\"has\" handler": true, + "built-ins›Proxy›\"has\" handler, instances of proxies": true, + "built-ins›Proxy›\"has\" handler invariants": true, + "built-ins›Proxy›\"deleteProperty\" handler": true, + "built-ins›Proxy›\"deleteProperty\" handler invariant": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler invariants": true, + "built-ins›Proxy›\"defineProperty\" handler": true, + "built-ins›Proxy›\"defineProperty\" handler invariants": true, + "built-ins›Proxy›\"getPrototypeOf\" handler": true, + "built-ins›Proxy›\"getPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"setPrototypeOf\" handler": true, + "built-ins›Proxy›\"setPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"isExtensible\" handler": true, + "built-ins›Proxy›\"isExtensible\" handler invariant": true, + "built-ins›Proxy›\"preventExtensions\" handler": true, + "built-ins›Proxy›\"preventExtensions\" handler invariant": true, + "built-ins›Proxy›\"ownKeys\" handler": true, + "built-ins›Proxy›\"ownKeys\" handler invariant": true, + "built-ins›Proxy›\"apply\" handler": true, + "built-ins›Proxy›\"apply\" handler invariant": true, + "built-ins›Proxy›\"construct\" handler": true, + "built-ins›Proxy›\"construct\" handler invariants": true, + "built-ins›Proxy›Proxy.revocable": true, + "built-ins›Proxy›Array.isArray support": true, + "built-ins›Proxy›JSON.stringify support": true, + "built-ins›Reflect›Reflect.get": true, + "built-ins›Reflect›Reflect.set": true, + "built-ins›Reflect›Reflect.has": true, + "built-ins›Reflect›Reflect.deleteProperty": true, + "built-ins›Reflect›Reflect.getOwnPropertyDescriptor": true, + "built-ins›Reflect›Reflect.defineProperty": true, + "built-ins›Reflect›Reflect.getPrototypeOf": true, + "built-ins›Reflect›Reflect.setPrototypeOf": true, + "built-ins›Reflect›Reflect.isExtensible": true, + "built-ins›Reflect›Reflect.preventExtensions": true, + "built-ins›Reflect›Reflect.ownKeys, string keys": true, + "built-ins›Reflect›Reflect.ownKeys, symbol keys": true, + "built-ins›Reflect›Reflect.apply": true, + "built-ins›Reflect›Reflect.construct": true, + "built-ins›Reflect›Reflect.construct sets new.target meta-property": true, + "built-ins›Reflect›Reflect.construct creates instances from third argument": true, + "built-ins›Reflect›Reflect.construct, Array subclassing": true, + "built-ins›Reflect›Reflect.construct, RegExp subclassing": true, + "built-ins›Reflect›Reflect.construct, Function subclassing": true, + "built-ins›Reflect›Reflect.construct, Promise subclassing": true, + "built-ins›Promise›basic functionality": true, + "built-ins›Promise›constructor requires new": true, + "built-ins›Promise›Promise.prototype isn't an instance": true, + "built-ins›Promise›Promise.all": true, + "built-ins›Promise›Promise.all, generic iterables": true, + "built-ins›Promise›Promise.race": true, + "built-ins›Promise›Promise.race, generic iterables": true, + "built-ins›Promise›Promise[Symbol.species]": true, + "built-ins›Symbol›basic functionality": true, + "built-ins›Symbol›typeof support": true, + "built-ins›Symbol›symbol keys are hidden to pre-ES6 code": true, + "built-ins›Symbol›Object.defineProperty support": true, + "built-ins›Symbol›symbols inherit from Symbol.prototype": true, + "built-ins›Symbol›cannot coerce to string or number": true, + "built-ins›Symbol›can convert with String()": true, + "built-ins›Symbol›new Symbol() throws": true, + "built-ins›Symbol›Object(symbol)": true, + "built-ins›Symbol›JSON.stringify ignores symbol primitives": true, + "built-ins›Symbol›JSON.stringify ignores symbol objects": true, + "built-ins›Symbol›global symbol registry": true, + "built-ins›well-known symbols›Symbol.hasInstance": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, non-spreadable array": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, spreadable object with poisoned getter": false, + "built-ins›well-known symbols›Symbol.iterator, existence": true, + "built-ins›well-known symbols›Symbol.iterator, arguments object": true, + "built-ins›well-known symbols›Symbol.species, existence": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.concat": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.filter": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.map": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.slice": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.splice": true, + "built-ins›well-known symbols›Symbol.species, RegExp.prototype[Symbol.split]": true, + "built-ins›well-known symbols›Symbol.species, Promise.prototype.then": true, + "built-ins›well-known symbols›Symbol.replace": true, + "built-ins›well-known symbols›Symbol.search": true, + "built-ins›well-known symbols›Symbol.split": true, + "built-ins›well-known symbols›Symbol.match": true, + "built-ins›well-known symbols›Symbol.match, RegExp constructor": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.startsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.endsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.includes": true, + "built-ins›well-known symbols›Symbol.toPrimitive": true, + "built-ins›well-known symbols›Symbol.toStringTag": true, + "built-ins›well-known symbols›Symbol.toStringTag affects existing built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, new built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, misc. built-ins": true, + "built-ins›well-known symbols›Symbol.unscopables": true, + "built-in extensions›Object static methods›Object.assign": true, + "built-in extensions›Object static methods›Object.is": true, + "built-in extensions›Object static methods›Object.getOwnPropertySymbols": true, + "built-in extensions›Object static methods›Object.setPrototypeOf": true, + "built-in extensions›function \"name\" property›function statements": true, + "built-in extensions›function \"name\" property›function expressions": true, + "built-in extensions›function \"name\" property›new Function": true, + "built-in extensions›function \"name\" property›bound functions": true, + "built-in extensions›function \"name\" property›variables (function)": true, + "built-in extensions›function \"name\" property›object methods (function)": true, + "built-in extensions›function \"name\" property›accessor properties": true, + "built-in extensions›function \"name\" property›shorthand methods": true, + "built-in extensions›function \"name\" property›shorthand methods (no lexical binding)": true, + "built-in extensions›function \"name\" property›symbol-keyed methods": true, + "built-in extensions›function \"name\" property›class statements": true, + "built-in extensions›function \"name\" property›class expressions": true, + "built-in extensions›function \"name\" property›variables (class)": true, + "built-in extensions›function \"name\" property›object methods (class)": true, + "built-in extensions›function \"name\" property›class prototype methods": true, + "built-in extensions›function \"name\" property›class static methods": true, + "built-in extensions›function \"name\" property›isn't writable, is configurable": true, + "built-in extensions›String static methods›String.raw": true, + "built-in extensions›String static methods›String.fromCodePoint": true, + "built-in extensions›String.prototype methods›String.prototype.codePointAt": true, + "built-in extensions›String.prototype methods›String.prototype.normalize": true, + "built-in extensions›String.prototype methods›String.prototype.repeat": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.includes": true, + "built-in extensions›String.prototype methods›String.prototype[Symbol.iterator]": true, + "built-in extensions›String.prototype methods›String iterator prototype chain": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype.flags": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.match]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.replace]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.split]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.search]": true, + "built-in extensions›RegExp.prototype properties›RegExp[Symbol.species]": true, + "built-in extensions›Array static methods›Array.from, array-like objects": true, + "built-in extensions›Array static methods›Array.from, generator instances": true, + "built-in extensions›Array static methods›Array.from, generic iterables": true, + "built-in extensions›Array static methods›Array.from, instances of generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, array-like objects": true, + "built-in extensions›Array static methods›Array.from map function, generator instances": true, + "built-in extensions›Array static methods›Array.from map function, generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, instances of iterables": true, + "built-in extensions›Array static methods›Array.from, iterator closing": true, + "built-in extensions›Array static methods›Array.of": true, + "built-in extensions›Array static methods›Array[Symbol.species]": true, + "built-in extensions›Array.prototype methods›Array.prototype.copyWithin": true, + "built-in extensions›Array.prototype methods›Array.prototype.find": true, + "built-in extensions›Array.prototype methods›Array.prototype.findIndex": true, + "built-in extensions›Array.prototype methods›Array.prototype.fill": true, + "built-in extensions›Array.prototype methods›Array.prototype.keys": true, + "built-in extensions›Array.prototype methods›Array.prototype.values": true, + "built-in extensions›Array.prototype methods›Array.prototype.entries": true, + "built-in extensions›Array.prototype methods›Array.prototype.splice": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.iterator]": true, + "built-in extensions›Array.prototype methods›Array iterator prototype chain": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.unscopables]": true, + "built-in extensions›Number properties›Number.isFinite": true, + "built-in extensions›Number properties›Number.isInteger": true, + "built-in extensions›Number properties›Number.isSafeInteger": true, + "built-in extensions›Number properties›Number.isNaN": true, + "built-in extensions›Number properties›Number.parseFloat": true, + "built-in extensions›Number properties›Number.parseInt": true, + "built-in extensions›Number properties›Number.EPSILON": true, + "built-in extensions›Number properties›Number.MIN_SAFE_INTEGER": true, + "built-in extensions›Number properties›Number.MAX_SAFE_INTEGER": true, + "built-in extensions›Math methods›Math.clz32": true, + "built-in extensions›Math methods›Math.imul": true, + "built-in extensions›Math methods›Math.sign": true, + "built-in extensions›Math methods›Math.log10": true, + "built-in extensions›Math methods›Math.log2": true, + "built-in extensions›Math methods›Math.log1p": true, + "built-in extensions›Math methods›Math.expm1": true, + "built-in extensions›Math methods›Math.cosh": true, + "built-in extensions›Math methods›Math.sinh": true, + "built-in extensions›Math methods›Math.tanh": true, + "built-in extensions›Math methods›Math.acosh": true, + "built-in extensions›Math methods›Math.asinh": true, + "built-in extensions›Math methods›Math.atanh": true, + "built-in extensions›Math methods›Math.trunc": true, + "built-in extensions›Math methods›Math.fround": true, + "built-in extensions›Math methods›Math.cbrt": true, + "built-in extensions›Math methods›Math.hypot": true, + "built-in extensions›Date.prototype[Symbol.toPrimitive]": true, + "subclassing›Array is subclassable›length property (accessing)": true, + "subclassing›Array is subclassable›length property (setting)": true, + "subclassing›Array is subclassable›correct prototype chain": true, + "subclassing›Array is subclassable›Array.isArray support": true, + "subclassing›Array is subclassable›Array.prototype.concat": true, + "subclassing›Array is subclassable›Array.prototype.filter": true, + "subclassing›Array is subclassable›Array.prototype.map": true, + "subclassing›Array is subclassable›Array.prototype.slice": true, + "subclassing›Array is subclassable›Array.prototype.splice": true, + "subclassing›Array is subclassable›Array.from": true, + "subclassing›Array is subclassable›Array.of": true, + "subclassing›RegExp is subclassable›basic functionality": true, + "subclassing›RegExp is subclassable›correct prototype chain": true, + "subclassing›RegExp is subclassable›RegExp.prototype.exec": true, + "subclassing›RegExp is subclassable›RegExp.prototype.test": true, + "subclassing›Function is subclassable›can be called": true, + "subclassing›Function is subclassable›correct prototype chain": true, + "subclassing›Function is subclassable›can be used with \"new\"": true, + "subclassing›Function is subclassable›Function.prototype.call": true, + "subclassing›Function is subclassable›Function.prototype.apply": true, + "subclassing›Function is subclassable›Function.prototype.bind": true, + "subclassing›Promise is subclassable›basic functionality": true, + "subclassing›Promise is subclassable›correct prototype chain": true, + "subclassing›Promise is subclassable›Promise.all": true, + "subclassing›Promise is subclassable›Promise.race": true, + "subclassing›miscellaneous subclassables›Boolean is subclassable": true, + "subclassing›miscellaneous subclassables›Number is subclassable": true, + "subclassing›miscellaneous subclassables›String is subclassable": true, + "subclassing›miscellaneous subclassables›Error is subclassable": true, + "subclassing›miscellaneous subclassables›Map is subclassable": true, + "subclassing›miscellaneous subclassables›Set is subclassable": true, + "misc›prototype of bound functions›basic functions": true, + "misc›prototype of bound functions›generator functions": true, + "misc›prototype of bound functions›arrow functions": true, + "misc›prototype of bound functions›classes": true, + "misc›prototype of bound functions›subclasses": true, + "misc›Proxy, internal 'get' calls›ToPrimitive": true, + "misc›Proxy, internal 'get' calls›CreateListFromArrayLike": true, + "misc›Proxy, internal 'get' calls›instanceof operator": true, + "misc›Proxy, internal 'get' calls›HasBinding": true, + "misc›Proxy, internal 'get' calls›CreateDynamicFunction": true, + "misc›Proxy, internal 'get' calls›ClassDefinitionEvaluation": true, + "misc›Proxy, internal 'get' calls›IteratorComplete, IteratorValue": true, + "misc›Proxy, internal 'get' calls›ToPropertyDescriptor": true, + "misc›Proxy, internal 'get' calls›Object.assign": true, + "misc›Proxy, internal 'get' calls›Object.defineProperties": true, + "misc›Proxy, internal 'get' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'get' calls›Error.prototype.toString": true, + "misc›Proxy, internal 'get' calls›String.raw": true, + "misc›Proxy, internal 'get' calls›RegExp constructor": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.flags": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype.test": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.toString": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.match]": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.replace]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.search]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.split]": true, + "misc›Proxy, internal 'get' calls›Array.from": true, + "misc›Proxy, internal 'get' calls›Array.prototype.concat": true, + "misc›Proxy, internal 'get' calls›Array.prototype iteration methods": true, + "misc›Proxy, internal 'get' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'get' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'get' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'get' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'get' calls›Array.prototype.toString": true, + "misc›Proxy, internal 'get' calls›JSON.stringify": true, + "misc›Proxy, internal 'get' calls›Promise resolve functions": true, + "misc›Proxy, internal 'get' calls›String.prototype.match": true, + "misc›Proxy, internal 'get' calls›String.prototype.replace": true, + "misc›Proxy, internal 'get' calls›String.prototype.search": true, + "misc›Proxy, internal 'get' calls›String.prototype.split": true, + "misc›Proxy, internal 'get' calls›Date.prototype.toJSON": true, + "misc›Proxy, internal 'set' calls›Object.assign": true, + "misc›Proxy, internal 'set' calls›Array.from": true, + "misc›Proxy, internal 'set' calls›Array.of": true, + "misc›Proxy, internal 'set' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'set' calls›Array.prototype.fill": true, + "misc›Proxy, internal 'set' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'set' calls›Array.prototype.push": true, + "misc›Proxy, internal 'set' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'set' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'set' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'set' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'defineProperty' calls›[[Set]]": true, + "misc›Proxy, internal 'defineProperty' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›[[Set]]": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.assign": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.prototype.hasOwnProperty": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'ownKeys' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›TestIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›SerializeJSONObject": true, + "misc›Object static methods accept primitives›Object.getPrototypeOf": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyDescriptor": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyNames": true, + "misc›Object static methods accept primitives›Object.seal": true, + "misc›Object static methods accept primitives›Object.freeze": true, + "misc›Object static methods accept primitives›Object.preventExtensions": true, + "misc›Object static methods accept primitives›Object.isSealed": true, + "misc›Object static methods accept primitives›Object.isFrozen": true, + "misc›Object static methods accept primitives›Object.isExtensible": true, + "misc›Object static methods accept primitives›Object.keys": true, + "misc›own property order›Object.keys": true, + "misc›own property order›Object.getOwnPropertyNames": true, + "misc›own property order›Object.assign": true, + "misc›own property order›JSON.stringify": true, + "misc›own property order›JSON.parse": true, + "misc›own property order›Reflect.ownKeys, string key order": true, + "misc›own property order›Reflect.ownKeys, symbol key order": true, + "misc›Updated identifier syntax›var ⸯ;": true, + "misc›Updated identifier syntax›var 𐋀;": true, + "misc›Updated identifier syntax›no escaped reserved words as identifiers": true, + "misc›miscellaneous›duplicate property names in strict mode": true, + "misc›miscellaneous›no semicolon needed after do-while": true, + "misc›miscellaneous›no assignments allowed in for-in head in strict mode": true, + "misc›miscellaneous›accessors aren't constructors": true, + "misc›miscellaneous›Invalid Date": true, + "misc›miscellaneous›RegExp constructor can alter flags": true, + "misc›miscellaneous›RegExp.prototype.toString generic and uses \"flags\" property": true, + "misc›miscellaneous›built-in prototypes are not instances": true, + "misc›miscellaneous›function 'length' is configurable": true, + "annex b›non-strict function semantics›hoisted block-level function declaration": true, + "annex b›non-strict function semantics›labeled function statements": true, + "annex b›non-strict function semantics›function statements in if-statement clauses": true, + "annex b›__proto__ in object literals›basic support": true, + "annex b›__proto__ in object literals›multiple __proto__ is an error": true, + "annex b›__proto__ in object literals›not a computed property": true, + "annex b›__proto__ in object literals›not a shorthand property": true, + "annex b›__proto__ in object literals›not a shorthand method": true, + "annex b›Object.prototype.__proto__›get prototype": true, + "annex b›Object.prototype.__proto__›set prototype": true, + "annex b›Object.prototype.__proto__›absent from Object.create(null)": true, + "annex b›Object.prototype.__proto__›present in hasOwnProperty()": true, + "annex b›Object.prototype.__proto__›correct property descriptor": true, + "annex b›Object.prototype.__proto__›present in Object.getOwnPropertyNames()": true, + "annex b›String.prototype HTML methods›existence": true, + "annex b›String.prototype HTML methods›tags' names are lowercase": true, + "annex b›String.prototype HTML methods›quotes in arguments are escaped": true, + "annex b›RegExp.prototype.compile›basic functionality": true, + "annex b›RegExp.prototype.compile›returns this": true, + "annex b›RegExp syntax extensions›hyphens in character sets": true, + "annex b›RegExp syntax extensions›invalid character escapes": true, + "annex b›RegExp syntax extensions›invalid control-character escapes": true, + "annex b›RegExp syntax extensions›invalid Unicode escapes": true, + "annex b›RegExp syntax extensions›invalid hexadecimal escapes": true, + "annex b›RegExp syntax extensions›incomplete patterns and quantifiers": true, + "annex b›RegExp syntax extensions›octal escape sequences": true, + "annex b›RegExp syntax extensions›invalid backreferences become octal escapes": true, + "annex b›HTML-style comments": true + } +} \ No newline at end of file diff --git a/results/v8/23.3.0--harmony.json b/results/v8/23.3.0--harmony.json new file mode 100644 index 000000000..6fd1b648e --- /dev/null +++ b/results/v8/23.3.0--harmony.json @@ -0,0 +1,1044 @@ +{ + "_version": "23.3.0--harmony", + "_engine": "v8 12.9.202.28-node.11", + "ESNEXT": { + "_successful": 2, + "_count": 36, + "_percent": 0.05555555555555555, + "Stage 3›Class and Property Decorators›class decorators": "Invalid or unexpected token", + "Stage 3›Legacy RegExp features in JavaScript›RegExp \"lastMatch\"": true, + "Stage 3›Legacy RegExp features in JavaScript›RegExp.$1-$9": true, + "Stage 3›RegExp Escaping": "RegExp.escape is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toBase64()": "arr.toBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromBase64()": "Uint8Array.fromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromBase64()": "arr2.setFromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toHex()": "arr.toHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromHex()": "Uint8Array.fromHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromHex()": "arr2.setFromHex is not a function", + "Stage 2.7›ShadowRealm": false, + "Stage 2›Generator function.sent Meta Property": "Unexpected token '.'", + "Stage 2›throw expressions›logical": "Unexpected token 'throw'", + "Stage 2›throw expressions›parameter initializers": "Unexpected token 'throw'", + "Stage 2›throw expressions›arrow function bodies": "Unexpected token 'throw'", + "Stage 2›throw expressions›conditionals": "Unexpected token 'throw'", + "Stage 2›Map.prototype.upsert›Map.prototype.upsert": "map.upsert is not a function", + "Stage 2›Map.prototype.upsert›WeakMap.prototype.upsert": "map.upsert is not a function", + "Stage 2›Array.isTemplateObject": "Array.isTemplateObject is not a function", + "Stage 2›Async Iterator Helpers›instanceof AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›extends AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, async iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.drop": "(intermediate value)(...).drop is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.every": "(intermediate value)(...).every is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.filter": "(intermediate value)(...).filter is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.find": "(intermediate value)(...).find is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.flatMap": "(intermediate value)(...).flatMap is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.forEach": "(intermediate value)(...).forEach is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.map": "(intermediate value)(...).map is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.reduce": "(intermediate value)(...).reduce is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.some": "(intermediate value)(...).some is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.take": "(intermediate value)(...).take is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.toArray": "(intermediate value)(...).toArray is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype[@@toStringTag]": "AsyncIterator is not defined" + }, + "ES2025": { + "_successful": 27, + "_count": 28, + "_percent": 0.9642857142857143, + "features›Duplicate named capturing groups": true, + "features›Set methods›Set.prototype.intersection()": true, + "features›Set methods›Set.prototype.union()": true, + "features›Set methods›Set.prototype.difference()": true, + "features›Set methods›Set.prototype.symmetricDifference()": true, + "features›Set methods›Set.prototype.isDisjointFrom()": true, + "features›Set methods›Set.prototype.isSubsetOf()": true, + "features›Set methods›Set.prototype.isSupersetOf()": true, + "features›RegExp Pattern Modifiers›i flag": true, + "features›RegExp Pattern Modifiers›m flag": true, + "features›RegExp Pattern Modifiers›s flag": true, + "features›Iterator Helpers›instanceof Iterator": true, + "features›Iterator Helpers›extends Iterator": true, + "features›Iterator Helpers›Iterator.from, iterable": true, + "features›Iterator Helpers›Iterator.from, iterator": true, + "features›Iterator Helpers›Iterator.prototype.drop": true, + "features›Iterator Helpers›Iterator.prototype.every": true, + "features›Iterator Helpers›Iterator.prototype.filter": true, + "features›Iterator Helpers›Iterator.prototype.find": true, + "features›Iterator Helpers›Iterator.prototype.flatMap": true, + "features›Iterator Helpers›Iterator.prototype.forEach": true, + "features›Iterator Helpers›Iterator.prototype.map": true, + "features›Iterator Helpers›Iterator.prototype.reduce": true, + "features›Iterator Helpers›Iterator.prototype.some": true, + "features›Iterator Helpers›Iterator.prototype.take": true, + "features›Iterator Helpers›Iterator.prototype.toArray": true, + "features›Iterator Helpers›Iterator.prototype[@@toStringTag]": true, + "features›Promise.try": false + }, + "ES2024": { + "_successful": 12, + "_count": 12, + "_percent": 1, + "features›RegExp `v` flag›set notations": true, + "features›RegExp `v` flag›properties of Strings": true, + "features›RegExp `v` flag›constructor supports it": true, + "features›RegExp `v` flag›shows up in flags": true, + "features›RegExp `v` flag›Unicode 15.1": true, + "features›RegExp `v` flag›Unicode 16.0": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transfer()": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transferToFixedLength()": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.detached": true, + "features›Promise.withResolvers": true, + "features›Array Grouping›Object.groupBy()": true, + "features›Array Grouping›Map.groupBy()": true + }, + "ES2023": { + "_successful": 10, + "_count": 10, + "_percent": 1, + "features›Array find from last›Array.prototype.findLast": true, + "features›Array find from last›Array.prototype.findLastIndex": true, + "features›Hashbang Grammar": true, + "features›Change Array by copy›Array.prototype.toReversed()": true, + "features›Change Array by copy›Array.prototype.toSorted()": true, + "features›Change Array by copy›Array.prototype.toSpliced()": true, + "features›Change Array by copy›Array.prototype.with()": true, + "features›Change Array by copy›TypedArray.prototype.toReversed()": true, + "features›Change Array by copy›TypedArray.prototype.toSorted()": true, + "features›Change Array by copy›TypedArray.prototype.with()": true + }, + "ES2022": { + "_successful": 39, + "_count": 40, + "_percent": 0.975, + "features›instance class fields›public instance class fields": true, + "features›instance class fields›private instance class fields basic support": true, + "features›instance class fields›private instance class fields initializers": true, + "features›instance class fields›optional private instance class fields access": true, + "features›instance class fields›optional deep private instance class fields access": true, + "features›instance class fields›computed instance class fields": true, + "features›instance class fields›resolving identifier in parent scope": true, + "features›static class fields›public static class fields": true, + "features›static class fields›static class fields use [[Define]]": true, + "features›static class fields›private static class fields": true, + "features›static class fields›computed static class fields": true, + "features›private class methods›private instance methods": true, + "features›private class methods›private static methods": true, + "features›private class methods›private accessor properties": true, + "features›private class methods›private static accessor properties": true, + "features›Ergonomic brand checks for private fields": true, + "features›.at() method on the built-in indexables›Array.prototype.at()": true, + "features›.at() method on the built-in indexables›String.prototype.at()": true, + "features›.at() method on the built-in indexables›%TypedArray%.prototype.at()": true, + "features›Object.hasOwn›Basic functionality": true, + "features›Object.hasOwn›ToObject called before ToPropertyKey": true, + "features›Class static initialization blocks": true, + "features›Error.cause property›Error has cause": true, + "features›Error.cause property›Error.prototype lacks cause": true, + "features›Error.cause property›EvalError has cause": true, + "features›Error.cause property›EvalError.prototype lacks cause": true, + "features›Error.cause property›RangeError has cause": true, + "features›Error.cause property›RangeError.prototype lacks cause": true, + "features›Error.cause property›ReferenceError has cause": true, + "features›Error.cause property›ReferenceError.prototype lacks cause": true, + "features›Error.cause property›SyntaxError has cause": true, + "features›Error.cause property›SyntaxError.prototype lacks cause": true, + "features›Error.cause property›TypeError has cause": true, + "features›Error.cause property›TypeError.prototype lacks cause": true, + "features›Error.cause property›URIError has cause": true, + "features›Error.cause property›URIError.prototype lacks cause": true, + "features›Error.cause property›AggregateError has cause": true, + "features›Error.cause property›AggregateError.prototype lacks cause": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›constructor supports it": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›shows up in flags": false + }, + "ES2021": { + "_successful": 15, + "_count": 15, + "_percent": 1, + "features›String.prototype.replaceAll": true, + "features›Promise.any›fulfillment": true, + "features›Promise.any›AggregateError": true, + "features›WeakReferences›WeakRef minimal support": true, + "features›WeakReferences›FinalizationRegistry minimal support": true, + "features›Logical Assignment›||= basic support": true, + "features›Logical Assignment›||= short-circuiting behaviour": true, + "features›Logical Assignment›||= setter not unecessarily invoked": true, + "features›Logical Assignment›&&= basic support": true, + "features›Logical Assignment›&&= short-circuiting behaviour": true, + "features›Logical Assignment›&&= setter not unecessarily invoked": true, + "features›Logical Assignment›??= basic support": true, + "features›Logical Assignment›??= short-circuiting behaviour": true, + "features›Logical Assignment›??= setter not unecessarily invoked": true, + "features›numeric separators": true + }, + "ES2020": { + "_successful": 19, + "_count": 19, + "_percent": 1, + "features›String.prototype.matchAll›basic functionality": true, + "features›String.prototype.matchAll›throws on non-global regex": true, + "features›BigInt›basic functionality": true, + "features›BigInt›constructor": true, + "features›BigInt›BigInt.asUintN": true, + "features›BigInt›BigInt.asIntN": true, + "features›BigInt›BigInt64Array": true, + "features›BigInt›BigUint64Array": true, + "features›BigInt›DataView.prototype.getBigInt64": true, + "features›BigInt›DataView.prototype.getBigUint64": true, + "features›Promise.allSettled": true, + "features›globalThis›\"globalThis\" global property is global object": true, + "features›globalThis›\"globalThis\" global property has correct property descriptor": true, + "features›optional chaining operator (?.)›optional property access": true, + "features›optional chaining operator (?.)›optional bracket access": true, + "features›optional chaining operator (?.)›optional method call": true, + "features›optional chaining operator (?.)›optional function call": true, + "features›optional chaining operator (?.)›spread parameters after optional chaining": true, + "features›nullish coalescing operator (??)": true + }, + "ES2019": { + "_successful": 23, + "_count": 24, + "_percent": 0.9583333333333334, + "features›Symbol.prototype.description›basic": true, + "features›Symbol.prototype.description›empty description": true, + "features›Symbol.prototype.description›undefined description": true, + "features›Object.fromEntries": true, + "features›string trimming›String.prototype.trimLeft": true, + "features›string trimming›String.prototype.trimRight": true, + "features›string trimming›String.prototype.trimStart": true, + "features›string trimming›String.prototype.trimEnd": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flat": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flatMap": true, + "features›Array.prototype.{flat, flatMap}›flat and flatMap in Array.prototype[@@unscopables]": true, + "misc›optional catch binding›basic": true, + "misc›optional catch binding›await": true, + "misc›optional catch binding›yield": true, + "misc›Function.prototype.toString revision›functions created with the Function constructor": "Unexpected string", + "misc›Function.prototype.toString revision›arrows": true, + "misc›Function.prototype.toString revision›[native code]": true, + "misc›Function.prototype.toString revision›class expression with implicit constructor": true, + "misc›Function.prototype.toString revision›class expression with explicit constructor": true, + "misc›Function.prototype.toString revision›unicode escape sequences in identifiers": true, + "misc›Function.prototype.toString revision›methods and computed property names": true, + "misc›JSON superset›LINE SEPARATOR can appear in string literals": true, + "misc›JSON superset›PARAGRAPH SEPARATOR can appear in string literals": true, + "misc›Well-formed JSON.stringify": true + }, + "ES2018": { + "_successful": 21, + "_count": 21, + "_percent": 1, + "features›object rest/spread properties›object rest properties": true, + "features›object rest/spread properties›object spread properties": true, + "features›Promise.prototype.finally›basic support": true, + "features›Promise.prototype.finally›don't change resolution value": true, + "features›Promise.prototype.finally›change rejection value": true, + "features›s (dotAll) flag for regular expressions": true, + "features›RegExp named capture groups": true, + "features›RegExp Lookbehind Assertions": true, + "features›RegExp Unicode Property Escapes›basic": true, + "features›RegExp Unicode Property Escapes›Unicode 11": true, + "features›RegExp Unicode Property Escapes›Unicode 12": true, + "features›RegExp Unicode Property Escapes›Unicode 12.1": true, + "features›RegExp Unicode Property Escapes›Unicode 13": true, + "features›RegExp Unicode Property Escapes›Unicode 14": true, + "features›RegExp Unicode Property Escapes›Unicode 15": true, + "features›RegExp Unicode Property Escapes›Unicode 15.1": true, + "features›RegExp Unicode Property Escapes›Unicode 16.0": true, + "features›Asynchronous Iterators›async generators": true, + "features›Asynchronous Iterators›for-await-of loops": true, + "misc›Proxy \"ownKeys\" handler, duplicate keys for non-extensible targets": true, + "misc›template literal revision": true + }, + "ES2017": { + "_successful": 64, + "_count": 64, + "_percent": 1, + "features›Object static methods›Object.values": true, + "features›Object static methods›Object.entries": true, + "features›Object static methods›Object.getOwnPropertyDescriptors": true, + "features›Object static methods›Object.getOwnPropertyDescriptors doesn't provide undefined descriptors": true, + "features›String padding›String.prototype.padStart": true, + "features›String padding›String.prototype.padEnd": true, + "features›trailing commas in function syntax›in parameter lists": true, + "features›trailing commas in function syntax›in argument lists": true, + "features›async functions›return": true, + "features›async functions›throw": true, + "features›async functions›no line break between async and function": true, + "features›async functions›no \"prototype\" property": true, + "features›async functions›await": true, + "features›async functions›await, rejection": true, + "features›async functions›must await a value": true, + "features›async functions›can await non-Promise values": true, + "features›async functions›cannot await in parameters": true, + "features›async functions›async methods, object literals": true, + "features›async functions›async methods, classes": true, + "features›async functions›async arrow functions in methods, classes": true, + "features›async functions›async arrow functions": true, + "features›async functions›correct prototype chain": true, + "features›async functions›async function prototype, Symbol.toStringTag": true, + "features›async functions›async function constructor": true, + "features›shared memory and atomics›SharedArrayBuffer": true, + "features›shared memory and atomics›SharedArrayBuffer[Symbol.species]": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.byteLength": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.slice": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype[Symbol.toStringTag]": true, + "features›shared memory and atomics›Atomics.add": true, + "features›shared memory and atomics›Atomics.and": true, + "features›shared memory and atomics›Atomics.compareExchange": true, + "features›shared memory and atomics›Atomics.exchange": true, + "features›shared memory and atomics›Atomics.wait": true, + "features›shared memory and atomics›Atomics.notify": true, + "features›shared memory and atomics›Atomics.isLockFree": true, + "features›shared memory and atomics›Atomics.load": true, + "features›shared memory and atomics›Atomics.or": true, + "features›shared memory and atomics›Atomics.store": true, + "features›shared memory and atomics›Atomics.sub": true, + "features›shared memory and atomics›Atomics.xor": true, + "misc›RegExp \"u\" flag, case folding": true, + "misc›arguments.caller removed": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, data properties can shadow accessors": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, data properties can shadow accessors": true, + "annex b›Proxy internal calls, getter/setter methods›__defineGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__defineSetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupSetter__": true, + "annex b›assignments allowed in for-in head in non-strict mode": true + }, + "ES2016": { + "_successful": 14, + "_count": 14, + "_percent": 1, + "features›exponentiation (**) operator›basic support": true, + "features›exponentiation (**) operator›assignment": true, + "features›exponentiation (**) operator›early syntax error for unary negation without parens": true, + "features›Array.prototype.includes›Array.prototype.includes": true, + "features›Array.prototype.includes›Array.prototype.includes handles sparse arrays": true, + "features›Array.prototype.includes›Array.prototype.includes is generic": true, + "features›Array.prototype.includes›%TypedArray%.prototype.includes": true, + "misc›generator functions can't be used with \"new\"": true, + "misc›generator throw() caught by inner generator": true, + "misc›strict fn w/ non-strict non-simple params is error": true, + "misc›nested rest destructuring, declarations": true, + "misc›nested rest destructuring, parameters": true, + "misc›Proxy, \"enumerate\" handler removed": true, + "misc›Proxy internal calls, Array.prototype.includes": true + }, + "ES2015": { + "_successful": 692, + "_count": 697, + "_percent": 0.9928263988522238, + "optimisation›proper tail calls (tail call optimisation)›direct recursion": "Maximum call stack size exceeded", + "optimisation›proper tail calls (tail call optimisation)›mutual recursion": "Maximum call stack size exceeded", + "syntax›default function parameters›basic functionality": true, + "syntax›default function parameters›explicit undefined defers to the default": true, + "syntax›default function parameters›defaults can refer to previous params": true, + "syntax›default function parameters›arguments object interaction": true, + "syntax›default function parameters›temporal dead zone": true, + "syntax›default function parameters›separate scope": true, + "syntax›default function parameters›new Function() support": true, + "syntax›rest parameters›basic functionality": true, + "syntax›rest parameters›function 'length' property": true, + "syntax›rest parameters›arguments object interaction": true, + "syntax›rest parameters›can't be used in setters": true, + "syntax›rest parameters›new Function() support": true, + "syntax›spread syntax for iterable objects›with arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with strings, in function calls": true, + "syntax›spread syntax for iterable objects›with strings, in array literals": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in function calls": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in array literals": true, + "syntax›spread syntax for iterable objects›with generator instances, in calls": true, + "syntax›spread syntax for iterable objects›with generator instances, in arrays": true, + "syntax›spread syntax for iterable objects›with generic iterables, in calls": true, + "syntax›spread syntax for iterable objects›with generic iterables, in arrays": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in calls": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in arrays": true, + "syntax›spread syntax for iterable objects›spreading non-iterables is a runtime error": true, + "syntax›object literal extensions›computed properties": true, + "syntax›object literal extensions›shorthand properties": true, + "syntax›object literal extensions›shorthand methods": true, + "syntax›object literal extensions›string-keyed shorthand methods": true, + "syntax›object literal extensions›computed shorthand methods": true, + "syntax›object literal extensions›computed accessors": true, + "syntax›for..of loops›with arrays": true, + "syntax›for..of loops›with sparse arrays": true, + "syntax›for..of loops›with strings": true, + "syntax›for..of loops›with astral plane strings": true, + "syntax›for..of loops›with generator instances": true, + "syntax›for..of loops›with generic iterables": true, + "syntax›for..of loops›with instances of generic iterables": true, + "syntax›for..of loops›iterator closing, break": true, + "syntax›for..of loops›iterator closing, throw": true, + "syntax›octal and binary literals›octal literals": true, + "syntax›octal and binary literals›binary literals": true, + "syntax›octal and binary literals›octal supported by Number()": true, + "syntax›octal and binary literals›binary supported by Number()": true, + "syntax›template literals›basic functionality": true, + "syntax›template literals›toString conversion": true, + "syntax›template literals›tagged template literals": true, + "syntax›template literals›passed array is frozen": true, + "syntax›template literals›line break normalisation": true, + "syntax›template literals›TemplateStrings call site caching": true, + "syntax›template literals›TemplateStrings permanent caching": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag, lastIndex": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, non-BMP Unicode characters": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, Unicode code point escapes": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, case folding": true, + "syntax›destructuring, declarations›with arrays": true, + "syntax›destructuring, declarations›with sparse arrays": true, + "syntax›destructuring, declarations›with strings": true, + "syntax›destructuring, declarations›with astral plane strings": true, + "syntax›destructuring, declarations›with generator instances": true, + "syntax›destructuring, declarations›with generic iterables": true, + "syntax›destructuring, declarations›with instances of generic iterables": true, + "syntax›destructuring, declarations›iterator closing": true, + "syntax›destructuring, declarations›trailing commas in iterable patterns": true, + "syntax›destructuring, declarations›with objects": true, + "syntax›destructuring, declarations›object destructuring with primitives": true, + "syntax›destructuring, declarations›trailing commas in object patterns": true, + "syntax›destructuring, declarations›throws on null and undefined": true, + "syntax›destructuring, declarations›computed properties": true, + "syntax›destructuring, declarations›multiples in a single var statement": true, + "syntax›destructuring, declarations›nested": true, + "syntax›destructuring, declarations›in for-in loop heads": true, + "syntax›destructuring, declarations›in for-of loop heads": true, + "syntax›destructuring, declarations›in catch heads": true, + "syntax›destructuring, declarations›rest": true, + "syntax›destructuring, declarations›defaults": true, + "syntax›destructuring, declarations›defaults, let temporal dead zone": true, + "syntax›destructuring, assignment›with arrays": true, + "syntax›destructuring, assignment›with sparse arrays": true, + "syntax›destructuring, assignment›with strings": true, + "syntax›destructuring, assignment›with astral plane strings": true, + "syntax›destructuring, assignment›with generator instances": true, + "syntax›destructuring, assignment›with generic iterables": true, + "syntax›destructuring, assignment›with instances of generic iterables": true, + "syntax›destructuring, assignment›iterator closing": true, + "syntax›destructuring, assignment›iterable destructuring expression": true, + "syntax›destructuring, assignment›chained iterable destructuring": true, + "syntax›destructuring, assignment›trailing commas in iterable patterns": true, + "syntax›destructuring, assignment›with objects": true, + "syntax›destructuring, assignment›object destructuring with primitives": true, + "syntax›destructuring, assignment›trailing commas in object patterns": true, + "syntax›destructuring, assignment›object destructuring expression": true, + "syntax›destructuring, assignment›parenthesised left-hand-side is a syntax error": true, + "syntax›destructuring, assignment›chained object destructuring": true, + "syntax›destructuring, assignment›throws on null and undefined": true, + "syntax›destructuring, assignment›computed properties": true, + "syntax›destructuring, assignment›nested": true, + "syntax›destructuring, assignment›rest": true, + "syntax›destructuring, assignment›nested rest": true, + "syntax›destructuring, assignment›empty patterns": true, + "syntax›destructuring, assignment›defaults": true, + "syntax›destructuring, parameters›with arrays": true, + "syntax›destructuring, parameters›with sparse arrays": true, + "syntax›destructuring, parameters›with strings": true, + "syntax›destructuring, parameters›with astral plane strings": true, + "syntax›destructuring, parameters›with generator instances": true, + "syntax›destructuring, parameters›with generic iterables": true, + "syntax›destructuring, parameters›with instances of generic iterables": true, + "syntax›destructuring, parameters›iterator closing": true, + "syntax›destructuring, parameters›trailing commas in iterable patterns": true, + "syntax›destructuring, parameters›with objects": true, + "syntax›destructuring, parameters›object destructuring with primitives": true, + "syntax›destructuring, parameters›trailing commas in object patterns": true, + "syntax›destructuring, parameters›throws on null and undefined": true, + "syntax›destructuring, parameters›computed properties": true, + "syntax›destructuring, parameters›nested": true, + "syntax›destructuring, parameters›'arguments' interaction": true, + "syntax›destructuring, parameters›new Function() support": true, + "syntax›destructuring, parameters›in parameters, function 'length' property": true, + "syntax›destructuring, parameters›rest": true, + "syntax›destructuring, parameters›empty patterns": true, + "syntax›destructuring, parameters›defaults": true, + "syntax›destructuring, parameters›defaults, separate scope": true, + "syntax›destructuring, parameters›defaults, new Function() support": true, + "syntax›destructuring, parameters›aliased defaults, arrow function": true, + "syntax›destructuring, parameters›shorthand defaults, arrow function": true, + "syntax›destructuring, parameters›duplicate identifier": true, + "syntax›Unicode code point escapes›in strings": true, + "syntax›Unicode code point escapes›in identifiers": true, + "syntax›Unicode code point escapes›in property key definitions": true, + "syntax›Unicode code point escapes›in property key accesses": true, + "syntax›new.target›in constructors": true, + "syntax›new.target›assignment is an early error": true, + "bindings›const›basic support": true, + "bindings›const›is block-scoped": true, + "bindings›const›scope shadow resolution": true, + "bindings›const›cannot be in statements": true, + "bindings›const›redefining a const is an error": true, + "bindings›const›for loop statement scope": true, + "bindings›const›for-in loop iteration scope": true, + "bindings›const›for-of loop iteration scope": true, + "bindings›const›temporal dead zone": true, + "bindings›const›basic support (strict mode)": true, + "bindings›const›is block-scoped (strict mode)": true, + "bindings›const›scope shadow resolution (strict mode)": true, + "bindings›const›cannot be in statements (strict mode)": true, + "bindings›const›redefining a const (strict mode)": true, + "bindings›const›for loop statement scope (strict mode)": true, + "bindings›const›for-in loop iteration scope (strict mode)": true, + "bindings›const›for-of loop iteration scope (strict mode)": true, + "bindings›const›temporal dead zone (strict mode)": true, + "bindings›let›basic support": true, + "bindings›let›is block-scoped": true, + "bindings›let›scope shadow resolution": true, + "bindings›let›cannot be in statements": true, + "bindings›let›for loop statement scope": true, + "bindings›let›temporal dead zone": true, + "bindings›let›for/for-in loop iteration scope": true, + "bindings›let›for-in loop binding shadowing parameter": true, + "bindings›let›basic support (strict mode)": true, + "bindings›let›is block-scoped (strict mode)": true, + "bindings›let›scope shadow resolution (strict mode)": true, + "bindings›let›cannot be in statements (strict mode)": true, + "bindings›let›for loop statement scope (strict mode)": true, + "bindings›let›temporal dead zone (strict mode)": true, + "bindings›let›for/for-in loop iteration scope (strict mode)": true, + "bindings›let›for-in loop binding shadowing parameter (strict mode)": true, + "bindings›block-level function declaration": true, + "functions›arrow functions›0 parameters": true, + "functions›arrow functions›1 parameter, no brackets": true, + "functions›arrow functions›multiple parameters": true, + "functions›arrow functions›lexical \"this\" binding": true, + "functions›arrow functions›\"this\" unchanged by call or apply": true, + "functions›arrow functions›can't be bound, can be curried": true, + "functions›arrow functions›lexical \"arguments\" binding": true, + "functions›arrow functions›no line break between params and =>": true, + "functions›arrow functions›correct precedence": true, + "functions›arrow functions›no \"prototype\" property": true, + "functions›arrow functions›lexical \"super\" binding in constructors": true, + "functions›arrow functions›lexical \"super\" binding in methods": true, + "functions›arrow functions›lexical \"new.target\" binding": true, + "functions›class›class statement": true, + "functions›class›is block-scoped": true, + "functions›class›class expression": true, + "functions›class›anonymous class": true, + "functions›class›constructor": true, + "functions›class›prototype methods": true, + "functions›class›string-keyed methods": true, + "functions›class›computed prototype methods": true, + "functions›class›optional semicolons": true, + "functions›class›static methods": true, + "functions›class›computed static methods": true, + "functions›class›accessor properties": true, + "functions›class›computed accessor properties": true, + "functions›class›static accessor properties": true, + "functions›class›computed static accessor properties": true, + "functions›class›class name is lexically scoped": true, + "functions›class›computed names, temporal dead zone": true, + "functions›class›methods aren't enumerable": true, + "functions›class›implicit strict mode": true, + "functions›class›constructor requires new": true, + "functions›class›extends": true, + "functions›class›extends expressions": true, + "functions›class›extends null": true, + "functions›class›new.target": true, + "functions›super›statement in constructors": true, + "functions›super›expression in constructors": true, + "functions›super›in methods, property access": true, + "functions›super›in methods, method calls": true, + "functions›super›method calls use correct \"this\" binding": true, + "functions›super›constructor calls use correct \"new.target\" binding": true, + "functions›super›is statically bound": true, + "functions›super›super() invokes the correct constructor": true, + "functions›generators›basic functionality": true, + "functions›generators›generator function expressions": true, + "functions›generators›correct \"this\" binding": true, + "functions›generators›can't use \"this\" with new": true, + "functions›generators›sending": true, + "functions›generators›%GeneratorPrototype%": true, + "functions›generators›%GeneratorPrototype% prototype chain": true, + "functions›generators›%GeneratorPrototype%.constructor": true, + "functions›generators›%GeneratorPrototype%.throw": true, + "functions›generators›%GeneratorPrototype%.return": true, + "functions›generators›yield operator precedence": true, + "functions›generators›yield *, arrays": true, + "functions›generators›yield *, sparse arrays": true, + "functions›generators›yield *, strings": true, + "functions›generators›yield *, astral plane strings": true, + "functions›generators›yield *, generator instances": true, + "functions›generators›yield *, generic iterables": true, + "functions›generators›yield *, instances of iterables": true, + "functions›generators›yield * on non-iterables is a runtime error": true, + "functions›generators›yield *, iterator closing": true, + "functions›generators›yield *, iterator closing via throw()": true, + "functions›generators›shorthand generator methods": true, + "functions›generators›string-keyed shorthand generator methods": true, + "functions›generators›computed shorthand generators": true, + "functions›generators›shorthand generator methods, classes": true, + "functions›generators›computed shorthand generators, classes": true, + "functions›generators›shorthand generators can't be constructors": true, + "built-ins›typed arrays›Int8Array": true, + "built-ins›typed arrays›Uint8Array": true, + "built-ins›typed arrays›Uint8ClampedArray": true, + "built-ins›typed arrays›Int16Array": true, + "built-ins›typed arrays›Uint16Array": true, + "built-ins›typed arrays›Int32Array": true, + "built-ins›typed arrays›Uint32Array": true, + "built-ins›typed arrays›Float32Array": true, + "built-ins›typed arrays›Float64Array": true, + "built-ins›typed arrays›DataView (Int8)": true, + "built-ins›typed arrays›DataView (Uint8)": true, + "built-ins›typed arrays›DataView (Int16)": true, + "built-ins›typed arrays›DataView (Uint16)": true, + "built-ins›typed arrays›DataView (Int32)": true, + "built-ins›typed arrays›DataView (Uint32)": true, + "built-ins›typed arrays›DataView (Float32)": true, + "built-ins›typed arrays›DataView (Float64)": true, + "built-ins›typed arrays›ArrayBuffer[Symbol.species]": true, + "built-ins›typed arrays›constructors require new": true, + "built-ins›typed arrays›constructors accept generic iterables": true, + "built-ins›typed arrays›correct prototype chains": true, + "built-ins›typed arrays›%TypedArray%.from": true, + "built-ins›typed arrays›%TypedArray%.of": true, + "built-ins›typed arrays›%TypedArray%.prototype.subarray": true, + "built-ins›typed arrays›%TypedArray%.prototype.join": true, + "built-ins›typed arrays›%TypedArray%.prototype.indexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.lastIndexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.slice": true, + "built-ins›typed arrays›%TypedArray%.prototype.every": true, + "built-ins›typed arrays›%TypedArray%.prototype.filter": true, + "built-ins›typed arrays›%TypedArray%.prototype.forEach": true, + "built-ins›typed arrays›%TypedArray%.prototype.map": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduce": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduceRight": true, + "built-ins›typed arrays›%TypedArray%.prototype.reverse": true, + "built-ins›typed arrays›%TypedArray%.prototype.some": true, + "built-ins›typed arrays›%TypedArray%.prototype.sort": true, + "built-ins›typed arrays›%TypedArray%.prototype.copyWithin": true, + "built-ins›typed arrays›%TypedArray%.prototype.find": true, + "built-ins›typed arrays›%TypedArray%.prototype.findIndex": true, + "built-ins›typed arrays›%TypedArray%.prototype.fill": true, + "built-ins›typed arrays›%TypedArray%.prototype.keys": true, + "built-ins›typed arrays›%TypedArray%.prototype.values": true, + "built-ins›typed arrays›%TypedArray%.prototype.entries": true, + "built-ins›typed arrays›%TypedArray%.prototype[Symbol.iterator]": true, + "built-ins›typed arrays›%TypedArray%[Symbol.species]": true, + "built-ins›Map›basic functionality": true, + "built-ins›Map›constructor arguments": true, + "built-ins›Map›constructor requires new": true, + "built-ins›Map›constructor accepts null": true, + "built-ins›Map›constructor invokes set": true, + "built-ins›Map›iterator closing": true, + "built-ins›Map›Map.prototype.set returns this": true, + "built-ins›Map›-0 key converts to +0": true, + "built-ins›Map›Map.prototype.size": true, + "built-ins›Map›Map.prototype.delete": true, + "built-ins›Map›Map.prototype.clear": true, + "built-ins›Map›Map.prototype.forEach": true, + "built-ins›Map›Map.prototype.keys": true, + "built-ins›Map›Map.prototype.values": true, + "built-ins›Map›Map.prototype.entries": true, + "built-ins›Map›Map.prototype[Symbol.iterator]": true, + "built-ins›Map›Map.prototype isn't an instance": true, + "built-ins›Map›Map iterator prototype chain": true, + "built-ins›Map›Map[Symbol.species]": true, + "built-ins›Set›basic functionality": true, + "built-ins›Set›constructor arguments": true, + "built-ins›Set›constructor requires new": true, + "built-ins›Set›constructor accepts null": true, + "built-ins›Set›constructor invokes add": true, + "built-ins›Set›iterator closing": true, + "built-ins›Set›Set.prototype.add returns this": true, + "built-ins›Set›-0 key converts to +0": true, + "built-ins›Set›Set.prototype.size": true, + "built-ins›Set›Set.prototype.delete": true, + "built-ins›Set›Set.prototype.clear": true, + "built-ins›Set›Set.prototype.forEach": true, + "built-ins›Set›Set.prototype.keys": true, + "built-ins›Set›Set.prototype.values": true, + "built-ins›Set›Set.prototype.entries": true, + "built-ins›Set›Set.prototype[Symbol.iterator]": true, + "built-ins›Set›Set.prototype isn't an instance": true, + "built-ins›Set›Set iterator prototype chain": true, + "built-ins›Set›Set[Symbol.species]": true, + "built-ins›WeakMap›basic functionality": true, + "built-ins›WeakMap›constructor arguments": true, + "built-ins›WeakMap›constructor requires new": true, + "built-ins›WeakMap›constructor accepts null": true, + "built-ins›WeakMap›constructor invokes set": true, + "built-ins›WeakMap›frozen objects as keys": true, + "built-ins›WeakMap›iterator closing": true, + "built-ins›WeakMap›WeakMap.prototype.set returns this": true, + "built-ins›WeakMap›WeakMap.prototype.delete": true, + "built-ins›WeakMap›no WeakMap.prototype.clear method": true, + "built-ins›WeakMap›.has, .get and .delete methods accept primitives": true, + "built-ins›WeakMap›WeakMap.prototype isn't an instance": true, + "built-ins›WeakSet›basic functionality": true, + "built-ins›WeakSet›constructor arguments": true, + "built-ins›WeakSet›constructor requires new": true, + "built-ins›WeakSet›constructor accepts null": true, + "built-ins›WeakSet›constructor invokes add": true, + "built-ins›WeakSet›iterator closing": true, + "built-ins›WeakSet›WeakSet.prototype.add returns this": true, + "built-ins›WeakSet›WeakSet.prototype.delete": true, + "built-ins›WeakSet›no WeakSet.prototype.clear method": true, + "built-ins›WeakSet›.has and .delete methods accept primitives": true, + "built-ins›WeakSet›WeakSet.prototype isn't an instance": true, + "built-ins›Proxy›constructor requires new": true, + "built-ins›Proxy›no \"prototype\" property": true, + "built-ins›Proxy›\"get\" handler": true, + "built-ins›Proxy›\"get\" handler, instances of proxies": true, + "built-ins›Proxy›\"get\" handler invariants": true, + "built-ins›Proxy›\"set\" handler": true, + "built-ins›Proxy›\"set\" handler, instances of proxies": true, + "built-ins›Proxy›\"set\" handler invariants": true, + "built-ins›Proxy›\"has\" handler": true, + "built-ins›Proxy›\"has\" handler, instances of proxies": true, + "built-ins›Proxy›\"has\" handler invariants": true, + "built-ins›Proxy›\"deleteProperty\" handler": true, + "built-ins›Proxy›\"deleteProperty\" handler invariant": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler invariants": true, + "built-ins›Proxy›\"defineProperty\" handler": true, + "built-ins›Proxy›\"defineProperty\" handler invariants": true, + "built-ins›Proxy›\"getPrototypeOf\" handler": true, + "built-ins›Proxy›\"getPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"setPrototypeOf\" handler": true, + "built-ins›Proxy›\"setPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"isExtensible\" handler": true, + "built-ins›Proxy›\"isExtensible\" handler invariant": true, + "built-ins›Proxy›\"preventExtensions\" handler": true, + "built-ins›Proxy›\"preventExtensions\" handler invariant": true, + "built-ins›Proxy›\"ownKeys\" handler": true, + "built-ins›Proxy›\"ownKeys\" handler invariant": true, + "built-ins›Proxy›\"apply\" handler": true, + "built-ins›Proxy›\"apply\" handler invariant": true, + "built-ins›Proxy›\"construct\" handler": true, + "built-ins›Proxy›\"construct\" handler invariants": true, + "built-ins›Proxy›Proxy.revocable": true, + "built-ins›Proxy›Array.isArray support": true, + "built-ins›Proxy›JSON.stringify support": true, + "built-ins›Reflect›Reflect.get": true, + "built-ins›Reflect›Reflect.set": true, + "built-ins›Reflect›Reflect.has": true, + "built-ins›Reflect›Reflect.deleteProperty": true, + "built-ins›Reflect›Reflect.getOwnPropertyDescriptor": true, + "built-ins›Reflect›Reflect.defineProperty": true, + "built-ins›Reflect›Reflect.getPrototypeOf": true, + "built-ins›Reflect›Reflect.setPrototypeOf": true, + "built-ins›Reflect›Reflect.isExtensible": true, + "built-ins›Reflect›Reflect.preventExtensions": true, + "built-ins›Reflect›Reflect.ownKeys, string keys": true, + "built-ins›Reflect›Reflect.ownKeys, symbol keys": true, + "built-ins›Reflect›Reflect.apply": true, + "built-ins›Reflect›Reflect.construct": true, + "built-ins›Reflect›Reflect.construct sets new.target meta-property": true, + "built-ins›Reflect›Reflect.construct creates instances from third argument": true, + "built-ins›Reflect›Reflect.construct, Array subclassing": true, + "built-ins›Reflect›Reflect.construct, RegExp subclassing": true, + "built-ins›Reflect›Reflect.construct, Function subclassing": true, + "built-ins›Reflect›Reflect.construct, Promise subclassing": true, + "built-ins›Promise›basic functionality": true, + "built-ins›Promise›constructor requires new": true, + "built-ins›Promise›Promise.prototype isn't an instance": true, + "built-ins›Promise›Promise.all": true, + "built-ins›Promise›Promise.all, generic iterables": true, + "built-ins›Promise›Promise.race": true, + "built-ins›Promise›Promise.race, generic iterables": true, + "built-ins›Promise›Promise[Symbol.species]": true, + "built-ins›Symbol›basic functionality": true, + "built-ins›Symbol›typeof support": true, + "built-ins›Symbol›symbol keys are hidden to pre-ES6 code": true, + "built-ins›Symbol›Object.defineProperty support": true, + "built-ins›Symbol›symbols inherit from Symbol.prototype": true, + "built-ins›Symbol›cannot coerce to string or number": true, + "built-ins›Symbol›can convert with String()": true, + "built-ins›Symbol›new Symbol() throws": true, + "built-ins›Symbol›Object(symbol)": true, + "built-ins›Symbol›JSON.stringify ignores symbol primitives": true, + "built-ins›Symbol›JSON.stringify ignores symbol objects": true, + "built-ins›Symbol›global symbol registry": true, + "built-ins›well-known symbols›Symbol.hasInstance": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, non-spreadable array": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, spreadable object with poisoned getter": false, + "built-ins›well-known symbols›Symbol.iterator, existence": true, + "built-ins›well-known symbols›Symbol.iterator, arguments object": true, + "built-ins›well-known symbols›Symbol.species, existence": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.concat": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.filter": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.map": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.slice": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.splice": true, + "built-ins›well-known symbols›Symbol.species, RegExp.prototype[Symbol.split]": true, + "built-ins›well-known symbols›Symbol.species, Promise.prototype.then": true, + "built-ins›well-known symbols›Symbol.replace": true, + "built-ins›well-known symbols›Symbol.search": true, + "built-ins›well-known symbols›Symbol.split": true, + "built-ins›well-known symbols›Symbol.match": true, + "built-ins›well-known symbols›Symbol.match, RegExp constructor": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.startsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.endsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.includes": true, + "built-ins›well-known symbols›Symbol.toPrimitive": true, + "built-ins›well-known symbols›Symbol.toStringTag": true, + "built-ins›well-known symbols›Symbol.toStringTag affects existing built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, new built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, misc. built-ins": true, + "built-ins›well-known symbols›Symbol.unscopables": true, + "built-in extensions›Object static methods›Object.assign": true, + "built-in extensions›Object static methods›Object.is": true, + "built-in extensions›Object static methods›Object.getOwnPropertySymbols": true, + "built-in extensions›Object static methods›Object.setPrototypeOf": true, + "built-in extensions›function \"name\" property›function statements": true, + "built-in extensions›function \"name\" property›function expressions": true, + "built-in extensions›function \"name\" property›new Function": true, + "built-in extensions›function \"name\" property›bound functions": true, + "built-in extensions›function \"name\" property›variables (function)": true, + "built-in extensions›function \"name\" property›object methods (function)": true, + "built-in extensions›function \"name\" property›accessor properties": true, + "built-in extensions›function \"name\" property›shorthand methods": true, + "built-in extensions›function \"name\" property›shorthand methods (no lexical binding)": true, + "built-in extensions›function \"name\" property›symbol-keyed methods": true, + "built-in extensions›function \"name\" property›class statements": true, + "built-in extensions›function \"name\" property›class expressions": true, + "built-in extensions›function \"name\" property›variables (class)": true, + "built-in extensions›function \"name\" property›object methods (class)": true, + "built-in extensions›function \"name\" property›class prototype methods": true, + "built-in extensions›function \"name\" property›class static methods": true, + "built-in extensions›function \"name\" property›isn't writable, is configurable": true, + "built-in extensions›String static methods›String.raw": true, + "built-in extensions›String static methods›String.fromCodePoint": true, + "built-in extensions›String.prototype methods›String.prototype.codePointAt": true, + "built-in extensions›String.prototype methods›String.prototype.normalize": true, + "built-in extensions›String.prototype methods›String.prototype.repeat": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.includes": true, + "built-in extensions›String.prototype methods›String.prototype[Symbol.iterator]": true, + "built-in extensions›String.prototype methods›String iterator prototype chain": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype.flags": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.match]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.replace]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.split]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.search]": true, + "built-in extensions›RegExp.prototype properties›RegExp[Symbol.species]": true, + "built-in extensions›Array static methods›Array.from, array-like objects": true, + "built-in extensions›Array static methods›Array.from, generator instances": true, + "built-in extensions›Array static methods›Array.from, generic iterables": true, + "built-in extensions›Array static methods›Array.from, instances of generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, array-like objects": true, + "built-in extensions›Array static methods›Array.from map function, generator instances": true, + "built-in extensions›Array static methods›Array.from map function, generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, instances of iterables": true, + "built-in extensions›Array static methods›Array.from, iterator closing": true, + "built-in extensions›Array static methods›Array.of": true, + "built-in extensions›Array static methods›Array[Symbol.species]": true, + "built-in extensions›Array.prototype methods›Array.prototype.copyWithin": true, + "built-in extensions›Array.prototype methods›Array.prototype.find": true, + "built-in extensions›Array.prototype methods›Array.prototype.findIndex": true, + "built-in extensions›Array.prototype methods›Array.prototype.fill": true, + "built-in extensions›Array.prototype methods›Array.prototype.keys": true, + "built-in extensions›Array.prototype methods›Array.prototype.values": true, + "built-in extensions›Array.prototype methods›Array.prototype.entries": true, + "built-in extensions›Array.prototype methods›Array.prototype.splice": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.iterator]": true, + "built-in extensions›Array.prototype methods›Array iterator prototype chain": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.unscopables]": true, + "built-in extensions›Number properties›Number.isFinite": true, + "built-in extensions›Number properties›Number.isInteger": true, + "built-in extensions›Number properties›Number.isSafeInteger": true, + "built-in extensions›Number properties›Number.isNaN": true, + "built-in extensions›Number properties›Number.parseFloat": true, + "built-in extensions›Number properties›Number.parseInt": true, + "built-in extensions›Number properties›Number.EPSILON": true, + "built-in extensions›Number properties›Number.MIN_SAFE_INTEGER": true, + "built-in extensions›Number properties›Number.MAX_SAFE_INTEGER": true, + "built-in extensions›Math methods›Math.clz32": true, + "built-in extensions›Math methods›Math.imul": true, + "built-in extensions›Math methods›Math.sign": true, + "built-in extensions›Math methods›Math.log10": true, + "built-in extensions›Math methods›Math.log2": true, + "built-in extensions›Math methods›Math.log1p": true, + "built-in extensions›Math methods›Math.expm1": true, + "built-in extensions›Math methods›Math.cosh": true, + "built-in extensions›Math methods›Math.sinh": true, + "built-in extensions›Math methods›Math.tanh": true, + "built-in extensions›Math methods›Math.acosh": true, + "built-in extensions›Math methods›Math.asinh": true, + "built-in extensions›Math methods›Math.atanh": true, + "built-in extensions›Math methods›Math.trunc": true, + "built-in extensions›Math methods›Math.fround": true, + "built-in extensions›Math methods›Math.cbrt": true, + "built-in extensions›Math methods›Math.hypot": true, + "built-in extensions›Date.prototype[Symbol.toPrimitive]": true, + "subclassing›Array is subclassable›length property (accessing)": true, + "subclassing›Array is subclassable›length property (setting)": true, + "subclassing›Array is subclassable›correct prototype chain": true, + "subclassing›Array is subclassable›Array.isArray support": true, + "subclassing›Array is subclassable›Array.prototype.concat": true, + "subclassing›Array is subclassable›Array.prototype.filter": true, + "subclassing›Array is subclassable›Array.prototype.map": true, + "subclassing›Array is subclassable›Array.prototype.slice": true, + "subclassing›Array is subclassable›Array.prototype.splice": true, + "subclassing›Array is subclassable›Array.from": true, + "subclassing›Array is subclassable›Array.of": true, + "subclassing›RegExp is subclassable›basic functionality": true, + "subclassing›RegExp is subclassable›correct prototype chain": true, + "subclassing›RegExp is subclassable›RegExp.prototype.exec": true, + "subclassing›RegExp is subclassable›RegExp.prototype.test": true, + "subclassing›Function is subclassable›can be called": true, + "subclassing›Function is subclassable›correct prototype chain": true, + "subclassing›Function is subclassable›can be used with \"new\"": true, + "subclassing›Function is subclassable›Function.prototype.call": true, + "subclassing›Function is subclassable›Function.prototype.apply": true, + "subclassing›Function is subclassable›Function.prototype.bind": true, + "subclassing›Promise is subclassable›basic functionality": true, + "subclassing›Promise is subclassable›correct prototype chain": true, + "subclassing›Promise is subclassable›Promise.all": true, + "subclassing›Promise is subclassable›Promise.race": true, + "subclassing›miscellaneous subclassables›Boolean is subclassable": true, + "subclassing›miscellaneous subclassables›Number is subclassable": true, + "subclassing›miscellaneous subclassables›String is subclassable": true, + "subclassing›miscellaneous subclassables›Error is subclassable": true, + "subclassing›miscellaneous subclassables›Map is subclassable": true, + "subclassing›miscellaneous subclassables›Set is subclassable": true, + "misc›prototype of bound functions›basic functions": true, + "misc›prototype of bound functions›generator functions": true, + "misc›prototype of bound functions›arrow functions": true, + "misc›prototype of bound functions›classes": true, + "misc›prototype of bound functions›subclasses": true, + "misc›Proxy, internal 'get' calls›ToPrimitive": true, + "misc›Proxy, internal 'get' calls›CreateListFromArrayLike": true, + "misc›Proxy, internal 'get' calls›instanceof operator": true, + "misc›Proxy, internal 'get' calls›HasBinding": true, + "misc›Proxy, internal 'get' calls›CreateDynamicFunction": true, + "misc›Proxy, internal 'get' calls›ClassDefinitionEvaluation": true, + "misc›Proxy, internal 'get' calls›IteratorComplete, IteratorValue": true, + "misc›Proxy, internal 'get' calls›ToPropertyDescriptor": true, + "misc›Proxy, internal 'get' calls›Object.assign": true, + "misc›Proxy, internal 'get' calls›Object.defineProperties": true, + "misc›Proxy, internal 'get' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'get' calls›Error.prototype.toString": true, + "misc›Proxy, internal 'get' calls›String.raw": true, + "misc›Proxy, internal 'get' calls›RegExp constructor": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.flags": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype.test": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.toString": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.match]": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.replace]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.search]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.split]": true, + "misc›Proxy, internal 'get' calls›Array.from": true, + "misc›Proxy, internal 'get' calls›Array.prototype.concat": true, + "misc›Proxy, internal 'get' calls›Array.prototype iteration methods": true, + "misc›Proxy, internal 'get' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'get' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'get' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'get' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'get' calls›Array.prototype.toString": true, + "misc›Proxy, internal 'get' calls›JSON.stringify": true, + "misc›Proxy, internal 'get' calls›Promise resolve functions": true, + "misc›Proxy, internal 'get' calls›String.prototype.match": true, + "misc›Proxy, internal 'get' calls›String.prototype.replace": true, + "misc›Proxy, internal 'get' calls›String.prototype.search": true, + "misc›Proxy, internal 'get' calls›String.prototype.split": true, + "misc›Proxy, internal 'get' calls›Date.prototype.toJSON": true, + "misc›Proxy, internal 'set' calls›Object.assign": true, + "misc›Proxy, internal 'set' calls›Array.from": true, + "misc›Proxy, internal 'set' calls›Array.of": true, + "misc›Proxy, internal 'set' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'set' calls›Array.prototype.fill": true, + "misc›Proxy, internal 'set' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'set' calls›Array.prototype.push": true, + "misc›Proxy, internal 'set' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'set' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'set' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'set' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'defineProperty' calls›[[Set]]": true, + "misc›Proxy, internal 'defineProperty' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›[[Set]]": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.assign": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.prototype.hasOwnProperty": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'ownKeys' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›TestIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›SerializeJSONObject": true, + "misc›Object static methods accept primitives›Object.getPrototypeOf": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyDescriptor": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyNames": true, + "misc›Object static methods accept primitives›Object.seal": true, + "misc›Object static methods accept primitives›Object.freeze": true, + "misc›Object static methods accept primitives›Object.preventExtensions": true, + "misc›Object static methods accept primitives›Object.isSealed": true, + "misc›Object static methods accept primitives›Object.isFrozen": true, + "misc›Object static methods accept primitives›Object.isExtensible": true, + "misc›Object static methods accept primitives›Object.keys": true, + "misc›own property order›Object.keys": true, + "misc›own property order›Object.getOwnPropertyNames": true, + "misc›own property order›Object.assign": true, + "misc›own property order›JSON.stringify": true, + "misc›own property order›JSON.parse": true, + "misc›own property order›Reflect.ownKeys, string key order": true, + "misc›own property order›Reflect.ownKeys, symbol key order": true, + "misc›Updated identifier syntax›var ⸯ;": true, + "misc›Updated identifier syntax›var 𐋀;": true, + "misc›Updated identifier syntax›no escaped reserved words as identifiers": true, + "misc›miscellaneous›duplicate property names in strict mode": true, + "misc›miscellaneous›no semicolon needed after do-while": true, + "misc›miscellaneous›no assignments allowed in for-in head in strict mode": true, + "misc›miscellaneous›accessors aren't constructors": true, + "misc›miscellaneous›Invalid Date": true, + "misc›miscellaneous›RegExp constructor can alter flags": true, + "misc›miscellaneous›RegExp.prototype.toString generic and uses \"flags\" property": true, + "misc›miscellaneous›built-in prototypes are not instances": true, + "misc›miscellaneous›function 'length' is configurable": true, + "annex b›non-strict function semantics›hoisted block-level function declaration": true, + "annex b›non-strict function semantics›labeled function statements": true, + "annex b›non-strict function semantics›function statements in if-statement clauses": true, + "annex b›__proto__ in object literals›basic support": true, + "annex b›__proto__ in object literals›multiple __proto__ is an error": true, + "annex b›__proto__ in object literals›not a computed property": true, + "annex b›__proto__ in object literals›not a shorthand property": true, + "annex b›__proto__ in object literals›not a shorthand method": true, + "annex b›Object.prototype.__proto__›get prototype": true, + "annex b›Object.prototype.__proto__›set prototype": true, + "annex b›Object.prototype.__proto__›absent from Object.create(null)": true, + "annex b›Object.prototype.__proto__›present in hasOwnProperty()": true, + "annex b›Object.prototype.__proto__›correct property descriptor": true, + "annex b›Object.prototype.__proto__›present in Object.getOwnPropertyNames()": true, + "annex b›String.prototype HTML methods›existence": true, + "annex b›String.prototype HTML methods›tags' names are lowercase": true, + "annex b›String.prototype HTML methods›quotes in arguments are escaped": true, + "annex b›RegExp.prototype.compile›basic functionality": true, + "annex b›RegExp.prototype.compile›returns this": true, + "annex b›RegExp syntax extensions›hyphens in character sets": true, + "annex b›RegExp syntax extensions›invalid character escapes": true, + "annex b›RegExp syntax extensions›invalid control-character escapes": true, + "annex b›RegExp syntax extensions›invalid Unicode escapes": true, + "annex b›RegExp syntax extensions›invalid hexadecimal escapes": true, + "annex b›RegExp syntax extensions›incomplete patterns and quantifiers": true, + "annex b›RegExp syntax extensions›octal escape sequences": true, + "annex b›RegExp syntax extensions›invalid backreferences become octal escapes": true, + "annex b›HTML-style comments": true + } +} \ No newline at end of file diff --git a/results/v8/23.3.0.json b/results/v8/23.3.0.json new file mode 100644 index 000000000..0f5a8abce --- /dev/null +++ b/results/v8/23.3.0.json @@ -0,0 +1,1044 @@ +{ + "_version": "23.3.0", + "_engine": "v8 12.9.202.28-node.11", + "ESNEXT": { + "_successful": 2, + "_count": 36, + "_percent": 0.05555555555555555, + "Stage 3›Class and Property Decorators›class decorators": "Invalid or unexpected token", + "Stage 3›Legacy RegExp features in JavaScript›RegExp \"lastMatch\"": true, + "Stage 3›Legacy RegExp features in JavaScript›RegExp.$1-$9": true, + "Stage 3›RegExp Escaping": "RegExp.escape is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toBase64()": "arr.toBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromBase64()": "Uint8Array.fromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromBase64()": "arr2.setFromBase64 is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.toHex()": "arr.toHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.fromHex()": "Uint8Array.fromHex is not a function", + "Stage 3›Uint8Array to/from base64 and hex›Uint8Array.setFromHex()": "arr2.setFromHex is not a function", + "Stage 2.7›ShadowRealm": false, + "Stage 2›Generator function.sent Meta Property": "Unexpected token '.'", + "Stage 2›throw expressions›logical": "Unexpected token 'throw'", + "Stage 2›throw expressions›parameter initializers": "Unexpected token 'throw'", + "Stage 2›throw expressions›arrow function bodies": "Unexpected token 'throw'", + "Stage 2›throw expressions›conditionals": "Unexpected token 'throw'", + "Stage 2›Map.prototype.upsert›Map.prototype.upsert": "map.upsert is not a function", + "Stage 2›Map.prototype.upsert›WeakMap.prototype.upsert": "map.upsert is not a function", + "Stage 2›Array.isTemplateObject": "Array.isTemplateObject is not a function", + "Stage 2›Async Iterator Helpers›instanceof AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›extends AsyncIterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, async iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterable": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.from, iterator": "AsyncIterator is not defined", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.drop": "(intermediate value)(...).drop is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.every": "(intermediate value)(...).every is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.filter": "(intermediate value)(...).filter is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.find": "(intermediate value)(...).find is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.flatMap": "(intermediate value)(...).flatMap is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.forEach": "(intermediate value)(...).forEach is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.map": "(intermediate value)(...).map is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.reduce": "(intermediate value)(...).reduce is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.some": "(intermediate value)(...).some is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.take": "(intermediate value)(...).take is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype.toArray": "(intermediate value)(...).toArray is not a function", + "Stage 2›Async Iterator Helpers›AsyncIterator.prototype[@@toStringTag]": "AsyncIterator is not defined" + }, + "ES2025": { + "_successful": 27, + "_count": 28, + "_percent": 0.9642857142857143, + "features›Duplicate named capturing groups": true, + "features›Set methods›Set.prototype.intersection()": true, + "features›Set methods›Set.prototype.union()": true, + "features›Set methods›Set.prototype.difference()": true, + "features›Set methods›Set.prototype.symmetricDifference()": true, + "features›Set methods›Set.prototype.isDisjointFrom()": true, + "features›Set methods›Set.prototype.isSubsetOf()": true, + "features›Set methods›Set.prototype.isSupersetOf()": true, + "features›RegExp Pattern Modifiers›i flag": true, + "features›RegExp Pattern Modifiers›m flag": true, + "features›RegExp Pattern Modifiers›s flag": true, + "features›Iterator Helpers›instanceof Iterator": true, + "features›Iterator Helpers›extends Iterator": true, + "features›Iterator Helpers›Iterator.from, iterable": true, + "features›Iterator Helpers›Iterator.from, iterator": true, + "features›Iterator Helpers›Iterator.prototype.drop": true, + "features›Iterator Helpers›Iterator.prototype.every": true, + "features›Iterator Helpers›Iterator.prototype.filter": true, + "features›Iterator Helpers›Iterator.prototype.find": true, + "features›Iterator Helpers›Iterator.prototype.flatMap": true, + "features›Iterator Helpers›Iterator.prototype.forEach": true, + "features›Iterator Helpers›Iterator.prototype.map": true, + "features›Iterator Helpers›Iterator.prototype.reduce": true, + "features›Iterator Helpers›Iterator.prototype.some": true, + "features›Iterator Helpers›Iterator.prototype.take": true, + "features›Iterator Helpers›Iterator.prototype.toArray": true, + "features›Iterator Helpers›Iterator.prototype[@@toStringTag]": true, + "features›Promise.try": false + }, + "ES2024": { + "_successful": 12, + "_count": 12, + "_percent": 1, + "features›RegExp `v` flag›set notations": true, + "features›RegExp `v` flag›properties of Strings": true, + "features›RegExp `v` flag›constructor supports it": true, + "features›RegExp `v` flag›shows up in flags": true, + "features›RegExp `v` flag›Unicode 15.1": true, + "features›RegExp `v` flag›Unicode 16.0": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transfer()": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.transferToFixedLength()": true, + "features›ArrayBuffer.prototype.transfer›ArrayBuffer.prototype.detached": true, + "features›Promise.withResolvers": true, + "features›Array Grouping›Object.groupBy()": true, + "features›Array Grouping›Map.groupBy()": true + }, + "ES2023": { + "_successful": 10, + "_count": 10, + "_percent": 1, + "features›Array find from last›Array.prototype.findLast": true, + "features›Array find from last›Array.prototype.findLastIndex": true, + "features›Hashbang Grammar": true, + "features›Change Array by copy›Array.prototype.toReversed()": true, + "features›Change Array by copy›Array.prototype.toSorted()": true, + "features›Change Array by copy›Array.prototype.toSpliced()": true, + "features›Change Array by copy›Array.prototype.with()": true, + "features›Change Array by copy›TypedArray.prototype.toReversed()": true, + "features›Change Array by copy›TypedArray.prototype.toSorted()": true, + "features›Change Array by copy›TypedArray.prototype.with()": true + }, + "ES2022": { + "_successful": 39, + "_count": 40, + "_percent": 0.975, + "features›instance class fields›public instance class fields": true, + "features›instance class fields›private instance class fields basic support": true, + "features›instance class fields›private instance class fields initializers": true, + "features›instance class fields›optional private instance class fields access": true, + "features›instance class fields›optional deep private instance class fields access": true, + "features›instance class fields›computed instance class fields": true, + "features›instance class fields›resolving identifier in parent scope": true, + "features›static class fields›public static class fields": true, + "features›static class fields›static class fields use [[Define]]": true, + "features›static class fields›private static class fields": true, + "features›static class fields›computed static class fields": true, + "features›private class methods›private instance methods": true, + "features›private class methods›private static methods": true, + "features›private class methods›private accessor properties": true, + "features›private class methods›private static accessor properties": true, + "features›Ergonomic brand checks for private fields": true, + "features›.at() method on the built-in indexables›Array.prototype.at()": true, + "features›.at() method on the built-in indexables›String.prototype.at()": true, + "features›.at() method on the built-in indexables›%TypedArray%.prototype.at()": true, + "features›Object.hasOwn›Basic functionality": true, + "features›Object.hasOwn›ToObject called before ToPropertyKey": true, + "features›Class static initialization blocks": true, + "features›Error.cause property›Error has cause": true, + "features›Error.cause property›Error.prototype lacks cause": true, + "features›Error.cause property›EvalError has cause": true, + "features›Error.cause property›EvalError.prototype lacks cause": true, + "features›Error.cause property›RangeError has cause": true, + "features›Error.cause property›RangeError.prototype lacks cause": true, + "features›Error.cause property›ReferenceError has cause": true, + "features›Error.cause property›ReferenceError.prototype lacks cause": true, + "features›Error.cause property›SyntaxError has cause": true, + "features›Error.cause property›SyntaxError.prototype lacks cause": true, + "features›Error.cause property›TypeError has cause": true, + "features›Error.cause property›TypeError.prototype lacks cause": true, + "features›Error.cause property›URIError has cause": true, + "features›Error.cause property›URIError.prototype lacks cause": true, + "features›Error.cause property›AggregateError has cause": true, + "features›Error.cause property›AggregateError.prototype lacks cause": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›constructor supports it": true, + "features›RegExp Match Indices (`hasIndices` / `d` flag)›shows up in flags": false + }, + "ES2021": { + "_successful": 15, + "_count": 15, + "_percent": 1, + "features›String.prototype.replaceAll": true, + "features›Promise.any›fulfillment": true, + "features›Promise.any›AggregateError": true, + "features›WeakReferences›WeakRef minimal support": true, + "features›WeakReferences›FinalizationRegistry minimal support": true, + "features›Logical Assignment›||= basic support": true, + "features›Logical Assignment›||= short-circuiting behaviour": true, + "features›Logical Assignment›||= setter not unecessarily invoked": true, + "features›Logical Assignment›&&= basic support": true, + "features›Logical Assignment›&&= short-circuiting behaviour": true, + "features›Logical Assignment›&&= setter not unecessarily invoked": true, + "features›Logical Assignment›??= basic support": true, + "features›Logical Assignment›??= short-circuiting behaviour": true, + "features›Logical Assignment›??= setter not unecessarily invoked": true, + "features›numeric separators": true + }, + "ES2020": { + "_successful": 19, + "_count": 19, + "_percent": 1, + "features›String.prototype.matchAll›basic functionality": true, + "features›String.prototype.matchAll›throws on non-global regex": true, + "features›BigInt›basic functionality": true, + "features›BigInt›constructor": true, + "features›BigInt›BigInt.asUintN": true, + "features›BigInt›BigInt.asIntN": true, + "features›BigInt›BigInt64Array": true, + "features›BigInt›BigUint64Array": true, + "features›BigInt›DataView.prototype.getBigInt64": true, + "features›BigInt›DataView.prototype.getBigUint64": true, + "features›Promise.allSettled": true, + "features›globalThis›\"globalThis\" global property is global object": true, + "features›globalThis›\"globalThis\" global property has correct property descriptor": true, + "features›optional chaining operator (?.)›optional property access": true, + "features›optional chaining operator (?.)›optional bracket access": true, + "features›optional chaining operator (?.)›optional method call": true, + "features›optional chaining operator (?.)›optional function call": true, + "features›optional chaining operator (?.)›spread parameters after optional chaining": true, + "features›nullish coalescing operator (??)": true + }, + "ES2019": { + "_successful": 23, + "_count": 24, + "_percent": 0.9583333333333334, + "features›Symbol.prototype.description›basic": true, + "features›Symbol.prototype.description›empty description": true, + "features›Symbol.prototype.description›undefined description": true, + "features›Object.fromEntries": true, + "features›string trimming›String.prototype.trimLeft": true, + "features›string trimming›String.prototype.trimRight": true, + "features›string trimming›String.prototype.trimStart": true, + "features›string trimming›String.prototype.trimEnd": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flat": true, + "features›Array.prototype.{flat, flatMap}›Array.prototype.flatMap": true, + "features›Array.prototype.{flat, flatMap}›flat and flatMap in Array.prototype[@@unscopables]": true, + "misc›optional catch binding›basic": true, + "misc›optional catch binding›await": true, + "misc›optional catch binding›yield": true, + "misc›Function.prototype.toString revision›functions created with the Function constructor": "Unexpected string", + "misc›Function.prototype.toString revision›arrows": true, + "misc›Function.prototype.toString revision›[native code]": true, + "misc›Function.prototype.toString revision›class expression with implicit constructor": true, + "misc›Function.prototype.toString revision›class expression with explicit constructor": true, + "misc›Function.prototype.toString revision›unicode escape sequences in identifiers": true, + "misc›Function.prototype.toString revision›methods and computed property names": true, + "misc›JSON superset›LINE SEPARATOR can appear in string literals": true, + "misc›JSON superset›PARAGRAPH SEPARATOR can appear in string literals": true, + "misc›Well-formed JSON.stringify": true + }, + "ES2018": { + "_successful": 21, + "_count": 21, + "_percent": 1, + "features›object rest/spread properties›object rest properties": true, + "features›object rest/spread properties›object spread properties": true, + "features›Promise.prototype.finally›basic support": true, + "features›Promise.prototype.finally›don't change resolution value": true, + "features›Promise.prototype.finally›change rejection value": true, + "features›s (dotAll) flag for regular expressions": true, + "features›RegExp named capture groups": true, + "features›RegExp Lookbehind Assertions": true, + "features›RegExp Unicode Property Escapes›basic": true, + "features›RegExp Unicode Property Escapes›Unicode 11": true, + "features›RegExp Unicode Property Escapes›Unicode 12": true, + "features›RegExp Unicode Property Escapes›Unicode 12.1": true, + "features›RegExp Unicode Property Escapes›Unicode 13": true, + "features›RegExp Unicode Property Escapes›Unicode 14": true, + "features›RegExp Unicode Property Escapes›Unicode 15": true, + "features›RegExp Unicode Property Escapes›Unicode 15.1": true, + "features›RegExp Unicode Property Escapes›Unicode 16.0": true, + "features›Asynchronous Iterators›async generators": true, + "features›Asynchronous Iterators›for-await-of loops": true, + "misc›Proxy \"ownKeys\" handler, duplicate keys for non-extensible targets": true, + "misc›template literal revision": true + }, + "ES2017": { + "_successful": 64, + "_count": 64, + "_percent": 1, + "features›Object static methods›Object.values": true, + "features›Object static methods›Object.entries": true, + "features›Object static methods›Object.getOwnPropertyDescriptors": true, + "features›Object static methods›Object.getOwnPropertyDescriptors doesn't provide undefined descriptors": true, + "features›String padding›String.prototype.padStart": true, + "features›String padding›String.prototype.padEnd": true, + "features›trailing commas in function syntax›in parameter lists": true, + "features›trailing commas in function syntax›in argument lists": true, + "features›async functions›return": true, + "features›async functions›throw": true, + "features›async functions›no line break between async and function": true, + "features›async functions›no \"prototype\" property": true, + "features›async functions›await": true, + "features›async functions›await, rejection": true, + "features›async functions›must await a value": true, + "features›async functions›can await non-Promise values": true, + "features›async functions›cannot await in parameters": true, + "features›async functions›async methods, object literals": true, + "features›async functions›async methods, classes": true, + "features›async functions›async arrow functions in methods, classes": true, + "features›async functions›async arrow functions": true, + "features›async functions›correct prototype chain": true, + "features›async functions›async function prototype, Symbol.toStringTag": true, + "features›async functions›async function constructor": true, + "features›shared memory and atomics›SharedArrayBuffer": true, + "features›shared memory and atomics›SharedArrayBuffer[Symbol.species]": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.byteLength": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype.slice": true, + "features›shared memory and atomics›SharedArrayBuffer.prototype[Symbol.toStringTag]": true, + "features›shared memory and atomics›Atomics.add": true, + "features›shared memory and atomics›Atomics.and": true, + "features›shared memory and atomics›Atomics.compareExchange": true, + "features›shared memory and atomics›Atomics.exchange": true, + "features›shared memory and atomics›Atomics.wait": true, + "features›shared memory and atomics›Atomics.notify": true, + "features›shared memory and atomics›Atomics.isLockFree": true, + "features›shared memory and atomics›Atomics.load": true, + "features›shared memory and atomics›Atomics.or": true, + "features›shared memory and atomics›Atomics.store": true, + "features›shared memory and atomics›Atomics.sub": true, + "features›shared memory and atomics›Atomics.xor": true, + "misc›RegExp \"u\" flag, case folding": true, + "misc›arguments.caller removed": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__defineSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupGetter__, data properties can shadow accessors": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, prototype chain": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, symbols": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, ToObject(this)": true, + "annex b›Object.prototype getter/setter methods›__lookupSetter__, data properties can shadow accessors": true, + "annex b›Proxy internal calls, getter/setter methods›__defineGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__defineSetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupGetter__": true, + "annex b›Proxy internal calls, getter/setter methods›__lookupSetter__": true, + "annex b›assignments allowed in for-in head in non-strict mode": true + }, + "ES2016": { + "_successful": 14, + "_count": 14, + "_percent": 1, + "features›exponentiation (**) operator›basic support": true, + "features›exponentiation (**) operator›assignment": true, + "features›exponentiation (**) operator›early syntax error for unary negation without parens": true, + "features›Array.prototype.includes›Array.prototype.includes": true, + "features›Array.prototype.includes›Array.prototype.includes handles sparse arrays": true, + "features›Array.prototype.includes›Array.prototype.includes is generic": true, + "features›Array.prototype.includes›%TypedArray%.prototype.includes": true, + "misc›generator functions can't be used with \"new\"": true, + "misc›generator throw() caught by inner generator": true, + "misc›strict fn w/ non-strict non-simple params is error": true, + "misc›nested rest destructuring, declarations": true, + "misc›nested rest destructuring, parameters": true, + "misc›Proxy, \"enumerate\" handler removed": true, + "misc›Proxy internal calls, Array.prototype.includes": true + }, + "ES2015": { + "_successful": 692, + "_count": 697, + "_percent": 0.9928263988522238, + "optimisation›proper tail calls (tail call optimisation)›direct recursion": "Maximum call stack size exceeded", + "optimisation›proper tail calls (tail call optimisation)›mutual recursion": "Maximum call stack size exceeded", + "syntax›default function parameters›basic functionality": true, + "syntax›default function parameters›explicit undefined defers to the default": true, + "syntax›default function parameters›defaults can refer to previous params": true, + "syntax›default function parameters›arguments object interaction": true, + "syntax›default function parameters›temporal dead zone": true, + "syntax›default function parameters›separate scope": true, + "syntax›default function parameters›new Function() support": true, + "syntax›rest parameters›basic functionality": true, + "syntax›rest parameters›function 'length' property": true, + "syntax›rest parameters›arguments object interaction": true, + "syntax›rest parameters›can't be used in setters": true, + "syntax›rest parameters›new Function() support": true, + "syntax›spread syntax for iterable objects›with arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in function calls": true, + "syntax›spread syntax for iterable objects›with sparse arrays, in array literals": true, + "syntax›spread syntax for iterable objects›with strings, in function calls": true, + "syntax›spread syntax for iterable objects›with strings, in array literals": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in function calls": true, + "syntax›spread syntax for iterable objects›with astral plane strings, in array literals": true, + "syntax›spread syntax for iterable objects›with generator instances, in calls": true, + "syntax›spread syntax for iterable objects›with generator instances, in arrays": true, + "syntax›spread syntax for iterable objects›with generic iterables, in calls": true, + "syntax›spread syntax for iterable objects›with generic iterables, in arrays": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in calls": true, + "syntax›spread syntax for iterable objects›with instances of iterables, in arrays": true, + "syntax›spread syntax for iterable objects›spreading non-iterables is a runtime error": true, + "syntax›object literal extensions›computed properties": true, + "syntax›object literal extensions›shorthand properties": true, + "syntax›object literal extensions›shorthand methods": true, + "syntax›object literal extensions›string-keyed shorthand methods": true, + "syntax›object literal extensions›computed shorthand methods": true, + "syntax›object literal extensions›computed accessors": true, + "syntax›for..of loops›with arrays": true, + "syntax›for..of loops›with sparse arrays": true, + "syntax›for..of loops›with strings": true, + "syntax›for..of loops›with astral plane strings": true, + "syntax›for..of loops›with generator instances": true, + "syntax›for..of loops›with generic iterables": true, + "syntax›for..of loops›with instances of generic iterables": true, + "syntax›for..of loops›iterator closing, break": true, + "syntax›for..of loops›iterator closing, throw": true, + "syntax›octal and binary literals›octal literals": true, + "syntax›octal and binary literals›binary literals": true, + "syntax›octal and binary literals›octal supported by Number()": true, + "syntax›octal and binary literals›binary supported by Number()": true, + "syntax›template literals›basic functionality": true, + "syntax›template literals›toString conversion": true, + "syntax›template literals›tagged template literals": true, + "syntax›template literals›passed array is frozen": true, + "syntax›template literals›line break normalisation": true, + "syntax›template literals›TemplateStrings call site caching": true, + "syntax›template literals›TemplateStrings permanent caching": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"y\" flag, lastIndex": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, non-BMP Unicode characters": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, Unicode code point escapes": true, + "syntax›RegExp \"y\" and \"u\" flags›\"u\" flag, case folding": true, + "syntax›destructuring, declarations›with arrays": true, + "syntax›destructuring, declarations›with sparse arrays": true, + "syntax›destructuring, declarations›with strings": true, + "syntax›destructuring, declarations›with astral plane strings": true, + "syntax›destructuring, declarations›with generator instances": true, + "syntax›destructuring, declarations›with generic iterables": true, + "syntax›destructuring, declarations›with instances of generic iterables": true, + "syntax›destructuring, declarations›iterator closing": true, + "syntax›destructuring, declarations›trailing commas in iterable patterns": true, + "syntax›destructuring, declarations›with objects": true, + "syntax›destructuring, declarations›object destructuring with primitives": true, + "syntax›destructuring, declarations›trailing commas in object patterns": true, + "syntax›destructuring, declarations›throws on null and undefined": true, + "syntax›destructuring, declarations›computed properties": true, + "syntax›destructuring, declarations›multiples in a single var statement": true, + "syntax›destructuring, declarations›nested": true, + "syntax›destructuring, declarations›in for-in loop heads": true, + "syntax›destructuring, declarations›in for-of loop heads": true, + "syntax›destructuring, declarations›in catch heads": true, + "syntax›destructuring, declarations›rest": true, + "syntax›destructuring, declarations›defaults": true, + "syntax›destructuring, declarations›defaults, let temporal dead zone": true, + "syntax›destructuring, assignment›with arrays": true, + "syntax›destructuring, assignment›with sparse arrays": true, + "syntax›destructuring, assignment›with strings": true, + "syntax›destructuring, assignment›with astral plane strings": true, + "syntax›destructuring, assignment›with generator instances": true, + "syntax›destructuring, assignment›with generic iterables": true, + "syntax›destructuring, assignment›with instances of generic iterables": true, + "syntax›destructuring, assignment›iterator closing": true, + "syntax›destructuring, assignment›iterable destructuring expression": true, + "syntax›destructuring, assignment›chained iterable destructuring": true, + "syntax›destructuring, assignment›trailing commas in iterable patterns": true, + "syntax›destructuring, assignment›with objects": true, + "syntax›destructuring, assignment›object destructuring with primitives": true, + "syntax›destructuring, assignment›trailing commas in object patterns": true, + "syntax›destructuring, assignment›object destructuring expression": true, + "syntax›destructuring, assignment›parenthesised left-hand-side is a syntax error": true, + "syntax›destructuring, assignment›chained object destructuring": true, + "syntax›destructuring, assignment›throws on null and undefined": true, + "syntax›destructuring, assignment›computed properties": true, + "syntax›destructuring, assignment›nested": true, + "syntax›destructuring, assignment›rest": true, + "syntax›destructuring, assignment›nested rest": true, + "syntax›destructuring, assignment›empty patterns": true, + "syntax›destructuring, assignment›defaults": true, + "syntax›destructuring, parameters›with arrays": true, + "syntax›destructuring, parameters›with sparse arrays": true, + "syntax›destructuring, parameters›with strings": true, + "syntax›destructuring, parameters›with astral plane strings": true, + "syntax›destructuring, parameters›with generator instances": true, + "syntax›destructuring, parameters›with generic iterables": true, + "syntax›destructuring, parameters›with instances of generic iterables": true, + "syntax›destructuring, parameters›iterator closing": true, + "syntax›destructuring, parameters›trailing commas in iterable patterns": true, + "syntax›destructuring, parameters›with objects": true, + "syntax›destructuring, parameters›object destructuring with primitives": true, + "syntax›destructuring, parameters›trailing commas in object patterns": true, + "syntax›destructuring, parameters›throws on null and undefined": true, + "syntax›destructuring, parameters›computed properties": true, + "syntax›destructuring, parameters›nested": true, + "syntax›destructuring, parameters›'arguments' interaction": true, + "syntax›destructuring, parameters›new Function() support": true, + "syntax›destructuring, parameters›in parameters, function 'length' property": true, + "syntax›destructuring, parameters›rest": true, + "syntax›destructuring, parameters›empty patterns": true, + "syntax›destructuring, parameters›defaults": true, + "syntax›destructuring, parameters›defaults, separate scope": true, + "syntax›destructuring, parameters›defaults, new Function() support": true, + "syntax›destructuring, parameters›aliased defaults, arrow function": true, + "syntax›destructuring, parameters›shorthand defaults, arrow function": true, + "syntax›destructuring, parameters›duplicate identifier": true, + "syntax›Unicode code point escapes›in strings": true, + "syntax›Unicode code point escapes›in identifiers": true, + "syntax›Unicode code point escapes›in property key definitions": true, + "syntax›Unicode code point escapes›in property key accesses": true, + "syntax›new.target›in constructors": true, + "syntax›new.target›assignment is an early error": true, + "bindings›const›basic support": true, + "bindings›const›is block-scoped": true, + "bindings›const›scope shadow resolution": true, + "bindings›const›cannot be in statements": true, + "bindings›const›redefining a const is an error": true, + "bindings›const›for loop statement scope": true, + "bindings›const›for-in loop iteration scope": true, + "bindings›const›for-of loop iteration scope": true, + "bindings›const›temporal dead zone": true, + "bindings›const›basic support (strict mode)": true, + "bindings›const›is block-scoped (strict mode)": true, + "bindings›const›scope shadow resolution (strict mode)": true, + "bindings›const›cannot be in statements (strict mode)": true, + "bindings›const›redefining a const (strict mode)": true, + "bindings›const›for loop statement scope (strict mode)": true, + "bindings›const›for-in loop iteration scope (strict mode)": true, + "bindings›const›for-of loop iteration scope (strict mode)": true, + "bindings›const›temporal dead zone (strict mode)": true, + "bindings›let›basic support": true, + "bindings›let›is block-scoped": true, + "bindings›let›scope shadow resolution": true, + "bindings›let›cannot be in statements": true, + "bindings›let›for loop statement scope": true, + "bindings›let›temporal dead zone": true, + "bindings›let›for/for-in loop iteration scope": true, + "bindings›let›for-in loop binding shadowing parameter": true, + "bindings›let›basic support (strict mode)": true, + "bindings›let›is block-scoped (strict mode)": true, + "bindings›let›scope shadow resolution (strict mode)": true, + "bindings›let›cannot be in statements (strict mode)": true, + "bindings›let›for loop statement scope (strict mode)": true, + "bindings›let›temporal dead zone (strict mode)": true, + "bindings›let›for/for-in loop iteration scope (strict mode)": true, + "bindings›let›for-in loop binding shadowing parameter (strict mode)": true, + "bindings›block-level function declaration": true, + "functions›arrow functions›0 parameters": true, + "functions›arrow functions›1 parameter, no brackets": true, + "functions›arrow functions›multiple parameters": true, + "functions›arrow functions›lexical \"this\" binding": true, + "functions›arrow functions›\"this\" unchanged by call or apply": true, + "functions›arrow functions›can't be bound, can be curried": true, + "functions›arrow functions›lexical \"arguments\" binding": true, + "functions›arrow functions›no line break between params and =>": true, + "functions›arrow functions›correct precedence": true, + "functions›arrow functions›no \"prototype\" property": true, + "functions›arrow functions›lexical \"super\" binding in constructors": true, + "functions›arrow functions›lexical \"super\" binding in methods": true, + "functions›arrow functions›lexical \"new.target\" binding": true, + "functions›class›class statement": true, + "functions›class›is block-scoped": true, + "functions›class›class expression": true, + "functions›class›anonymous class": true, + "functions›class›constructor": true, + "functions›class›prototype methods": true, + "functions›class›string-keyed methods": true, + "functions›class›computed prototype methods": true, + "functions›class›optional semicolons": true, + "functions›class›static methods": true, + "functions›class›computed static methods": true, + "functions›class›accessor properties": true, + "functions›class›computed accessor properties": true, + "functions›class›static accessor properties": true, + "functions›class›computed static accessor properties": true, + "functions›class›class name is lexically scoped": true, + "functions›class›computed names, temporal dead zone": true, + "functions›class›methods aren't enumerable": true, + "functions›class›implicit strict mode": true, + "functions›class›constructor requires new": true, + "functions›class›extends": true, + "functions›class›extends expressions": true, + "functions›class›extends null": true, + "functions›class›new.target": true, + "functions›super›statement in constructors": true, + "functions›super›expression in constructors": true, + "functions›super›in methods, property access": true, + "functions›super›in methods, method calls": true, + "functions›super›method calls use correct \"this\" binding": true, + "functions›super›constructor calls use correct \"new.target\" binding": true, + "functions›super›is statically bound": true, + "functions›super›super() invokes the correct constructor": true, + "functions›generators›basic functionality": true, + "functions›generators›generator function expressions": true, + "functions›generators›correct \"this\" binding": true, + "functions›generators›can't use \"this\" with new": true, + "functions›generators›sending": true, + "functions›generators›%GeneratorPrototype%": true, + "functions›generators›%GeneratorPrototype% prototype chain": true, + "functions›generators›%GeneratorPrototype%.constructor": true, + "functions›generators›%GeneratorPrototype%.throw": true, + "functions›generators›%GeneratorPrototype%.return": true, + "functions›generators›yield operator precedence": true, + "functions›generators›yield *, arrays": true, + "functions›generators›yield *, sparse arrays": true, + "functions›generators›yield *, strings": true, + "functions›generators›yield *, astral plane strings": true, + "functions›generators›yield *, generator instances": true, + "functions›generators›yield *, generic iterables": true, + "functions›generators›yield *, instances of iterables": true, + "functions›generators›yield * on non-iterables is a runtime error": true, + "functions›generators›yield *, iterator closing": true, + "functions›generators›yield *, iterator closing via throw()": true, + "functions›generators›shorthand generator methods": true, + "functions›generators›string-keyed shorthand generator methods": true, + "functions›generators›computed shorthand generators": true, + "functions›generators›shorthand generator methods, classes": true, + "functions›generators›computed shorthand generators, classes": true, + "functions›generators›shorthand generators can't be constructors": true, + "built-ins›typed arrays›Int8Array": true, + "built-ins›typed arrays›Uint8Array": true, + "built-ins›typed arrays›Uint8ClampedArray": true, + "built-ins›typed arrays›Int16Array": true, + "built-ins›typed arrays›Uint16Array": true, + "built-ins›typed arrays›Int32Array": true, + "built-ins›typed arrays›Uint32Array": true, + "built-ins›typed arrays›Float32Array": true, + "built-ins›typed arrays›Float64Array": true, + "built-ins›typed arrays›DataView (Int8)": true, + "built-ins›typed arrays›DataView (Uint8)": true, + "built-ins›typed arrays›DataView (Int16)": true, + "built-ins›typed arrays›DataView (Uint16)": true, + "built-ins›typed arrays›DataView (Int32)": true, + "built-ins›typed arrays›DataView (Uint32)": true, + "built-ins›typed arrays›DataView (Float32)": true, + "built-ins›typed arrays›DataView (Float64)": true, + "built-ins›typed arrays›ArrayBuffer[Symbol.species]": true, + "built-ins›typed arrays›constructors require new": true, + "built-ins›typed arrays›constructors accept generic iterables": true, + "built-ins›typed arrays›correct prototype chains": true, + "built-ins›typed arrays›%TypedArray%.from": true, + "built-ins›typed arrays›%TypedArray%.of": true, + "built-ins›typed arrays›%TypedArray%.prototype.subarray": true, + "built-ins›typed arrays›%TypedArray%.prototype.join": true, + "built-ins›typed arrays›%TypedArray%.prototype.indexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.lastIndexOf": true, + "built-ins›typed arrays›%TypedArray%.prototype.slice": true, + "built-ins›typed arrays›%TypedArray%.prototype.every": true, + "built-ins›typed arrays›%TypedArray%.prototype.filter": true, + "built-ins›typed arrays›%TypedArray%.prototype.forEach": true, + "built-ins›typed arrays›%TypedArray%.prototype.map": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduce": true, + "built-ins›typed arrays›%TypedArray%.prototype.reduceRight": true, + "built-ins›typed arrays›%TypedArray%.prototype.reverse": true, + "built-ins›typed arrays›%TypedArray%.prototype.some": true, + "built-ins›typed arrays›%TypedArray%.prototype.sort": true, + "built-ins›typed arrays›%TypedArray%.prototype.copyWithin": true, + "built-ins›typed arrays›%TypedArray%.prototype.find": true, + "built-ins›typed arrays›%TypedArray%.prototype.findIndex": true, + "built-ins›typed arrays›%TypedArray%.prototype.fill": true, + "built-ins›typed arrays›%TypedArray%.prototype.keys": true, + "built-ins›typed arrays›%TypedArray%.prototype.values": true, + "built-ins›typed arrays›%TypedArray%.prototype.entries": true, + "built-ins›typed arrays›%TypedArray%.prototype[Symbol.iterator]": true, + "built-ins›typed arrays›%TypedArray%[Symbol.species]": true, + "built-ins›Map›basic functionality": true, + "built-ins›Map›constructor arguments": true, + "built-ins›Map›constructor requires new": true, + "built-ins›Map›constructor accepts null": true, + "built-ins›Map›constructor invokes set": true, + "built-ins›Map›iterator closing": true, + "built-ins›Map›Map.prototype.set returns this": true, + "built-ins›Map›-0 key converts to +0": true, + "built-ins›Map›Map.prototype.size": true, + "built-ins›Map›Map.prototype.delete": true, + "built-ins›Map›Map.prototype.clear": true, + "built-ins›Map›Map.prototype.forEach": true, + "built-ins›Map›Map.prototype.keys": true, + "built-ins›Map›Map.prototype.values": true, + "built-ins›Map›Map.prototype.entries": true, + "built-ins›Map›Map.prototype[Symbol.iterator]": true, + "built-ins›Map›Map.prototype isn't an instance": true, + "built-ins›Map›Map iterator prototype chain": true, + "built-ins›Map›Map[Symbol.species]": true, + "built-ins›Set›basic functionality": true, + "built-ins›Set›constructor arguments": true, + "built-ins›Set›constructor requires new": true, + "built-ins›Set›constructor accepts null": true, + "built-ins›Set›constructor invokes add": true, + "built-ins›Set›iterator closing": true, + "built-ins›Set›Set.prototype.add returns this": true, + "built-ins›Set›-0 key converts to +0": true, + "built-ins›Set›Set.prototype.size": true, + "built-ins›Set›Set.prototype.delete": true, + "built-ins›Set›Set.prototype.clear": true, + "built-ins›Set›Set.prototype.forEach": true, + "built-ins›Set›Set.prototype.keys": true, + "built-ins›Set›Set.prototype.values": true, + "built-ins›Set›Set.prototype.entries": true, + "built-ins›Set›Set.prototype[Symbol.iterator]": true, + "built-ins›Set›Set.prototype isn't an instance": true, + "built-ins›Set›Set iterator prototype chain": true, + "built-ins›Set›Set[Symbol.species]": true, + "built-ins›WeakMap›basic functionality": true, + "built-ins›WeakMap›constructor arguments": true, + "built-ins›WeakMap›constructor requires new": true, + "built-ins›WeakMap›constructor accepts null": true, + "built-ins›WeakMap›constructor invokes set": true, + "built-ins›WeakMap›frozen objects as keys": true, + "built-ins›WeakMap›iterator closing": true, + "built-ins›WeakMap›WeakMap.prototype.set returns this": true, + "built-ins›WeakMap›WeakMap.prototype.delete": true, + "built-ins›WeakMap›no WeakMap.prototype.clear method": true, + "built-ins›WeakMap›.has, .get and .delete methods accept primitives": true, + "built-ins›WeakMap›WeakMap.prototype isn't an instance": true, + "built-ins›WeakSet›basic functionality": true, + "built-ins›WeakSet›constructor arguments": true, + "built-ins›WeakSet›constructor requires new": true, + "built-ins›WeakSet›constructor accepts null": true, + "built-ins›WeakSet›constructor invokes add": true, + "built-ins›WeakSet›iterator closing": true, + "built-ins›WeakSet›WeakSet.prototype.add returns this": true, + "built-ins›WeakSet›WeakSet.prototype.delete": true, + "built-ins›WeakSet›no WeakSet.prototype.clear method": true, + "built-ins›WeakSet›.has and .delete methods accept primitives": true, + "built-ins›WeakSet›WeakSet.prototype isn't an instance": true, + "built-ins›Proxy›constructor requires new": true, + "built-ins›Proxy›no \"prototype\" property": true, + "built-ins›Proxy›\"get\" handler": true, + "built-ins›Proxy›\"get\" handler, instances of proxies": true, + "built-ins›Proxy›\"get\" handler invariants": true, + "built-ins›Proxy›\"set\" handler": true, + "built-ins›Proxy›\"set\" handler, instances of proxies": true, + "built-ins›Proxy›\"set\" handler invariants": true, + "built-ins›Proxy›\"has\" handler": true, + "built-ins›Proxy›\"has\" handler, instances of proxies": true, + "built-ins›Proxy›\"has\" handler invariants": true, + "built-ins›Proxy›\"deleteProperty\" handler": true, + "built-ins›Proxy›\"deleteProperty\" handler invariant": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler": true, + "built-ins›Proxy›\"getOwnPropertyDescriptor\" handler invariants": true, + "built-ins›Proxy›\"defineProperty\" handler": true, + "built-ins›Proxy›\"defineProperty\" handler invariants": true, + "built-ins›Proxy›\"getPrototypeOf\" handler": true, + "built-ins›Proxy›\"getPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"setPrototypeOf\" handler": true, + "built-ins›Proxy›\"setPrototypeOf\" handler invariant": true, + "built-ins›Proxy›\"isExtensible\" handler": true, + "built-ins›Proxy›\"isExtensible\" handler invariant": true, + "built-ins›Proxy›\"preventExtensions\" handler": true, + "built-ins›Proxy›\"preventExtensions\" handler invariant": true, + "built-ins›Proxy›\"ownKeys\" handler": true, + "built-ins›Proxy›\"ownKeys\" handler invariant": true, + "built-ins›Proxy›\"apply\" handler": true, + "built-ins›Proxy›\"apply\" handler invariant": true, + "built-ins›Proxy›\"construct\" handler": true, + "built-ins›Proxy›\"construct\" handler invariants": true, + "built-ins›Proxy›Proxy.revocable": true, + "built-ins›Proxy›Array.isArray support": true, + "built-ins›Proxy›JSON.stringify support": true, + "built-ins›Reflect›Reflect.get": true, + "built-ins›Reflect›Reflect.set": true, + "built-ins›Reflect›Reflect.has": true, + "built-ins›Reflect›Reflect.deleteProperty": true, + "built-ins›Reflect›Reflect.getOwnPropertyDescriptor": true, + "built-ins›Reflect›Reflect.defineProperty": true, + "built-ins›Reflect›Reflect.getPrototypeOf": true, + "built-ins›Reflect›Reflect.setPrototypeOf": true, + "built-ins›Reflect›Reflect.isExtensible": true, + "built-ins›Reflect›Reflect.preventExtensions": true, + "built-ins›Reflect›Reflect.ownKeys, string keys": true, + "built-ins›Reflect›Reflect.ownKeys, symbol keys": true, + "built-ins›Reflect›Reflect.apply": true, + "built-ins›Reflect›Reflect.construct": true, + "built-ins›Reflect›Reflect.construct sets new.target meta-property": true, + "built-ins›Reflect›Reflect.construct creates instances from third argument": true, + "built-ins›Reflect›Reflect.construct, Array subclassing": true, + "built-ins›Reflect›Reflect.construct, RegExp subclassing": true, + "built-ins›Reflect›Reflect.construct, Function subclassing": true, + "built-ins›Reflect›Reflect.construct, Promise subclassing": true, + "built-ins›Promise›basic functionality": true, + "built-ins›Promise›constructor requires new": true, + "built-ins›Promise›Promise.prototype isn't an instance": true, + "built-ins›Promise›Promise.all": true, + "built-ins›Promise›Promise.all, generic iterables": true, + "built-ins›Promise›Promise.race": true, + "built-ins›Promise›Promise.race, generic iterables": true, + "built-ins›Promise›Promise[Symbol.species]": true, + "built-ins›Symbol›basic functionality": true, + "built-ins›Symbol›typeof support": true, + "built-ins›Symbol›symbol keys are hidden to pre-ES6 code": true, + "built-ins›Symbol›Object.defineProperty support": true, + "built-ins›Symbol›symbols inherit from Symbol.prototype": true, + "built-ins›Symbol›cannot coerce to string or number": true, + "built-ins›Symbol›can convert with String()": true, + "built-ins›Symbol›new Symbol() throws": true, + "built-ins›Symbol›Object(symbol)": true, + "built-ins›Symbol›JSON.stringify ignores symbol primitives": true, + "built-ins›Symbol›JSON.stringify ignores symbol objects": true, + "built-ins›Symbol›global symbol registry": true, + "built-ins›well-known symbols›Symbol.hasInstance": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, non-spreadable array": true, + "built-ins›well-known symbols›Symbol.isConcatSpreadable, spreadable object with poisoned getter": false, + "built-ins›well-known symbols›Symbol.iterator, existence": true, + "built-ins›well-known symbols›Symbol.iterator, arguments object": true, + "built-ins›well-known symbols›Symbol.species, existence": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.concat": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.filter": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.map": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.slice": true, + "built-ins›well-known symbols›Symbol.species, Array.prototype.splice": true, + "built-ins›well-known symbols›Symbol.species, RegExp.prototype[Symbol.split]": true, + "built-ins›well-known symbols›Symbol.species, Promise.prototype.then": true, + "built-ins›well-known symbols›Symbol.replace": true, + "built-ins›well-known symbols›Symbol.search": true, + "built-ins›well-known symbols›Symbol.split": true, + "built-ins›well-known symbols›Symbol.match": true, + "built-ins›well-known symbols›Symbol.match, RegExp constructor": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.startsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.endsWith": true, + "built-ins›well-known symbols›Symbol.match, String.prototype.includes": true, + "built-ins›well-known symbols›Symbol.toPrimitive": true, + "built-ins›well-known symbols›Symbol.toStringTag": true, + "built-ins›well-known symbols›Symbol.toStringTag affects existing built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, new built-ins": true, + "built-ins›well-known symbols›Symbol.toStringTag, misc. built-ins": true, + "built-ins›well-known symbols›Symbol.unscopables": true, + "built-in extensions›Object static methods›Object.assign": true, + "built-in extensions›Object static methods›Object.is": true, + "built-in extensions›Object static methods›Object.getOwnPropertySymbols": true, + "built-in extensions›Object static methods›Object.setPrototypeOf": true, + "built-in extensions›function \"name\" property›function statements": true, + "built-in extensions›function \"name\" property›function expressions": true, + "built-in extensions›function \"name\" property›new Function": true, + "built-in extensions›function \"name\" property›bound functions": true, + "built-in extensions›function \"name\" property›variables (function)": true, + "built-in extensions›function \"name\" property›object methods (function)": true, + "built-in extensions›function \"name\" property›accessor properties": true, + "built-in extensions›function \"name\" property›shorthand methods": true, + "built-in extensions›function \"name\" property›shorthand methods (no lexical binding)": true, + "built-in extensions›function \"name\" property›symbol-keyed methods": true, + "built-in extensions›function \"name\" property›class statements": true, + "built-in extensions›function \"name\" property›class expressions": true, + "built-in extensions›function \"name\" property›variables (class)": true, + "built-in extensions›function \"name\" property›object methods (class)": true, + "built-in extensions›function \"name\" property›class prototype methods": true, + "built-in extensions›function \"name\" property›class static methods": true, + "built-in extensions›function \"name\" property›isn't writable, is configurable": true, + "built-in extensions›String static methods›String.raw": true, + "built-in extensions›String static methods›String.fromCodePoint": true, + "built-in extensions›String.prototype methods›String.prototype.codePointAt": true, + "built-in extensions›String.prototype methods›String.prototype.normalize": true, + "built-in extensions›String.prototype methods›String.prototype.repeat": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith": true, + "built-in extensions›String.prototype methods›String.prototype.startsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith": true, + "built-in extensions›String.prototype methods›String.prototype.endsWith throws on RegExp": true, + "built-in extensions›String.prototype methods›String.prototype.includes": true, + "built-in extensions›String.prototype methods›String.prototype[Symbol.iterator]": true, + "built-in extensions›String.prototype methods›String iterator prototype chain": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype.flags": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.match]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.replace]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.split]": true, + "built-in extensions›RegExp.prototype properties›RegExp.prototype[Symbol.search]": true, + "built-in extensions›RegExp.prototype properties›RegExp[Symbol.species]": true, + "built-in extensions›Array static methods›Array.from, array-like objects": true, + "built-in extensions›Array static methods›Array.from, generator instances": true, + "built-in extensions›Array static methods›Array.from, generic iterables": true, + "built-in extensions›Array static methods›Array.from, instances of generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, array-like objects": true, + "built-in extensions›Array static methods›Array.from map function, generator instances": true, + "built-in extensions›Array static methods›Array.from map function, generic iterables": true, + "built-in extensions›Array static methods›Array.from map function, instances of iterables": true, + "built-in extensions›Array static methods›Array.from, iterator closing": true, + "built-in extensions›Array static methods›Array.of": true, + "built-in extensions›Array static methods›Array[Symbol.species]": true, + "built-in extensions›Array.prototype methods›Array.prototype.copyWithin": true, + "built-in extensions›Array.prototype methods›Array.prototype.find": true, + "built-in extensions›Array.prototype methods›Array.prototype.findIndex": true, + "built-in extensions›Array.prototype methods›Array.prototype.fill": true, + "built-in extensions›Array.prototype methods›Array.prototype.keys": true, + "built-in extensions›Array.prototype methods›Array.prototype.values": true, + "built-in extensions›Array.prototype methods›Array.prototype.entries": true, + "built-in extensions›Array.prototype methods›Array.prototype.splice": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.iterator]": true, + "built-in extensions›Array.prototype methods›Array iterator prototype chain": true, + "built-in extensions›Array.prototype methods›Array.prototype[Symbol.unscopables]": true, + "built-in extensions›Number properties›Number.isFinite": true, + "built-in extensions›Number properties›Number.isInteger": true, + "built-in extensions›Number properties›Number.isSafeInteger": true, + "built-in extensions›Number properties›Number.isNaN": true, + "built-in extensions›Number properties›Number.parseFloat": true, + "built-in extensions›Number properties›Number.parseInt": true, + "built-in extensions›Number properties›Number.EPSILON": true, + "built-in extensions›Number properties›Number.MIN_SAFE_INTEGER": true, + "built-in extensions›Number properties›Number.MAX_SAFE_INTEGER": true, + "built-in extensions›Math methods›Math.clz32": true, + "built-in extensions›Math methods›Math.imul": true, + "built-in extensions›Math methods›Math.sign": true, + "built-in extensions›Math methods›Math.log10": true, + "built-in extensions›Math methods›Math.log2": true, + "built-in extensions›Math methods›Math.log1p": true, + "built-in extensions›Math methods›Math.expm1": true, + "built-in extensions›Math methods›Math.cosh": true, + "built-in extensions›Math methods›Math.sinh": true, + "built-in extensions›Math methods›Math.tanh": true, + "built-in extensions›Math methods›Math.acosh": true, + "built-in extensions›Math methods›Math.asinh": true, + "built-in extensions›Math methods›Math.atanh": true, + "built-in extensions›Math methods›Math.trunc": true, + "built-in extensions›Math methods›Math.fround": true, + "built-in extensions›Math methods›Math.cbrt": true, + "built-in extensions›Math methods›Math.hypot": true, + "built-in extensions›Date.prototype[Symbol.toPrimitive]": true, + "subclassing›Array is subclassable›length property (accessing)": true, + "subclassing›Array is subclassable›length property (setting)": true, + "subclassing›Array is subclassable›correct prototype chain": true, + "subclassing›Array is subclassable›Array.isArray support": true, + "subclassing›Array is subclassable›Array.prototype.concat": true, + "subclassing›Array is subclassable›Array.prototype.filter": true, + "subclassing›Array is subclassable›Array.prototype.map": true, + "subclassing›Array is subclassable›Array.prototype.slice": true, + "subclassing›Array is subclassable›Array.prototype.splice": true, + "subclassing›Array is subclassable›Array.from": true, + "subclassing›Array is subclassable›Array.of": true, + "subclassing›RegExp is subclassable›basic functionality": true, + "subclassing›RegExp is subclassable›correct prototype chain": true, + "subclassing›RegExp is subclassable›RegExp.prototype.exec": true, + "subclassing›RegExp is subclassable›RegExp.prototype.test": true, + "subclassing›Function is subclassable›can be called": true, + "subclassing›Function is subclassable›correct prototype chain": true, + "subclassing›Function is subclassable›can be used with \"new\"": true, + "subclassing›Function is subclassable›Function.prototype.call": true, + "subclassing›Function is subclassable›Function.prototype.apply": true, + "subclassing›Function is subclassable›Function.prototype.bind": true, + "subclassing›Promise is subclassable›basic functionality": true, + "subclassing›Promise is subclassable›correct prototype chain": true, + "subclassing›Promise is subclassable›Promise.all": true, + "subclassing›Promise is subclassable›Promise.race": true, + "subclassing›miscellaneous subclassables›Boolean is subclassable": true, + "subclassing›miscellaneous subclassables›Number is subclassable": true, + "subclassing›miscellaneous subclassables›String is subclassable": true, + "subclassing›miscellaneous subclassables›Error is subclassable": true, + "subclassing›miscellaneous subclassables›Map is subclassable": true, + "subclassing›miscellaneous subclassables›Set is subclassable": true, + "misc›prototype of bound functions›basic functions": true, + "misc›prototype of bound functions›generator functions": true, + "misc›prototype of bound functions›arrow functions": true, + "misc›prototype of bound functions›classes": true, + "misc›prototype of bound functions›subclasses": true, + "misc›Proxy, internal 'get' calls›ToPrimitive": true, + "misc›Proxy, internal 'get' calls›CreateListFromArrayLike": true, + "misc›Proxy, internal 'get' calls›instanceof operator": true, + "misc›Proxy, internal 'get' calls›HasBinding": true, + "misc›Proxy, internal 'get' calls›CreateDynamicFunction": true, + "misc›Proxy, internal 'get' calls›ClassDefinitionEvaluation": true, + "misc›Proxy, internal 'get' calls›IteratorComplete, IteratorValue": true, + "misc›Proxy, internal 'get' calls›ToPropertyDescriptor": true, + "misc›Proxy, internal 'get' calls›Object.assign": true, + "misc›Proxy, internal 'get' calls›Object.defineProperties": true, + "misc›Proxy, internal 'get' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'get' calls›Error.prototype.toString": true, + "misc›Proxy, internal 'get' calls›String.raw": true, + "misc›Proxy, internal 'get' calls›RegExp constructor": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.flags": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype.test": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype.toString": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.match]": false, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.replace]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.search]": true, + "misc›Proxy, internal 'get' calls›RegExp.prototype[Symbol.split]": true, + "misc›Proxy, internal 'get' calls›Array.from": true, + "misc›Proxy, internal 'get' calls›Array.prototype.concat": true, + "misc›Proxy, internal 'get' calls›Array.prototype iteration methods": true, + "misc›Proxy, internal 'get' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'get' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'get' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'get' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'get' calls›Array.prototype.toString": true, + "misc›Proxy, internal 'get' calls›JSON.stringify": true, + "misc›Proxy, internal 'get' calls›Promise resolve functions": true, + "misc›Proxy, internal 'get' calls›String.prototype.match": true, + "misc›Proxy, internal 'get' calls›String.prototype.replace": true, + "misc›Proxy, internal 'get' calls›String.prototype.search": true, + "misc›Proxy, internal 'get' calls›String.prototype.split": true, + "misc›Proxy, internal 'get' calls›Date.prototype.toJSON": true, + "misc›Proxy, internal 'set' calls›Object.assign": true, + "misc›Proxy, internal 'set' calls›Array.from": true, + "misc›Proxy, internal 'set' calls›Array.of": true, + "misc›Proxy, internal 'set' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'set' calls›Array.prototype.fill": true, + "misc›Proxy, internal 'set' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'set' calls›Array.prototype.push": true, + "misc›Proxy, internal 'set' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'set' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'set' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'set' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'defineProperty' calls›[[Set]]": true, + "misc›Proxy, internal 'defineProperty' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.copyWithin": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.pop": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.reverse": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.shift": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.splice": true, + "misc›Proxy, internal 'deleteProperty' calls›Array.prototype.unshift": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›[[Set]]": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.assign": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Object.prototype.hasOwnProperty": true, + "misc›Proxy, internal 'getOwnPropertyDescriptor' calls›Function.prototype.bind": true, + "misc›Proxy, internal 'ownKeys' calls›SetIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›TestIntegrityLevel": true, + "misc›Proxy, internal 'ownKeys' calls›SerializeJSONObject": true, + "misc›Object static methods accept primitives›Object.getPrototypeOf": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyDescriptor": true, + "misc›Object static methods accept primitives›Object.getOwnPropertyNames": true, + "misc›Object static methods accept primitives›Object.seal": true, + "misc›Object static methods accept primitives›Object.freeze": true, + "misc›Object static methods accept primitives›Object.preventExtensions": true, + "misc›Object static methods accept primitives›Object.isSealed": true, + "misc›Object static methods accept primitives›Object.isFrozen": true, + "misc›Object static methods accept primitives›Object.isExtensible": true, + "misc›Object static methods accept primitives›Object.keys": true, + "misc›own property order›Object.keys": true, + "misc›own property order›Object.getOwnPropertyNames": true, + "misc›own property order›Object.assign": true, + "misc›own property order›JSON.stringify": true, + "misc›own property order›JSON.parse": true, + "misc›own property order›Reflect.ownKeys, string key order": true, + "misc›own property order›Reflect.ownKeys, symbol key order": true, + "misc›Updated identifier syntax›var ⸯ;": true, + "misc›Updated identifier syntax›var 𐋀;": true, + "misc›Updated identifier syntax›no escaped reserved words as identifiers": true, + "misc›miscellaneous›duplicate property names in strict mode": true, + "misc›miscellaneous›no semicolon needed after do-while": true, + "misc›miscellaneous›no assignments allowed in for-in head in strict mode": true, + "misc›miscellaneous›accessors aren't constructors": true, + "misc›miscellaneous›Invalid Date": true, + "misc›miscellaneous›RegExp constructor can alter flags": true, + "misc›miscellaneous›RegExp.prototype.toString generic and uses \"flags\" property": true, + "misc›miscellaneous›built-in prototypes are not instances": true, + "misc›miscellaneous›function 'length' is configurable": true, + "annex b›non-strict function semantics›hoisted block-level function declaration": true, + "annex b›non-strict function semantics›labeled function statements": true, + "annex b›non-strict function semantics›function statements in if-statement clauses": true, + "annex b›__proto__ in object literals›basic support": true, + "annex b›__proto__ in object literals›multiple __proto__ is an error": true, + "annex b›__proto__ in object literals›not a computed property": true, + "annex b›__proto__ in object literals›not a shorthand property": true, + "annex b›__proto__ in object literals›not a shorthand method": true, + "annex b›Object.prototype.__proto__›get prototype": true, + "annex b›Object.prototype.__proto__›set prototype": true, + "annex b›Object.prototype.__proto__›absent from Object.create(null)": true, + "annex b›Object.prototype.__proto__›present in hasOwnProperty()": true, + "annex b›Object.prototype.__proto__›correct property descriptor": true, + "annex b›Object.prototype.__proto__›present in Object.getOwnPropertyNames()": true, + "annex b›String.prototype HTML methods›existence": true, + "annex b›String.prototype HTML methods›tags' names are lowercase": true, + "annex b›String.prototype HTML methods›quotes in arguments are escaped": true, + "annex b›RegExp.prototype.compile›basic functionality": true, + "annex b›RegExp.prototype.compile›returns this": true, + "annex b›RegExp syntax extensions›hyphens in character sets": true, + "annex b›RegExp syntax extensions›invalid character escapes": true, + "annex b›RegExp syntax extensions›invalid control-character escapes": true, + "annex b›RegExp syntax extensions›invalid Unicode escapes": true, + "annex b›RegExp syntax extensions›invalid hexadecimal escapes": true, + "annex b›RegExp syntax extensions›incomplete patterns and quantifiers": true, + "annex b›RegExp syntax extensions›octal escape sequences": true, + "annex b›RegExp syntax extensions›invalid backreferences become octal escapes": true, + "annex b›HTML-style comments": true + } +} \ No newline at end of file diff --git a/results/v8/nightly--harmony.json b/results/v8/nightly--harmony.json index f7f7a4722..702d99071 100644 --- a/results/v8/nightly--harmony.json +++ b/results/v8/nightly--harmony.json @@ -1,5 +1,5 @@ { - "_version": "24.0.0-nightly20241120f4cd4d9749--harmony", + "_version": "24.0.0-nightly202411215ba3b540d4--harmony", "_engine": "v8 12.9.202.28-node.11", "ESNEXT": { "_successful": 2, diff --git a/results/v8/nightly.json b/results/v8/nightly.json index 4428fd644..9d5a95b67 100644 --- a/results/v8/nightly.json +++ b/results/v8/nightly.json @@ -1,5 +1,5 @@ { - "_version": "24.0.0-nightly20241120f4cd4d9749", + "_version": "24.0.0-nightly202411215ba3b540d4", "_engine": "v8 12.9.202.28-node.11", "ESNEXT": { "_successful": 2, diff --git a/v8.versions b/v8.versions index 34dfe4508..5c0d331cd 100644 --- a/v8.versions +++ b/v8.versions @@ -1,3 +1,4 @@ +v23.3.0 v23.2.0 v23.1.0 v23.0.0 @@ -28,6 +29,7 @@ v21.3.0 v21.2.0 v21.1.0 v21.0.0 +v20.18.1 v20.18.0 v20.17.0 v20.16.0