~ubuntu-branches/ubuntu/saucy/mozjs17/saucy

« back to all changes in this revision

Viewing changes to js/src/jit-test/tests/basic/functionnames.js

  • Committer: Package Import Robot
  • Author(s): Rico Tzschichholz
  • Date: 2013-05-25 12:24:23 UTC
  • Revision ID: package-import@ubuntu.com-20130525122423-zmxucrhtensw90xy
Tags: upstream-17.0.0
ImportĀ upstreamĀ versionĀ 17.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Most of these test cases are adapted from:
 
3
 * http://johnjbarton.github.com/nonymous/index.html
 
4
 */
 
5
 
 
6
function assertName(fn, name) {
 
7
    assertEq(displayName(fn), name)
 
8
}
 
9
 
 
10
/* simple names */
 
11
var a = function b() {};
 
12
function c() {};
 
13
assertName(a, 'b');
 
14
assertName(c, 'c');
 
15
 
 
16
var a = function(){},
 
17
    b = function(){};
 
18
assertName(a, 'a');
 
19
assertName(b, 'b');
 
20
 
 
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();
 
28
 
 
29
/* duplicated */
 
30
var Baz = Bar = function(){}
 
31
assertName(Baz, 'Bar');
 
32
assertName(Bar, 'Bar');
 
33
 
 
34
/* returned from an immediate function */
 
35
var Foo = function (){
 
36
    assertName(arguments.callee, 'Foo<')
 
37
    return function(){};
 
38
}();
 
39
assertName(Foo, 'Foo');
 
40
 
 
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();
 
59
 
 
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.add');
 
73
 
 
74
var x = 1;
 
75
x = function(){};
 
76
assertName(x, 'x');
 
77
 
 
78
var a = {b: {}};
 
79
a.b.c = (function() {
 
80
    assertName(arguments.callee, 'a.b.c<')
 
81
}());
 
82
 
 
83
a.b = function() {
 
84
    function foo(f) { assertName(f, 'a.b/<'); };
 
85
    return foo(function(){});
 
86
}
 
87
a.b();
 
88
 
 
89
var bar = 'bar';
 
90
a.b[bar] = function(){};
 
91
assertName(a.b.bar, 'a.b[bar]');
 
92
 
 
93
a.b = function() {
 
94
    assertName(arguments.callee, 'a.b<');
 
95
    return { a: function() {} }
 
96
}();
 
97
assertName(a.b.a, 'a.b.a');
 
98
 
 
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/<')
 
110
 
 
111
function f(g) {
 
112
    assertName(g, 'x<');
 
113
    return g();
 
114
}
 
115
var x = f(function () { return function() {}; });
 
116
assertName(x, 'x</<');
 
117
 
 
118
var a = {'b': function(){}};
 
119
assertName(a.b, 'a.b');
 
120
 
 
121
function g(f) {
 
122
  assertName(f, '');
 
123
}
 
124
label: g(function () {});
 
125
 
 
126
var z = [function() {}];
 
127
assertName(z[0], 'z<');
 
128
 
 
129
/* fuzz bug from 785089 */
 
130
odeURIL:(function(){})