Index: test/mjsunit/harmony/function-name.js |
diff --git a/test/mjsunit/harmony/function-name.js b/test/mjsunit/harmony/function-name.js |
index 8ca5d8209acd988d4273f9abfa3b5d9ebe52fc1b..42b9cb8d306c314ce4f4aa4e5fb7bb7bc8ed1548 100644 |
--- a/test/mjsunit/harmony/function-name.js |
+++ b/test/mjsunit/harmony/function-name.js |
@@ -3,6 +3,7 @@ |
// found in the LICENSE file. |
// |
// Flags: --harmony-function-name |
+// Flags: --harmony-destructuring-bind --harmony-destructuring-assignment |
(function testVariableDeclarationsFunction() { |
'use strict'; |
@@ -159,3 +160,125 @@ |
classLit = class { constructor() {} static get ['name']() { return true; } }; |
assertTrue(classLit.name); |
})(); |
+ |
+(function testObjectBindingPattern() { |
rossberg
2016/01/27 18:39:07
In all these cases, it might be good to also test
adamk
2016/01/27 18:46:38
Spec says that parentheses don't stop the name fro
|
+ var { |
+ a = function() {}, |
+ b = () => {}, |
+ x = function withName() { }, |
+ y = class { }, |
+ z = class ClassName { }, |
+ q = class { static name() { return 42 } }, |
+ foo: bar = function() {}, |
+ } = {}; |
+ assertEquals('a', a.name); |
+ assertEquals('b', b.name); |
+ assertEquals('withName', x.name); |
+ assertEquals('y', y.name); |
+ assertEquals('ClassName', z.name); |
+ assertEquals('function', typeof q.name); |
+ assertEquals('bar', bar.name); |
+})(); |
+ |
+(function testArrayBindingPattern() { |
+ var [ |
+ a = function() {}, |
+ b = () => {}, |
+ x = function withName() { }, |
+ y = class { }, |
+ z = class ClassName { }, |
+ q = class { static name() { return 42 } }, |
+ ] = []; |
+ assertEquals('a', a.name); |
+ assertEquals('b', b.name); |
+ assertEquals('withName', x.name); |
+ assertEquals('y', y.name); |
+ assertEquals('ClassName', z.name); |
+ assertEquals('function', typeof q.name); |
+})(); |
+ |
+(function testObjectAssignmentPattern() { |
+ var a, b, x, y, z, q; |
+ ({ |
+ a = function() {}, |
+ b = () => {}, |
+ x = function withName() { }, |
+ y = class { }, |
+ z = class ClassName { }, |
+ q = class { static name() { return 42 } }, |
+ foo: bar = function() {}, |
+ } = {}); |
+ assertEquals('a', a.name); |
+ assertEquals('b', b.name); |
+ assertEquals('withName', x.name); |
+ assertEquals('y', y.name); |
+ assertEquals('ClassName', z.name); |
+ assertEquals('function', typeof q.name); |
+ assertEquals('bar', bar.name); |
+})(); |
+ |
+(function testArrayAssignmentPattern() { |
+ var a, b, x, y, z, q; |
+ [ |
+ a = function() {}, |
+ b = () => {}, |
+ x = function withName() { }, |
+ y = class { }, |
+ z = class ClassName { }, |
+ q = class { static name() { return 42 } }, |
+ ] = []; |
+ assertEquals('a', a.name); |
+ assertEquals('b', b.name); |
+ assertEquals('withName', x.name); |
+ assertEquals('y', y.name); |
+ assertEquals('ClassName', z.name); |
+ assertEquals('function', typeof q.name); |
+})(); |
+ |
+(function testParameterDestructuring() { |
+ (function({ a = function() {}, |
+ b = () => {}, |
+ x = function withName() { }, |
+ y = class { }, |
+ z = class ClassName { }, |
+ q = class { static name() { return 42 } }, |
+ foo: bar = function() {} }) { |
+ assertEquals('a', a.name); |
+ assertEquals('b', b.name); |
+ assertEquals('withName', x.name); |
+ assertEquals('y', y.name); |
+ assertEquals('ClassName', z.name); |
+ assertEquals('function', typeof q.name); |
+ assertEquals('bar', bar.name); |
+ })({}); |
+ |
+ (function([ a = function() {}, |
+ b = () => {}, |
+ x = function withName() { }, |
+ y = class { }, |
+ z = class ClassName { }, |
+ q = class { static name() { return 42 } } ]) { |
+ assertEquals('a', a.name); |
+ assertEquals('b', b.name); |
+ assertEquals('withName', x.name); |
+ assertEquals('y', y.name); |
+ assertEquals('ClassName', z.name); |
+ assertEquals('function', typeof q.name); |
+ })([]); |
+})(); |
+ |
+(function testDefaultParameters() { |
+ (function(a = function() {}, |
+ b = () => {}, |
+ x = function withName() { }, |
+ y = class { }, |
+ z = class ClassName { }, |
+ q = class { static name() { return 42 } }) { |
+ assertEquals('a', a.name); |
+ assertEquals('b', b.name); |
+ assertEquals('withName', x.name); |
+ assertEquals('y', y.name); |
+ assertEquals('ClassName', z.name); |
+ assertEquals('function', typeof q.name); |
+ })(); |
+})(); |