// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

js> // only direct calls to eval should use scope of call
js> // indirect calls should be allowed, but use global scope instead

js> var value = 'outer';

js> (function() { var value = "inner"; return eval("value"); })();
inner

js> (function(_eval) { var value = "inner"; return _eval("value"); })(eval);
outer

js> (function(obj) { var value = "inner"; return obj.eval("value"); })({eval:eval});
outer

js> (function(obj) { var value = "inner"; return obj.f("value"); })({f:eval});
outer

js> (function(arr) { var value = "inner"; return arr[0]("value"); })([eval]);
outer

js> (function() { var value = "inner"; return eval("eval")("value"); })();
outer
