/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ /* 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/. */ //----------------------------------------------------------------------------- var BUGNUMBER = 290774; var summary = 'activation object never delegates to Object.prototype'; var actual = ''; var expect = ''; printBugNumber(BUGNUMBER); printStatus (summary); var toStringResult; var evalResult; var watchResult; var parseIntResult; var eval = 'fooEval'; var watch = undefined; var parseInt = 'fooParseInt'; function toString() { return 'fooString'; } function normal() { toStringResult = toString; evalResult = eval; watchResult = watch; parseIntResult = parseInt; } function outerinnervar() { toStringResult = toString; evalResult = eval; watchResult = watch; parseIntResult = parseInt; function inner() { // addition of any statement // which accesses a variable // from the outer scope causes the bug printStatus(toString); } } expect = true; printStatus('normal'); printStatus('======'); normal(); printStatus('toStringResult ' + toStringResult); printStatus('toString ' + toString); actual = ((toStringResult + '') == (toString + '')); reportCompare(expect, actual, inSection(1)); printStatus('evalResult ' + evalResult); printStatus('eval ' + eval); actual = ((evalResult + '') == (eval + '')); reportCompare(expect, actual, inSection(2)); printStatus('watchResult ' + watchResult); printStatus('watch ' + watch); actual = ((watchResult + '') == (watch + '')); reportCompare(expect, actual, inSection(3)); printStatus('parseIntResult ' + parseIntResult); printStatus('parseInt ' + parseInt); actual = ((parseIntResult + '') == (parseInt + '')); reportCompare(expect, actual, inSection(4)); printStatus('outerinner'); printStatus('=========='); outerinnervar(); printStatus('toStringResult ' + toStringResult); printStatus('toString ' + toString); actual = ((toStringResult + '') == (toString + '')); reportCompare(expect, actual, inSection(5)); printStatus('evalResult ' + evalResult); printStatus('eval ' + eval); actual = ((evalResult + '') == (eval + '')); reportCompare(expect, actual, inSection(6)); printStatus('watchResult ' + watchResult); printStatus('watch ' + watch); actual = ((watchResult + '') == (watch + '')); reportCompare(expect, actual, inSection(7)); printStatus('parseIntResult ' + parseIntResult); printStatus('parseInt ' + parseInt); actual = ((parseIntResult + '') == (parseInt + '')); reportCompare(expect, actual, inSection(8));