michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: //----------------------------------------------------------------------------- michael@0: var BUGNUMBER = 338709; michael@0: var summary = 'ReadOnly properties should not be overwritten by using ' + michael@0: 'Object and try..throw..catch'; michael@0: var actual = ''; michael@0: var expect = ''; michael@0: michael@0: printBugNumber(BUGNUMBER); michael@0: printStatus (summary); michael@0: michael@0: Object = function () { return Math }; michael@0: expect = Math.LN2; michael@0: try michael@0: { michael@0: throw 1990; michael@0: } michael@0: catch (LN2) michael@0: { michael@0: } michael@0: actual = Math.LN2; michael@0: print("Math.LN2 = " + Math.LN2) michael@0: reportCompare(expect, actual, summary); michael@0: michael@0: var s = new String("abc"); michael@0: Object = function () { return s }; michael@0: expect = s.length; michael@0: try michael@0: { michael@0: throw -8 michael@0: } michael@0: catch (length) michael@0: { michael@0: } michael@0: actual = s.length; michael@0: print("length of '" + s + "' = " + s.length) michael@0: reportCompare(expect, actual, summary); michael@0: michael@0: var re = /xy/m; michael@0: Object = function () { return re }; michael@0: expect = re.multiline; michael@0: try michael@0: { michael@0: throw false michael@0: } michael@0: catch (multiline) michael@0: { michael@0: } michael@0: actual = re.multiline; michael@0: print("re.multiline = " + re.multiline) michael@0: reportCompare(expect, actual, summary); michael@0: michael@0: if ("document" in this) { michael@0: // Let the document be its own documentElement. michael@0: Object = function () { return document } michael@0: expect = document.documentElement + ''; michael@0: try michael@0: { michael@0: throw document; michael@0: } michael@0: catch (documentElement) michael@0: { michael@0: } michael@0: actual = document.documentElement + ''; michael@0: print("document.documentElement = " + document.documentElement) michael@0: } michael@0: else michael@0: Object = this.constructor michael@0: michael@0: reportCompare(expect, actual, summary);