function-displayName-computed.js (2424B)
1 // |jit-test| skip-if: isLcovEnabled() 2 // Guessed Atoms tests. 3 // Test String literals 4 var obj = { 5 ["func"]: function() {return function() {} }, 6 ["arrowFunc"]: ()=>{return function() {} }, 7 ["method"]() {return function() {} }, 8 ["nonAnonymousFunc"]: function F() {return function() {} }, 9 get ["getter"]() {return function() {} }, 10 }; 11 12 13 assertEq(displayName(obj.func()), "func/<"); 14 assertEq(displayName(obj.arrowFunc()), "arrowFunc/<"); 15 assertEq(displayName(obj.method()), "method/<"); 16 assertEq(displayName(obj.nonAnonymousFunc()), "F/<"); 17 18 // We don't support guessed name for accessor 19 assertEq(displayName(obj.getter), ""); 20 21 let dummy = class { 22 ["func"]() {return function() {} } 23 ["arrowFunc"] = ()=>{return function() {} }; 24 ["method"]() {return function() {} } 25 get ["getter"]() {return function() {} } 26 }; 27 28 dum = new dummy(); 29 assertEq(displayName(dum.func()), "func/<"); 30 // We don't support guessed name for class field with computed name 31 assertEq(displayName(dum.arrowFunc()), "dummy</</<"); 32 assertEq(displayName(dum.method()), "method/<"); 33 // We don't support guessed name for accessor 34 assertEq(displayName(dummy.prototype.getter), "dummy</<"); 35 36 37 // Test numeric literals 38 var objN = { 39 [1]: function() {return function() {}}, 40 [5]: ()=>{return function() {}}, 41 [7] () {return function() {}}, 42 [8]: class {}, 43 [9]: function F() {return function() {}}, 44 [10]: class C{}, 45 get [11]() {return function() {}}, 46 }; 47 assertEq(displayName(objN[1]()), "1/<"); 48 assertEq(displayName(objN[5]()), "5/<"); 49 assertEq(displayName(objN[7]()), "7/<"); 50 assertEq(displayName(objN[8]), "8"); 51 assertEq(displayName(objN[9]()), "F/<"); 52 assertEq(displayName(objN[10]), "C"); 53 // We don't support guessed name for accessor 54 assertEq(displayName(objN[11]), "objN/<"); 55 56 let foo = class { 57 [1] () {return function() {} } 58 [5] = ()=>{return function() {} }; 59 [7] () {return function() {} } 60 get [11]() {return function() {} } 61 }; 62 63 f = new foo(); 64 65 assertEq(displayName(f[1]()), "1/<"); 66 // We don't support guessed name for class field with computed name 67 assertEq(displayName(f[5]()), "foo</</<"); 68 assertEq(displayName(f[7]()), "7/<"); 69 assertEq(displayName(f[11]), "foo</<"); 70 71 // Native built-in accessor name, which is lazily created. 72 73 assertEq(displayName(Object.getOwnPropertyDescriptor(Map.prototype, "size").get), "get size"); 74 assertEq(displayName(Object.getOwnPropertyDescriptor(RegExp.prototype, "flags").get), "get flags");