js/src/jit-test/tests/basic/functionnames.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2  * Most of these test cases are adapted from:
     3  * http://johnjbarton.github.com/nonymous/index.html
     4  */
     6 function assertName(fn, name) {
     7     assertEq(displayName(fn), name)
     8 }
    10 /* simple names */
    11 var a = function b() {};
    12 function c() {};
    13 assertName(a, 'b');
    14 assertName(c, 'c');
    16 var a = function(){},
    17     b = function(){};
    18 assertName(a, 'a');
    19 assertName(b, 'b');
    21 /* nested names */
    22 var main = function() {
    23     function Foo(a) { assertName(a, 'main/foo<') }
    24     var foo = new Foo(function() {});
    25 };
    26 assertName(main, 'main')
    27 main();
    29 /* duplicated */
    30 var Baz = Bar = function(){}
    31 assertName(Baz, 'Bar');
    32 assertName(Bar, 'Bar');
    34 /* returned from an immediate function */
    35 var Foo = function (){
    36     assertName(arguments.callee, 'Foo<')
    37     return function(){};
    38 }();
    39 assertName(Foo, 'Foo</<');
    41 /* various properties and such */
    42 var x = {fox: { bax: function(){} } };
    43 assertName(x.fox.bax, 'x.fox.bax');
    44 var foo = {foo: {foo: {}}};
    45 foo.foo.foo = function(){};
    46 assertName(foo.foo.foo, 'foo.foo.foo');
    47 var z = {
    48     foz: function() {
    49              var baz = function() {
    50                  var y = {bay: function() {}};
    51                  assertName(y.bay, 'z.foz/baz/y.bay');
    52              };
    53              assertName(baz, 'z.foz/baz');
    54              baz();
    55          }
    56 };
    57 assertName(z.foz, 'z.foz');
    58 z.foz();
    60 var outer = function() {
    61     x.fox.bax.nx = function(){};
    62     var w = {fow: { baw: function(){} } };
    63     assertName(x.fox.bax.nx, 'outer/x.fox.bax.nx')
    64     assertName(w.fow.baw, 'outer/w.fow.baw');
    65 };
    66 assertName(outer, 'outer');
    67 outer();
    68 function Fuz(){};
    69 Fuz.prototype = {
    70   add: function() {}
    71 }
    72 assertName(Fuz.prototype.add, 'Fuz.prototype.add');
    74 var x = 1;
    75 x = function(){};
    76 assertName(x, 'x');
    78 var a = {b: {}};
    79 a.b.c = (function() {
    80     assertName(arguments.callee, 'a.b.c<')
    81 }());
    83 a.b = function() {
    84     function foo(f) { assertName(f, 'a.b/<'); };
    85     return foo(function(){});
    86 }
    87 a.b();
    89 var bar = 'bar';
    90 a.b[bar] = function(){};
    91 assertName(a.b.bar, 'a.b[bar]');
    93 a.b = function() {
    94     assertName(arguments.callee, 'a.b<');
    95     return { a: function() {} }
    96 }();
    97 assertName(a.b.a, 'a.b</<.a');
    99 a = {
   100     b: function(a) {
   101         if (a)
   102             return function() {};
   103         else
   104             return function() {};
   105     }
   106 };
   107 assertName(a.b, 'a.b');
   108 assertName(a.b(true), 'a.b/<')
   109 assertName(a.b(false), 'a.b/<')
   111 function f(g) {
   112     assertName(g, 'x<');
   113     return g();
   114 }
   115 var x = f(function () { return function() {}; });
   116 assertName(x, 'x</<');
   118 var a = {'b': function(){}};
   119 assertName(a.b, 'a.b');
   121 function g(f) {
   122   assertName(f, '');
   123 }
   124 label: g(function () {});
   126 var z = [function() {}];
   127 assertName(z[0], 'z<');
   129 /* fuzz bug from 785089 */
   130 odeURIL:(function(){})
   132 a = { 1: function () {} };
   133 assertName(a[1], 'a[1]');
   135 a = {
   136   "embedded spaces": function(){},
   137   "dots.look.like.property.references": function(){},
   138   "\"\'quotes\'\"": function(){},
   139   "!@#$%": function(){}
   140 };
   141 assertName(a["embedded spaces"], 'a["embedded spaces"]');
   142 assertName(a["dots.look.like.property.references"], 'a["dots.look.like.property.references"]');
   143 assertName(a["\"\'quotes\'\""], 'a["\\\"\'quotes\'\\\""]');
   144 assertName(a["!@#$%"], 'a["!@#$%"]');
   146 a.b = {};
   147 a.b.c = {};
   148 a.b["c"]["d e"] = { f: { 1: { "g": { "h i": function() {} } } } };
   149 assertName(a.b.c["d e"].f[1].g["h i"], 'a.b.c["d e"].f[1].g["h i"]');
   151 this.m = function () {};
   152 assertName(m, "this.m");
   154 function N() {
   155   this.o = function () {}
   156 }
   157 let n = new N()
   158 assertName(n.o, "N/this.o");

mercurial