summaryrefslogtreecommitdiffstats
path: root/js/src/tests/ecma_5/Function/10.2.1.1.6.js
blob: 69613386cd8d37de498044b28d60796d93111476 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/licenses/publicdomain/
 */

function strictThis() { 'use strict'; return this; }

/* Check that calls of flat closure slots get the right |this|. */
function flat(g) {
    function h() { return g(); }
    return h;
}
assertEq(flat(strictThis)(), undefined);

/* Check that calls up upvars get the right |this|. */
function upvar(f) {
    function h() {
        return f(); 
    }
    return h();
}
assertEq(upvar(strictThis), undefined);

/* Check that calls to with-object properties get an appropriate 'this'. */
var obj = { f: strictThis };
with (obj) {
    /* 
     * The method won't compile anything containing a 'with', but it can
     * compile 'g'.
     */
    function g() { return f(); }
    assertEq(g(), obj);
}

reportCompare(true, true);