michael@0: // Copyright 2009 the Sputnik authors. All rights reserved. michael@0: // This code is governed by the BSD license found in the LICENSE file. michael@0: michael@0: /** michael@0: * Function call cannot appear in the program before the FunctionExpression appears michael@0: * michael@0: * @path ch13/13.0/S13_A17_T2.js michael@0: * @description Trying to call a function before the FunctionExpression appears and then using the FunctionExpression one more time michael@0: */ michael@0: michael@0: ////////////////////////////////////////////////////////////////////////////// michael@0: //CHECK#1 michael@0: try{ michael@0: var __result = __func(); michael@0: $ERROR("#1: var __result = __func() lead to throwing exception"); michael@0: } catch(e) { michael@0: if ((e instanceof TypeError) !== true) { michael@0: $ERROR('#1.2: func should throw a TypeError Actual: ' + (e)); michael@0: } michael@0: } michael@0: // michael@0: ////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: // now we reach the __func overwriting by new expression michael@0: var __func = function __func(){return "ONE";}; michael@0: michael@0: ////////////////////////////////////////////////////////////////////////////// michael@0: //CHECK#2 michael@0: var __result = __func(); michael@0: if (__result !== "ONE") { michael@0: $ERROR('#2: __result === "ONE". Actual: __result ==='+__result); michael@0: } michael@0: // michael@0: ////////////////////////////////////////////////////////////////////////////// michael@0: michael@0: __func = function __func(){return "TWO";}; michael@0: michael@0: ////////////////////////////////////////////////////////////////////////////// michael@0: //CHECK#3 michael@0: var __result = __func(); michael@0: if (__result !== "TWO") { michael@0: $ERROR('#3: __result === "TWO". Actual: __result ==='+__result); michael@0: } michael@0: // michael@0: ////////////////////////////////////////////////////////////////////////////// michael@0: