Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / tests / ecma_5 / Function / 10.2.1.1.6.js
1 /*
2  * Any copyright is dedicated to the Public Domain.
3  * http://creativecommons.org/licenses/publicdomain/
4  */
5
6 function strictThis() { 'use strict'; return this; }
7
8 /* Check that calls of flat closure slots get the right |this|. */
9 function flat(g) {
10     function h() { return g(); }
11     return h;
12 }
13 assertEq(flat(strictThis)(), undefined);
14
15 /* Check that calls up upvars get the right |this|. */
16 function upvar(f) {
17     function h() {
18         return f(); 
19     }
20     return h();
21 }
22 assertEq(upvar(strictThis), undefined);
23
24 /* Check that calls to with-object properties get an appropriate 'this'. */
25 var obj = { f: strictThis };
26 with (obj) {
27     /* 
28      * The method won't compile anything containing a 'with', but it can
29      * compile 'g'.
30      */
31     function g() { return f(); }
32     assertEq(g(), obj);
33 }
34
35 reportCompare(true, true);