diff --git a/src/dstr-assignment/array-elem-init-fn-name-class.case b/src/dstr-assignment/array-elem-init-fn-name-class.case
index 91be890976b6c2b51d49e39e6c2e1433de85ec53..3317c8c0bc1276d091b4ce64865ecbdea1992ae9 100644
--- a/src/dstr-assignment/array-elem-init-fn-name-class.case
+++ b/src/dstr-assignment/array-elem-init-fn-name-class.case
@@ -21,13 +21,14 @@ features: [class]
 ---*/
 
 //- setup
-var xCls, cls;
+var xCls, cls, xCls2;
 //- elems
-[ xCls = class x {},cls = class {} ]
+[ xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } ]
 //- vals
 []
 //- body
 assert(xCls.name !== 'xCls');
+assert(xCls2.name !== 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/src/dstr-assignment/obj-id-init-fn-name-class.case b/src/dstr-assignment/obj-id-init-fn-name-class.case
index 69598a67548a97b7e32cc8385684dd0397a76c11..f76aa2ee133c3532202cb643c3d51d850b571d0b 100644
--- a/src/dstr-assignment/obj-id-init-fn-name-class.case
+++ b/src/dstr-assignment/obj-id-init-fn-name-class.case
@@ -20,13 +20,14 @@ features: [class]
 ---*/
 
 //- setup
-var xCls, cls;
+var xCls, cls, xCls2;
 //- elems
-{ xCls = class x {}, cls = class {} }
+{ xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } }
 //- vals
 {}
 //- body
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/src/dstr-assignment/obj-prop-elem-init-fn-name-class.case b/src/dstr-assignment/obj-prop-elem-init-fn-name-class.case
index 5652358615f105006493c757a0a64d5b2f22895f..86f60afc0caf377801f5cdb5f837fb9a4b27b7e4 100644
--- a/src/dstr-assignment/obj-prop-elem-init-fn-name-class.case
+++ b/src/dstr-assignment/obj-prop-elem-init-fn-name-class.case
@@ -21,13 +21,14 @@ features: [class]
 ---*/
 
 //- setup
-var xCls, cls;
+var xCls, cls, xCls2;
 //- elems
-{ x: xCls = class x {}, x: cls = class {} }
+{ x: xCls = class x {}, x: cls = class {}, x: xCls2 = class { static name() {} } }
 //- vals
 {}
 //- body
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case b/src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
index 5ac70816602377279c609439379e817530f65471..fd129368d4aee220126dce95ba487f60c14c10ea 100644
--- a/src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
+++ b/src/dstr-binding/ary-ptrn-elem-id-init-fn-name-class.case
@@ -20,9 +20,10 @@ info: |
 ---*/
 
 //- elems
-[cls = class {}, xCls = class X {}]
+[cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]
 //- vals
 []
 //- body
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/src/dstr-binding/obj-ptrn-id-init-fn-name-class.case b/src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
index f74c1e7da71e29e0d9ab6d2912ad3b12d006efa4..2b5a385dda12ad2f27c8726df9be2fb095ac29f2 100644
--- a/src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
+++ b/src/dstr-binding/obj-ptrn-id-init-fn-name-class.case
@@ -19,9 +19,10 @@ info: |
 ---*/
 
 //- elems
-{ cls = class {}, xCls = class X {} }
+{ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }
 //- vals
 {}
 //- body
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/test/language/expressions/arrow-function/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/arrow-function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index 89ce65095c165d0ce4c5f40a5f57f2b3e805a15e..e5e5add180242b36fa43b872363f02053833812e 100644
--- a/test/language/expressions/arrow-function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/arrow-function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = ([cls = class {}, xCls = class X {}]) => {
+f = ([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) => {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index a46881b92c78ef756028e82515784c79e7c1be9f..6f06cf6eaf55bb098d5f6a62bccf1396ef0b4d65 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = ([cls = class {}, xCls = class X {}] = []) => {
+f = ([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) => {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
index af4e0a53e057a93b85ebd00f1f757893d5fcde33..3996cd0b8078522e27c6e8fd9f4fc83dfb56cb27 100644
--- a/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/arrow-function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = ({ cls = class {}, xCls = class X {} } = {}) => {
+f = ({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) => {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-class.js
index b1f9de1cce8c526c48b6e6681f1963c63844f4c9..8a9ba5f9d82baadedd0641b83783fc8d704b1bc2 100644
--- a/test/language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/arrow-function/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = ({ cls = class {}, xCls = class X {} }) => {
+f = ({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) => {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/assignment/dstr-array-elem-init-fn-name-class.js b/test/language/expressions/assignment/dstr-array-elem-init-fn-name-class.js
index 20c1ce8e82336955802ceb81ddfa12d31a372fb6..5fd497ba43b0440c14c528fdc02dc3e427f974e1 100644
--- a/test/language/expressions/assignment/dstr-array-elem-init-fn-name-class.js
+++ b/test/language/expressions/assignment/dstr-array-elem-init-fn-name-class.js
@@ -27,14 +27,15 @@ info: |
           GetReferencedName(lref)).
 
 ---*/
-var xCls, cls;
+var xCls, cls, xCls2;
 
 var result;
 var vals = [];
 
-result = [ xCls = class x {},cls = class {} ] = vals;
+result = [ xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } ] = vals;
 
 assert(xCls.name !== 'xCls');
+assert(xCls2.name !== 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/test/language/expressions/assignment/dstr-obj-id-init-fn-name-class.js b/test/language/expressions/assignment/dstr-obj-id-init-fn-name-class.js
index 6ea372c0ea9856067a06a6aca1e30e4cf4ee5c1e..bdefcab831fb231799461f847d7f130659ec749f 100644
--- a/test/language/expressions/assignment/dstr-obj-id-init-fn-name-class.js
+++ b/test/language/expressions/assignment/dstr-obj-id-init-fn-name-class.js
@@ -26,14 +26,15 @@ info: |
           iii. If hasNameProperty is false, perform SetFunctionName(v, P).
 
 ---*/
-var xCls, cls;
+var xCls, cls, xCls2;
 
 var result;
 var vals = {};
 
-result = { xCls = class x {}, cls = class {} } = vals;
+result = { xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } } = vals;
 
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/test/language/expressions/assignment/dstr-obj-prop-elem-init-fn-name-class.js b/test/language/expressions/assignment/dstr-obj-prop-elem-init-fn-name-class.js
index 807d410c5f65b03a97ca8b1b966388232417d827..782b5f6d0795ed3f19418c1ea954fb9a58bacab5 100644
--- a/test/language/expressions/assignment/dstr-obj-prop-elem-init-fn-name-class.js
+++ b/test/language/expressions/assignment/dstr-obj-prop-elem-init-fn-name-class.js
@@ -27,14 +27,15 @@ info: |
           GetReferencedName(lref)).
 
 ---*/
-var xCls, cls;
+var xCls, cls, xCls2;
 
 var result;
 var vals = {};
 
-result = { x: xCls = class x {}, x: cls = class {} } = vals;
+result = { x: xCls = class x {}, x: cls = class {}, x: xCls2 = class { static name() {} } } = vals;
 
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/test/language/expressions/assignment/fn-name-class.js b/test/language/expressions/assignment/fn-name-class.js
index 5295daf260f4294ffe49b66055825089a15983af..2f2d75d8be02d34dcfcedb70a27e678b77d05d53 100644
--- a/test/language/expressions/assignment/fn-name-class.js
+++ b/test/language/expressions/assignment/fn-name-class.js
@@ -22,12 +22,14 @@ includes: [propertyHelper.js]
 features: [class]
 ---*/
 
-var xCls, cls;
+var xCls, cls, xCls2;
 
 xCls = class x {};
 cls = class {};
+xCls2 = class { static name() {} };
 
-assert(xCls.name !== 'xCls');
+assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
index dab8758c428887899ea937ba213a36caa224f3ba..500e3c7963883f6854034fa400855d31de231fe4 100644
--- a/test/language/expressions/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
@@ -78,9 +78,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  *method([cls = class {}, xCls = class X {}]) {
+  *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index a56a220167202d668900caef7d0b0599721416b2..838b019f20f94868b85fe4aecaf08524b3b1f2c6 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -78,9 +78,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  *method([cls = class {}, xCls = class X {}] = []) {
+  *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
index c7a2a2d4d241907911e516a2628246a807988816..806d9930ae48988bd1920bd3d2d02c010d135f23 100644
--- a/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -77,9 +77,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  *method({ cls = class {}, xCls = class X {} } = {}) {
+  *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
index 59e651c44abbd11b0f316bd7eb53d4467dc22bff..a74ba692e28741d0dfbdc8812e0f8b95a1fcfc14 100644
--- a/test/language/expressions/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
@@ -77,9 +77,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  *method({ cls = class {}, xCls = class X {} }) {
+  *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
index 79eda26772b2acfef90ab1d30ff0bbfd6f244344..0a8184b700eb07e73511d0d80fbacb1d502762f4 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
@@ -78,9 +78,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static *method([cls = class {}, xCls = class X {}]) {
+  static *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index c3b75da5fcbf172e7466ff69560d244499b644e8..1b522f4e6a019f822cbcd695cbeb83eb44c32b53 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -78,9 +78,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static *method([cls = class {}, xCls = class X {}] = []) {
+  static *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
index 6f343be628984a154fe1152913a83d9047b80743..baee588463233a2bd4c5c2fda374a389154eab1a 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -77,9 +77,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static *method({ cls = class {}, xCls = class X {} } = {}) {
+  static *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js
index 1ceb5c796f76742e4607d6e37ce6822d9055e9a4..a3df1394f29bc7b7c4d5811a32eaf47b1939fe71 100644
--- a/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js
@@ -77,9 +77,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static *method({ cls = class {}, xCls = class X {} }) {
+  static *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
index ff41715850404e898e32dd645b578b3f9f96df9a..d1a3f8ba05f9962610c4214da71928d618e0482e 100644
--- a/test/language/expressions/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  method([cls = class {}, xCls = class X {}]) {
+  method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index e04cea08d0be33db62130d0a8c86da18116cf072..32adbaefd0dc01fcf98d1fb4306527f20159c9af 100644
--- a/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  method([cls = class {}, xCls = class X {}] = []) {
+  method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
index ba1e077fb537944dd2256e069073d036e2f6d474..397849629964374e8edb436a837998eae3828a3b 100644
--- a/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  method({ cls = class {}, xCls = class X {} } = {}) {
+  method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js
index ff41447995604b622fd384c440e84f0eebe90d08..846d97837c9fa4ecadffa7efea66234e66587b48 100644
--- a/test/language/expressions/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  method({ cls = class {}, xCls = class X {} }) {
+  method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
index c8015087ebf1a381b99b025db960f4d2ab5b3f85..30b5f9b0019fe23150b693ca74686a3fe25436f5 100644
--- a/test/language/expressions/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static method([cls = class {}, xCls = class X {}]) {
+  static method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index a0288aa2fe842289bf5d176dd7937e4036e042bc..d73e9216fe206a5f965a76aedcb45de148c36cda 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static method([cls = class {}, xCls = class X {}] = []) {
+  static method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
index fb2f137356a903bef4e2c1037e43c36f8469c143..ca910910aa5f8bb1497d2bb19d2bd9d812ba263e 100644
--- a/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static method({ cls = class {}, xCls = class X {} } = {}) {
+  static method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js
index 3ecb8f44418a6f42cf93fe423077f70011e5fdb1..acd70949626e1783ec3dfd6399c3057604216f80 100644
--- a/test/language/expressions/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 var C = class {
-  static method({ cls = class {}, xCls = class X {} }) {
+  static method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index 306517b68e9f3edaf6145a6a3d5c8770b0bcde19..e3c5663c92d066e25a09ec029e3141d3ba4ebc10 100644
--- a/test/language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -55,9 +55,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function([cls = class {}, xCls = class X {}]) {
+f = function([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 3cbe731bb0e6f51b23c5ec4f091eb233e091f762..d206ccd842ff6335c398ff5b7e24a68ac7696ebb 100644
--- a/test/language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -55,9 +55,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function([cls = class {}, xCls = class X {}] = []) {
+f = function([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
index 80638d75e7a0d5a7cba44ac60e6ba334eaadcc53..25c565de70fd06b4fcff4011fc404f6a6c0111b3 100644
--- a/test/language/expressions/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function({ cls = class {}, xCls = class X {} } = {}) {
+f = function({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/function/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/function/dstr-obj-ptrn-id-init-fn-name-class.js
index cc57e2481088a058887b298aadffd2c1ff25eb6c..8fd09ffe8167cc9a967f607cc31f27b53994a9f7 100644
--- a/test/language/expressions/function/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/function/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function({ cls = class {}, xCls = class X {} }) {
+f = function({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index 47b0c4eb23817732551abf3d24eb8723bf98ce06..7332f6399c11d1e43acf333fa20bc1d17765aa3c 100644
--- a/test/language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -55,9 +55,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function*([cls = class {}, xCls = class X {}]) {
+f = function*([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 2e1f87ddb45266358ca9de804a59fd69b8901ea6..7d57071a4f8a219c96f5befdf7f53de9c37b2762 100644
--- a/test/language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -55,9 +55,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function*([cls = class {}, xCls = class X {}] = []) {
+f = function*([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
index ede0ce051eefd6a49514d482e90c6f191fbbbe49..11b936dbe2dcb47513edb08831beea4ad90fa4ab 100644
--- a/test/language/expressions/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function*({ cls = class {}, xCls = class X {} } = {}) {
+f = function*({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/generators/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/generators/dstr-obj-ptrn-id-init-fn-name-class.js
index 7d4409663497d0b2770332e5065504c64375fdb6..2d5584bd98229dbc64e47c6b380640e97ddc6921 100644
--- a/test/language/expressions/generators/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/generators/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 
 var callCount = 0;
 var f;
-f = function*({ cls = class {}, xCls = class X {} }) {
+f = function*({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 
diff --git a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
index 20a04f10bc4cb3a9996ec76bc5b986274fa49bce..f05979ad699befe80fcf2c23d57795e54f52440b 100644
--- a/test/language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
@@ -60,9 +60,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  *method([cls = class {}, xCls = class X {}]) {
+  *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 7852dc8156842ce2ef404849f00147c350366843..ff27e5afb231215fc9099f103ea9617d236097b1 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -60,9 +60,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  *method([cls = class {}, xCls = class X {}] = []) {
+  *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
index 1f2cb2aa251528ca4fddd00da09e46ecbfda39d7..652c38bc2c02fb85c54ee49195471fdafdab83e5 100644
--- a/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -59,9 +59,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  *method({ cls = class {}, xCls = class X {} } = {}) {
+  *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
index e88add4a75d223dc13d535e1f0a08584c3c6f8c0..b5c8c2029ad7e89ac51fa80f28dcac1c2df2f744 100644
--- a/test/language/expressions/object/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
@@ -59,9 +59,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  *method({ cls = class {}, xCls = class X {} }) {
+  *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
index a4b56e481a2dbd2d5c7273ef20e38ec6ce8bb00e..69427266a0e0ec7462c692e4b7c76ff375e472b4 100644
--- a/test/language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
@@ -57,9 +57,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  method([cls = class {}, xCls = class X {}]) {
+  method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 2dc08025069033b8324fc2b3e0a4f5596149a54d..c8125bd49cac91780adff75d89c8b1494cf4fef1 100644
--- a/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -57,9 +57,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  method([cls = class {}, xCls = class X {}] = []) {
+  method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
index 6ea88503349b1ed4c0aabcb0cfc5e4e50a8a036f..f5f59250a114bcb220d2cb5739cbe7e87e68eef7 100644
--- a/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -56,9 +56,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  method({ cls = class {}, xCls = class X {} } = {}) {
+  method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/expressions/object/dstr-meth-obj-ptrn-id-init-fn-name-class.js b/test/language/expressions/object/dstr-meth-obj-ptrn-id-init-fn-name-class.js
index 8dac1d7ba75cc2c113c260f8d42406e638a276f6..696468ccd084e0ab678186419299aa405eb70c9d 100644
--- a/test/language/expressions/object/dstr-meth-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/expressions/object/dstr-meth-obj-ptrn-id-init-fn-name-class.js
@@ -56,9 +56,10 @@ info: |
 
 var callCount = 0;
 var obj = {
-  method({ cls = class {}, xCls = class X {} }) {
+  method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
index 9ae56ce7eb3b0e8fd2da4cf844e7718b41f117de..f102d732333665d959f1c593967f292566996284 100644
--- a/test/language/statements/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-ary-ptrn-elem-id-init-fn-name-class.js
@@ -76,9 +76,10 @@ info: |
 
 var callCount = 0;
 class C {
-  *method([cls = class {}, xCls = class X {}]) {
+  *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 3d993f32f37312361326232f3793b84d6bd0363f..ac8350c1b08f7efd4217a06ef9dcdc1d32262e80 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -76,9 +76,10 @@ info: |
 
 var callCount = 0;
 class C {
-  *method([cls = class {}, xCls = class X {}] = []) {
+  *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
index 46aa7918faa708dce64f4293e945a66d5bbd3717..89927b3bfe79a323e9ddd3224f182a2aee48512a 100644
--- a/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 class C {
-  *method({ cls = class {}, xCls = class X {} } = {}) {
+  *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
index d867df5e4ce240b3844ebc2bc96adc75d38a1185..c886715c94dbf27b4b87fcbea5ee1cc8c6a5e373 100644
--- a/test/language/statements/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-obj-ptrn-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 class C {
-  *method({ cls = class {}, xCls = class X {} }) {
+  *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
index 975d7fb241db019c97b93a9f6f7bbde272be9218..dd83168adb4bab04572be0dfb4b228bfad294bb1 100644
--- a/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
@@ -76,9 +76,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static *method([cls = class {}, xCls = class X {}]) {
+  static *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 05d8fa2bf43876b6f36c4b56f72be9e90ef9ee6e..937a9e9d5d71e47fbe53a20c24e020642d4b1eda 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -76,9 +76,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static *method([cls = class {}, xCls = class X {}] = []) {
+  static *method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
index 4c93913819bb55f6d9728862c736d6215f759b4f..e5fbae54c0570cbc2166375f22905d592955c9d0 100644
--- a/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static *method({ cls = class {}, xCls = class X {} } = {}) {
+  static *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js
index b3596af778bf39afff9cd7a0b902c36f42f1641b..e9686d114c8256f97b67fb2371cbacf364a696f8 100644
--- a/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-gen-meth-static-obj-ptrn-id-init-fn-name-class.js
@@ -75,9 +75,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static *method({ cls = class {}, xCls = class X {} }) {
+  static *method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
index d9387f6ccfcd2428ed33b5f276441844e053e3a1..eb5f6a7707dc124716935ee9a5be22ed17dfc85a 100644
--- a/test/language/statements/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-ary-ptrn-elem-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 class C {
-  method([cls = class {}, xCls = class X {}]) {
+  method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 4979f5020db28aac071eec8a929461986275428e..4659dfa771c6edb19f3d0580736fee9aaad5dc04 100644
--- a/test/language/statements/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 class C {
-  method([cls = class {}, xCls = class X {}] = []) {
+  method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
index a2b56f5abe23057ca851a0b7485c082abae97dd3..6126c88779c4b38fd37c934dd17036b5a631d1d8 100644
--- a/test/language/statements/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -73,9 +73,10 @@ info: |
 
 var callCount = 0;
 class C {
-  method({ cls = class {}, xCls = class X {} } = {}) {
+  method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js
index a6abcc4f97390326559d471b42d85e881ce605bd..b10710e8e6f3df6b72b5963baea8d7a4401e1a05 100644
--- a/test/language/statements/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-obj-ptrn-id-init-fn-name-class.js
@@ -73,9 +73,10 @@ info: |
 
 var callCount = 0;
 class C {
-  method({ cls = class {}, xCls = class X {} }) {
+  method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
index ca8b61e55cd8741e9ff5a9c4697aaa49db653f28..5993c7112877595fa4ca2f4851940e6ded986e12 100644
--- a/test/language/statements/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-static-ary-ptrn-elem-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static method([cls = class {}, xCls = class X {}]) {
+  static method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 922e3042fec0ded06fa36b59005980db4f542a81..c0b0bb232b86c8ecfef8a1c1cce23c40a5bbb745 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -74,9 +74,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static method([cls = class {}, xCls = class X {}] = []) {
+  static method([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
index 4a7a08b579c9220a470c4d693bba545aa28a08fa..b8034412300c504cc42236d9ba0a75ee7b32e1c0 100644
--- a/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-static-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -73,9 +73,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static method({ cls = class {}, xCls = class X {} } = {}) {
+  static method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js
index 26ae6f87cfd54239dfd4886fe7a44aca60efdeb8..003ed11c3fa39f1d5ad0499944c86a985e27e00f 100644
--- a/test/language/statements/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/class/dstr-meth-static-obj-ptrn-id-init-fn-name-class.js
@@ -73,9 +73,10 @@ info: |
 
 var callCount = 0;
 class C {
-  static method({ cls = class {}, xCls = class X {} }) {
+  static method({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
     assert.sameValue(cls.name, 'cls');
     assert.notSameValue(xCls.name, 'xCls');
+    assert.notSameValue(xCls2.name, 'xCls2');
     callCount = callCount + 1;
   }
 };
diff --git a/test/language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index 21aca7b2227b36a5414dbd8ee69e6faa8ffbb96e..e63c2ac2412f9ef4eaad84a9d312cc1fc68b1b5d 100644
--- a/test/language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/const/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -32,7 +32,8 @@ info: |
     8. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
-const [cls = class {}, xCls = class X {}] = [];
+const [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = [];
 
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/test/language/statements/const/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/const/dstr-obj-ptrn-id-init-fn-name-class.js
index 899e1d291cd7d103e5be02006433ac2d7e1d3c7b..db99512d6ded64242a2df2973cb9c0f4627f06c7 100644
--- a/test/language/statements/const/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/const/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -31,7 +31,8 @@ info: |
                bindingId).
 ---*/
 
-const { cls = class {}, xCls = class X {} } = {};
+const { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {};
 
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/test/language/statements/const/fn-name-class.js b/test/language/statements/const/fn-name-class.js
index f48a7aa2de89b7e0c2753ede824b71dac6217a90..7d41019ef2cf2e7117c2856d56068e6bf0cba4f8 100644
--- a/test/language/statements/const/fn-name-class.js
+++ b/test/language/statements/const/fn-name-class.js
@@ -19,8 +19,10 @@ features: [class]
 
 const xCls = class x {};
 const cls = class {};
+const xCls2 = class { static name() {} };
 
-assert(xCls.name !== 'xCls');
+assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/test/language/statements/for-of/dstr-array-elem-init-fn-name-class.js b/test/language/statements/for-of/dstr-array-elem-init-fn-name-class.js
index 24c777260fe3f9add76e97e58a1e739aebc7be78..9b4ff87983e5d195e7c508e2e9c1a93a5280f727 100644
--- a/test/language/statements/for-of/dstr-array-elem-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-array-elem-init-fn-name-class.js
@@ -36,12 +36,13 @@ info: |
           GetReferencedName(lref)).
 
 ---*/
-var xCls, cls;
+var xCls, cls, xCls2;
 
 var counter = 0;
 
-for ([ xCls = class x {},cls = class {} ] of [[]]) {
+for ([ xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } ] of [[]]) {
   assert(xCls.name !== 'xCls');
+  assert(xCls2.name !== 'xCls2');
 
   assert.sameValue(cls.name, 'cls');
   verifyNotEnumerable(cls, 'name');
diff --git a/test/language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
index e1432dcb0fe3490ec3d7dafb987d2fb80a5dd03d..38df0d9e740a6f6d31467f176bb3533c08e73f7b 100644
--- a/test/language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 
 var iterCount = 0;
 
-for (const [cls = class {}, xCls = class X {}] of [[]]) {
+for (const [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] of [[]]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-class.js
index d1327acba4a7f3ba7829536e441ef006605116c5..c05f7f0c9f03999ee5b43a5a6793143c173f2d79 100644
--- a/test/language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-const-obj-ptrn-id-init-fn-name-class.js
@@ -52,9 +52,10 @@ info: |
 
 var iterCount = 0;
 
-for (const { cls = class {}, xCls = class X {} } of [{}]) {
+for (const { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } of [{}]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
index 782e71ff89bc50e11e3a4498592422af627ae8a2..3084d9438b015ec5716f6fc6aafd98938026be18 100644
--- a/test/language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 
 var iterCount = 0;
 
-for (let [cls = class {}, xCls = class X {}] of [[]]) {
+for (let [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] of [[]]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for-of/dstr-let-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-of/dstr-let-obj-ptrn-id-init-fn-name-class.js
index c62e18a5383e1e1f6d447e6e07b640cfc0892b26..e1fe87536cb35a4184eef88346dc0817856b5a9d 100644
--- a/test/language/statements/for-of/dstr-let-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-let-obj-ptrn-id-init-fn-name-class.js
@@ -52,9 +52,10 @@ info: |
 
 var iterCount = 0;
 
-for (let { cls = class {}, xCls = class X {} } of [{}]) {
+for (let { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } of [{}]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for-of/dstr-obj-id-init-fn-name-class.js b/test/language/statements/for-of/dstr-obj-id-init-fn-name-class.js
index 4be54b8add14781fb495405e0cdb3fe9cf57b54e..09e8c2a767936e0992765c5a2ae55025bb14473c 100644
--- a/test/language/statements/for-of/dstr-obj-id-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-obj-id-init-fn-name-class.js
@@ -35,12 +35,13 @@ info: |
           iii. If hasNameProperty is false, perform SetFunctionName(v, P).
 
 ---*/
-var xCls, cls;
+var xCls, cls, xCls2;
 
 var counter = 0;
 
-for ({ xCls = class x {}, cls = class {} } of [{}]) {
+for ({ xCls = class x {}, cls = class {}, xCls2 = class { static name() {} } } of [{}]) {
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   assert.sameValue(cls.name, 'cls');
   verifyNotEnumerable(cls, 'name');
diff --git a/test/language/statements/for-of/dstr-obj-prop-elem-init-fn-name-class.js b/test/language/statements/for-of/dstr-obj-prop-elem-init-fn-name-class.js
index 07963614600fb06819d6f48aac9e691b5c1326e3..077c6bbb71dbea77d9abb0ff44fea07f112e930d 100644
--- a/test/language/statements/for-of/dstr-obj-prop-elem-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-obj-prop-elem-init-fn-name-class.js
@@ -36,12 +36,13 @@ info: |
           GetReferencedName(lref)).
 
 ---*/
-var xCls, cls;
+var xCls, cls, xCls2;
 
 var counter = 0;
 
-for ({ x: xCls = class x {}, x: cls = class {} } of [{}]) {
+for ({ x: xCls = class x {}, x: cls = class {}, x: xCls2 = class { static name() {} } } of [{}]) {
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   assert.sameValue(cls.name, 'cls');
   verifyNotEnumerable(cls, 'name');
diff --git a/test/language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
index bbb81bf337326de5cb87a69c366575d97e76fb3e..5615f58d95e2b194451051d0d0a1646d9c3b4048 100644
--- a/test/language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
@@ -50,9 +50,10 @@ info: |
 
 var iterCount = 0;
 
-for (var [cls = class {}, xCls = class X {}] of [[]]) {
+for (var [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] of [[]]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for-of/dstr-var-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for-of/dstr-var-obj-ptrn-id-init-fn-name-class.js
index e9c048d6872a555eeddb34d0f6ad31cdb7c970fd..79e75c11751859e9805a2f6eb1c503e26d2526d4 100644
--- a/test/language/statements/for-of/dstr-var-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for-of/dstr-var-obj-ptrn-id-init-fn-name-class.js
@@ -49,9 +49,10 @@ info: |
 
 var iterCount = 0;
 
-for (var { cls = class {}, xCls = class X {} } of [{}]) {
+for (var { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } of [{}]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
index 62e5f6d352c1ecee91eed7b05bdb9f8f7dc845ed..e3541a3970a5bbfb8f2a0839eedc5e56dbdc0bac 100644
--- a/test/language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for/dstr-const-ary-ptrn-elem-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 
 var iterCount = 0;
 
-for (const [cls = class {}, xCls = class X {}] = []; iterCount < 1; ) {
+for (const [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []; iterCount < 1; ) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-class.js
index d32208f5c92ccd672ad245da7f4d51ec40b7c1af..c964dbf8e46f2d43c5ef208b1619ae4a1d3cbb3a 100644
--- a/test/language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for/dstr-const-obj-ptrn-id-init-fn-name-class.js
@@ -52,9 +52,10 @@ info: |
 
 var iterCount = 0;
 
-for (const { cls = class {}, xCls = class X {} } = {}; iterCount < 1; ) {
+for (const { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}; iterCount < 1; ) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
index e2954cdbde405bd32d6a5eb57513894746e763b2..ccdc290ff9200e537daeae2821604c700b792753 100644
--- a/test/language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for/dstr-let-ary-ptrn-elem-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 
 var iterCount = 0;
 
-for (let [cls = class {}, xCls = class X {}] = []; iterCount < 1; ) {
+for (let [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []; iterCount < 1; ) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-class.js
index 8ba844639f0062ba0d16e9b7088166282a0cb2fb..0aa8c4a7de87f289ffb5db6b6bc2197c7f52e046 100644
--- a/test/language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for/dstr-let-obj-ptrn-id-init-fn-name-class.js
@@ -52,9 +52,10 @@ info: |
 
 var iterCount = 0;
 
-for (let { cls = class {}, xCls = class X {} } = {}; iterCount < 1; ) {
+for (let { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}; iterCount < 1; ) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
 
   iterCount += 1;
 }
diff --git a/test/language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
index 6fd4199d2ec3101e7b83dc6cdef89cebebb5e207..a597126464b3b5740eda309c0757a57519b4ff4f 100644
--- a/test/language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/for/dstr-var-ary-ptrn-elem-id-init-fn-name-class.js
@@ -47,9 +47,10 @@ info: |
 
 var iterCount = 0;
 
-for (var [cls = class {}, xCls = class X {}] = []; iterCount < 1; ) {
+for (var [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []; iterCount < 1; ) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   iterCount += 1;
 }
 
diff --git a/test/language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-class.js
index 098865e4c95555ec4c45977249a3354bfb7a5de5..9fbf2fc444ab8db4af39eaabb7b6082a868ae47c 100644
--- a/test/language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/for/dstr-var-obj-ptrn-id-init-fn-name-class.js
@@ -46,9 +46,10 @@ info: |
 
 var iterCount = 0;
 
-for (var { cls = class {}, xCls = class X {} } = {}; iterCount < 1; ) {
+for (var { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}; iterCount < 1; ) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   iterCount += 1;
 }
 
diff --git a/test/language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index d45ea5f54189d8cf49417501ccd351d07fb14964..0231a6fa506aef4d1dedb0370a8c0ec7a361e6af 100644
--- a/test/language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/function/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -55,9 +55,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function f([cls = class {}, xCls = class X {}]) {
+function f([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f([]);
diff --git a/test/language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 477e554042fb22a5daa98f07599733d38bf6f2d6..eeb3bfc7d8f385538e1d8141642e53c281fc4b0c 100644
--- a/test/language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/function/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -55,9 +55,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function f([cls = class {}, xCls = class X {}] = []) {
+function f([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f();
diff --git a/test/language/statements/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
index f9eb8e325f91c84fb707eaf6da52721706da7e95..13e046c8118c453ec0d79855e3e8fcb2b3324492 100644
--- a/test/language/statements/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/function/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function f({ cls = class {}, xCls = class X {} } = {}) {
+function f({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f();
diff --git a/test/language/statements/function/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/function/dstr-obj-ptrn-id-init-fn-name-class.js
index f0c526cfe5cb07a0eb8758f80ca844617c8ad1d1..908c40bcd2464b356ff2c9feda836e7f7b86cffa 100644
--- a/test/language/statements/function/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/function/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function f({ cls = class {}, xCls = class X {} }) {
+function f({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f({});
diff --git a/test/language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index a18868f0977f91aa95cf8ba1fe12221a0b0c5416..c834ea4c666b99418787621abf87cfd842f8aa1b 100644
--- a/test/language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/generators/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function* f([cls = class {}, xCls = class X {}]) {
+function* f([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f([]).next();
diff --git a/test/language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
index 4724ef3f2598e459e7ce6f0a36e619317779b05c..083875d7f439e1c46d1047d55eb40cdfd1dbe68d 100644
--- a/test/language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/generators/dstr-dflt-ary-ptrn-elem-id-init-fn-name-class.js
@@ -54,9 +54,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function* f([cls = class {}, xCls = class X {}] = []) {
+function* f([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = []) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f().next();
diff --git a/test/language/statements/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
index c2bbc7e66afb92a73743d72408496bc468afb344..c5237dc1b98af27ad1c43465ffd75ca47548ac02 100644
--- a/test/language/statements/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/generators/dstr-dflt-obj-ptrn-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function* f({ cls = class {}, xCls = class X {} } = {}) {
+function* f({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {}) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f().next();
diff --git a/test/language/statements/generators/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/generators/dstr-obj-ptrn-id-init-fn-name-class.js
index db0221af9b3fe95471f88e0b93c86acbdbc1b6c1..22f38f316bacf5ccb0dc3015168c3d1c7d345ab5 100644
--- a/test/language/statements/generators/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/generators/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -53,9 +53,10 @@ info: |
 ---*/
 
 var callCount = 0;
-function* f({ cls = class {}, xCls = class X {} }) {
+function* f({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   callCount = callCount + 1;
 };
 f({}).next();
diff --git a/test/language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index f4656331fc1a90748e7e101f7c13742c49fac788..5ac218c1194475fb805caf085b47e922832d90ba 100644
--- a/test/language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/let/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -32,7 +32,8 @@ info: |
     8. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
-let [cls = class {}, xCls = class X {}] = [];
+let [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = [];
 
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/test/language/statements/let/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/let/dstr-obj-ptrn-id-init-fn-name-class.js
index a817b9c021fdd4ce9aae4a80faaa247c6700a553..3237b624854d40b5bf9355f0844820d02e84100c 100644
--- a/test/language/statements/let/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/let/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -31,7 +31,8 @@ info: |
                bindingId).
 ---*/
 
-let { cls = class {}, xCls = class X {} } = {};
+let { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {};
 
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/test/language/statements/let/fn-name-class.js b/test/language/statements/let/fn-name-class.js
index 85be2ac4292c3557b9e902b67a2da529b1794d4f..4819a385b6df57c4b77ccb6cb8f1bd98ec48229a 100644
--- a/test/language/statements/let/fn-name-class.js
+++ b/test/language/statements/let/fn-name-class.js
@@ -19,8 +19,10 @@ features: [class]
 
 let xCls = class x {};
 let cls = class {};
+let xCls2 = class { static name() {} };
 
-assert(xCls.name !== 'xCls');
+assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');
diff --git a/test/language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index e07a97bde8dec92b78b317717b5b1d52a7bf3262..6fbce483da70f71ff964e4462b38633930fa3a29 100644
--- a/test/language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/try/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -34,9 +34,10 @@ var ranCatch = false;
 
 try {
   throw [];
-} catch ([cls = class {}, xCls = class X {}]) {
+} catch ([cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }]) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   ranCatch = true;
 }
 
diff --git a/test/language/statements/try/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/try/dstr-obj-ptrn-id-init-fn-name-class.js
index ead6e786a7166ab9ac9fbe205506ab29fe7e2a3f..491fa4765d47f3d5f77796bc9d064de49914fb12 100644
--- a/test/language/statements/try/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/try/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -33,9 +33,10 @@ var ranCatch = false;
 
 try {
   throw {};
-} catch ({ cls = class {}, xCls = class X {} }) {
+} catch ({ cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } }) {
   assert.sameValue(cls.name, 'cls');
   assert.notSameValue(xCls.name, 'xCls');
+  assert.notSameValue(xCls2.name, 'xCls2');
   ranCatch = true;
 }
 
diff --git a/test/language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-class.js b/test/language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-class.js
index d466371bfcf1a53565df1ba73a759c32e2d187b4..c2366522ad156d9f9361d9b02101315ddfd8107c 100644
--- a/test/language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-class.js
+++ b/test/language/statements/variable/dstr-ary-ptrn-elem-id-init-fn-name-class.js
@@ -31,7 +31,8 @@ info: |
     8. Return InitializeReferencedBinding(lhs, v).
 ---*/
 
-var [cls = class {}, xCls = class X {}] = [];
+var [cls = class {}, xCls = class X {}, xCls2 = class { static name() {} }] = [];
 
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/test/language/statements/variable/dstr-obj-ptrn-id-init-fn-name-class.js b/test/language/statements/variable/dstr-obj-ptrn-id-init-fn-name-class.js
index e39c6c37c815110f3c823b5e2144bc6c5b0cd00a..4626187c3ac442f3406a867a2992e93e9bfdf01b 100644
--- a/test/language/statements/variable/dstr-obj-ptrn-id-init-fn-name-class.js
+++ b/test/language/statements/variable/dstr-obj-ptrn-id-init-fn-name-class.js
@@ -30,7 +30,8 @@ info: |
                bindingId).
 ---*/
 
-var { cls = class {}, xCls = class X {} } = {};
+var { cls = class {}, xCls = class X {}, xCls2 = class { static name() {} } } = {};
 
 assert.sameValue(cls.name, 'cls');
 assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
diff --git a/test/language/statements/variable/fn-name-class.js b/test/language/statements/variable/fn-name-class.js
index 0d095fc922f3eed3e71987b4fd7c64ffc5a89881..6aeb89a4d8085bde1873964ea227a4d291bfb99a 100644
--- a/test/language/statements/variable/fn-name-class.js
+++ b/test/language/statements/variable/fn-name-class.js
@@ -19,8 +19,10 @@ features: [class]
 
 var xCls = class x {};
 var cls = class {};
+var xCls2 = class { static name() {} };
 
-assert(xCls.name !== 'xCls');
+assert.notSameValue(xCls.name, 'xCls');
+assert.notSameValue(xCls2.name, 'xCls2');
 
 assert.sameValue(cls.name, 'cls');
 verifyNotEnumerable(cls, 'name');