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): pschwartau@netscape.com, Liorean@user.bip.net
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Alternatively, the contents of this file may be used under the terms of
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* either the GNU General Public License Version 2 or later (the "GPL"), or
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* in which case the provisions of the GPL or the LGPL are applicable instead
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* of those above. If you wish to allow use of your version of this file only
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* under the terms of either the GPL or the LGPL, and not to allow others to
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* use your version of this file under the terms of the NPL, indicate your
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* decision by deleting the provisions above and replace them with the notice
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* and other provisions required by the GPL or the LGPL. If you do not delete
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the provisions above, a recipient may use your version of this file under
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the terms of any one of the NPL, the GPL or the LGPL.
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* ***** END LICENSE BLOCK *****
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date: 30 October 2001
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SUMMARY: Regression test for bug 108440
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* See http://bugzilla.mozilla.org/show_bug.cgi?id=108440
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* We shouldn't crash trying to add an array as an element of itself (!)
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Brendan: "...it appears that Array.prototype.toString is unsafe,
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* and what's more, ECMA-262 Edition 3 has no helpful words about
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* avoiding recursive death on a cycle."
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-----------------------------------------------------------------------------
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = 108440;
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = "Shouldn't crash trying to add an array as an element of itself";
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar self = this;
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar temp = '';
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectprintBugNumber(bug);
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectprintStatus(summary);
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Explicit test:
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar a=[];
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttemp = (a[a.length]=a);
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Implicit test (one of the properties of |self| is |a|)
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[];
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfor(var prop in self)
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  temp = prop;
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  temp = (a[a.length] = self[prop]);
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Stressful explicit test
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[];
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfor (var i=0; i<10; i++)
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  a[a.length] = a;
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Test toString()
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[];
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfor (var i=0; i<10; i++)
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  a[a.length] = a.toString();
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Test toSource() - but Rhino doesn't have this, so try...catch it
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecta=[];
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttry
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  for (var i=0; i<10; i++)
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  {
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    a[a.length] = a.toSource();
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  }
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectcatch(e)
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
104