// Copyright 2009 the Sputnik authors. All rights reserved. // This code is governed by the BSD license found in the LICENSE file. /** * "throw Expression" returns (throw, GetValue(Result(1)), empty), where 1 evaluates Expression * * @path ch12/12.13/S12.13_A2_T6.js * @description Throwing object */ var myObj = {p1: 'a', p2: 'b', p3: 'c', value: 'myObj_value', valueOf : function(){return 'obj_valueOf';}, parseInt : function(){return 'obj_parseInt';}, NaN : 'obj_NaN', Infinity : 'obj_Infinity', eval : function(){return 'obj_eval';}, parseFloat : function(){return 'obj_parseFloat';}, isNaN : function(){return 'obj_isNaN';}, isFinite : function(){return 'obj_isFinite';}, i:7 } try{ throw myObj; } catch(e){ // CHECK#1 if (e.p1!=="a") $ERROR('#1: e.p1 === "a". Actual: e.p1 ==='+ e.p1 ); // CHECK#2 if (e.value!=='myObj_value') $ERROR('#2: e.p1 === \'myObj_value\'. Actual: e.p1 ==='+ e.p1 ); // CHECK#3 if (e.eval()!=='obj_eval') $ERROR('#3: e.p1 === \'obj_eval\'. Actual: e.p1 ==='+ e.p1 ); } // CHECK#4 myObj.i=6 try{ throw myObj; } catch(e){} if (myObj.i!==6) $ERROR('#4: Handling of catch must be correct');