18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* ***** BEGIN LICENSE BLOCK *****
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Version: NPL 1.1/GPL 2.0/LGPL 2.1
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The contents of this file are subject to the Netscape Public License
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Version 1.1 (the "License"); you may not use this file except in
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* compliance with the License. You may obtain a copy of the License at
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* http://www.mozilla.org/NPL/
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Software distributed under the License is distributed on an "AS IS" basis,
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* for the specific language governing rights and limitations under the
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* License.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Original Code is JavaScript Engine testing utilities.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Initial Developer of the Original Code is Netscape Communications Corp.
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Portions created by the Initial Developer are Copyright (C) 2001
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the Initial Developer. All Rights Reserved.
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Contributor(s): chwu@nortelnetworks.com, timeless@mac.com,
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*                 brendan@mozilla.org, pschwartau@netscape.com
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Alternatively, the contents of this file may be used under the terms of
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* either the GNU General Public License Version 2 or later (the "GPL"), or
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* in which case the provisions of the GPL or the LGPL are applicable instead
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* of those above. If you wish to allow use of your version of this file only
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* under the terms of either the GPL or the LGPL, and not to allow others to
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* use your version of this file under the terms of the NPL, indicate your
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* decision by deleting the provisions above and replace them with the notice
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* and other provisions required by the GPL or the LGPL. If you do not delete
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the provisions above, a recipient may use your version of this file under
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the terms of any one of the NPL, the GPL or the LGPL.
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* ***** END LICENSE BLOCK *****
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date: 10 October 2001
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SUMMARY: Regression test for Bugzilla bug 104077
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* See http://bugzilla.mozilla.org/show_bug.cgi?id=104077
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* "JS crash: with/finally/return"
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Also http://bugzilla.mozilla.org/show_bug.cgi?id=120571
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* "JS crash: try/catch/continue."
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SpiderMonkey crashed on this code - it shouldn't.
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* NOTE: the finally-blocks below should execute even if their try-blocks
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* have return or throw statements in them:
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* ------- Additional Comment #76 From Mike Shaver 2001-12-07 01:21 -------
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* finally trumps return, and all other control-flow constructs that cause
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* program execution to jump out of the try block: throw, break, etc.  Once you
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* enter a try block, you will execute the finally block after leaving the try,
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* regardless of what happens to make you leave the try.
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-----------------------------------------------------------------------------
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar UBound = 0;
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = 104077;
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = "Just testing that we don't crash on with/finally/return -";
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar status = '';
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar statusitems = [];
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actual = '';
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actualvalues = [];
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expect= '';
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expectedvalues = [];
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction addValues(obj)
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var sum;
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (obj)
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      sum = arg1 + arg2;
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    finally
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      return sum;
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(1);
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar obj = new Object();
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg1 = 1;
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg2 = 2;
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = addValues(obj);
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 3;
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction tryThis()
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var sum = 4 ;
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var i = 0;
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  while (sum < 10)
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     sum += 1;
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     i += 1;
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    finally
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     print("In finally case of tryThis() function");
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  return i;
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(2);
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = tryThis();
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 6;
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction myTest(x)
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var obj = new Object();
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var msg;
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (obj)
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    msg = (x != null) ? "NO" : "YES";
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    print("Is the provided argument to myTest() null? : " + msg);
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      throw "ZZZ";
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    catch(e)
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      print("Caught thrown exception = " + e);
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  return 1;
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(3);
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = myTest(null);
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 1;
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction addValues_2(obj)
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var sum = 0;
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (obj)
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      sum = arg1 + arg2;
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      with (arg3)
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        while (sum < 10)
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          try
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (sum > 5)
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project              return sum;
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            sum += 1;
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          catch(e)
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            print('Caught an exception in addValues_2() function: ' + e);
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    finally
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      return sum;
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(4);
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj = new Object();
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg1 = 1;
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg2 = 2;
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3 = new Object();
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.a = 10;
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.b = 20;
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = addValues_2(obj);
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 6;
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(5);
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttry
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  throw new A();
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectcatch(e)
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfinally
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  try
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    throw new A();
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  catch(e)
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  finally
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    actual = 'a';
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  actual = 'b';
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'b';
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction testfunc(mode)
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var obj = new Object();
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (obj)
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var num = 100;
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    var str = "abc" ;
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    if (str == null)
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      try
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        throw "authentication.0";
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      catch(e)
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      finally
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      return num;
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    else
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      try
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        if (mode == 0)
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          throw "authentication.0";
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        else
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          mytest();
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      catch(e)
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      finally
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      return num;
2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(6);
2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = testfunc(0);
2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 100;
2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(7);
2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = testfunc();
2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 100;
2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction entry_menu()
2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var document = new Object();
2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var dialog = new Object();
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var num = 100;
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (document)
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    with (dialog)
2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      try
2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        while (true)
2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          return num;
2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      finally
3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(8);
3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = entry_menu();
3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 100;
3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction addValues_3(obj)
3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var sum = 0;
3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (obj)
3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      sum = arg1 + arg2;
3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      with (arg3)
3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        while (sum < 10)
3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          try
3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (sum > 5)
3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project              return sum;
3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            sum += 1;
3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          catch (e)
3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            sum += 1;
3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            print(e);
3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    finally
3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      try
3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum +=1;
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In finally block of addValues_3() function: sum = " + sum);
3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      catch (e if e == 42)
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum +=1;
3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print('In finally catch block of addValues_3() function: sum = ' + sum + ', e = ' + e);
3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      finally
3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum +=1;
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In finally finally block of addValues_3() function: sum = " + sum);
3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return sum;
3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(9);
3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj = new Object();
3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg1 = 1;
3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg2 = 2;
3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3 = new Object();
3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.a = 10;
3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.b = 20;
3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = addValues_3(obj);
3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 8;
3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction addValues_4(obj)
3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var sum = 0;
3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (obj)
3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      sum = arg1 + arg2;
3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      with (arg3)
3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        while (sum < 10)
3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          try
3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            if (sum > 5)
3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project              return sum;
3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            sum += 1;
3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          catch (e)
3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            sum += 1;
4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            print(e);
4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    finally
4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      try
4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum += 1;
4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In finally block of addValues_4() function: sum = " + sum);
4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      catch (e if e == 42)
4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum += 1;
4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In 1st finally catch block of addValues_4() function: sum = " + sum + ", e = " + e);
4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      catch (e if e == 43)
4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum += 1;
4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In 2nd finally catch block of addValues_4() function: sum = " + sum + ", e = " + e);
4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      finally
4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum += 1;
4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In finally finally block of addValues_4() function: sum = " + sum);
4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return sum;
4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(10);
4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj = new Object();
4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg1 = 1;
4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg2 = 2;
4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3 = new Object();
4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.a = 10;
4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.b = 20;
4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = addValues_4(obj);
4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 8;
4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction addValues_5(obj)
4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var sum = 0;
4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  with (obj)
4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      sum = arg1 + arg2;
4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      with (arg3)
4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        while (sum < 10)
4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        {
4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          try
4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project           if (sum > 5)
4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project             return sum;
4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project           sum += 1;
4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          catch (e)
4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          {
4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            sum += 1;
4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project            print(e);
4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project          }
4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        }
4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    finally
4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      try
4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum += 1;
4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In finally block of addValues_5() function: sum = " + sum);
4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      catch (e)
4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum += 1;
4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In finally catch block of addValues_5() function: sum = " + sum + ", e = " + e);
4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      finally
4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      {
4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        sum += 1;
4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        print("In finally finally block of addValues_5() function: sum = " + sum);
4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        return sum;
4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      }
4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
4938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(11);
4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj = new Object();
4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg1 = 1;
4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg2 = 2;
5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3 = new Object();
5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.a = 10;
5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj.arg3.b = 20;
5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = addValues_5(obj);
5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 8;
5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
5068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction testObj(obj)
5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  var x = 42;
5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  try
5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    with (obj)
5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      if (obj.p)
5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        throw obj.p;
5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      x = obj.q;
5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
5238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  finally
5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    print("in finally block of testObj() function");
5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    return 999;
5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(12);
5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectobj = {p:43};
5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactual = testObj(obj);
5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 999;
5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Next two cases are from http://bugzilla.mozilla.org/show_bug.cgi?id=120571
5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction a120571()
5428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  while(0)
5448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
5458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
5468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
5478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    catch(e)
5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      continue;
5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// this caused a crash! Test to see that it doesn't now.
5568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint(a120571);
5578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Now test that we have a non-null value for a120571.toString()
5598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(13);
5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttry
5618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  actual = a120571.toString().match(/continue/)[0];
5638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectcatch(e)
5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  actual = 'FAILED! Did not find "continue" in function body';
5678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'continue';
5698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction b()
5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  for(;;)
5778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
5788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    try
5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
5808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
5818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    catch(e)
5828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    {
5838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project      continue;
5848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    }
5858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// this caused a crash!!! Test to see that it doesn't now.
5898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectprint(b);
5908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Now test that we have a non-null value for b.toString()
5928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(14);
5938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttry
5948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  actual = b.toString().match(/continue/)[0];
5968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
5978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectcatch(e)
5988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
5998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  actual = 'FAILED! Did not find "continue" in function body';
6008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
6018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpect = 'continue';
6028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectcaptureThis();
6038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-----------------------------------------------------------------------------
6098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttest();
6108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-----------------------------------------------------------------------------
6118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction captureThis()
6158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
6168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  statusitems[UBound] = status;
6178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  actualvalues[UBound] = actual;
6188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  expectedvalues[UBound] = expect;
6198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  UBound++;
6208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
6218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction test()
6248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
6258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  enterFunc ('test');
6268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  printBugNumber (bug);
6278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  printStatus (summary);
6288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  for (var i=0; i<UBound; i++)
6308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
6318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
6328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
6338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  exitFunc ('test');
6358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
636