summaryrefslogtreecommitdiffstats
path: root/js/src/tests/js1_4
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/js1_4')
-rw-r--r--js/src/tests/js1_4/Eval/browser.js0
-rw-r--r--js/src/tests/js1_4/Eval/eval-001.js57
-rw-r--r--js/src/tests/js1_4/Eval/eval-002.js63
-rw-r--r--js/src/tests/js1_4/Eval/eval-003.js67
-rw-r--r--js/src/tests/js1_4/Eval/regress-531682.js34
-rw-r--r--js/src/tests/js1_4/Eval/shell.js0
-rw-r--r--js/src/tests/js1_4/Functions/browser.js0
-rw-r--r--js/src/tests/js1_4/Functions/function-001.js89
-rw-r--r--js/src/tests/js1_4/Functions/shell.js0
-rw-r--r--js/src/tests/js1_4/README1
-rw-r--r--js/src/tests/js1_4/Regress/browser.js0
-rw-r--r--js/src/tests/js1_4/Regress/function-001.js62
-rw-r--r--js/src/tests/js1_4/Regress/function-002.js107
-rw-r--r--js/src/tests/js1_4/Regress/function-003.js60
-rw-r--r--js/src/tests/js1_4/Regress/function-004-n.js37
-rw-r--r--js/src/tests/js1_4/Regress/regress-7224.js57
-rw-r--r--js/src/tests/js1_4/Regress/shell.js0
-rw-r--r--js/src/tests/js1_4/Regress/toString-001-n.js37
-rw-r--r--js/src/tests/js1_4/browser.js0
-rw-r--r--js/src/tests/js1_4/shell.js0
20 files changed, 671 insertions, 0 deletions
diff --git a/js/src/tests/js1_4/Eval/browser.js b/js/src/tests/js1_4/Eval/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/Eval/browser.js
diff --git a/js/src/tests/js1_4/Eval/eval-001.js b/js/src/tests/js1_4/Eval/eval-001.js
new file mode 100644
index 000000000..3c4ef94f0
--- /dev/null
+++ b/js/src/tests/js1_4/Eval/eval-001.js
@@ -0,0 +1,57 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: eval-001.js
+ * Original Description: (SEE REVISED DESCRIPTION FURTHER BELOW)
+ *
+ * The global eval function may not be accessed indirectly and then called.
+ * This feature will continue to work in JavaScript 1.3 but will result in an
+ * error in JavaScript 1.4. This restriction is also in place for the With and
+ * Closure constructors.
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324451
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ *
+ *
+ * REVISION: 05 February 2001
+ * Author: pschwartau@netscape.com
+ *
+ * Indirect eval IS NOT ILLEGAL per ECMA3!!! See
+ *
+ * http://bugzilla.mozilla.org/show_bug.cgi?id=38512
+ *
+ * ------- Additional Comments From Brendan Eich 2001-01-30 17:12 -------
+ * ECMA-262 Edition 3 doesn't require implementations to throw EvalError,
+ * see the short, section-less Chapter 16. It does say an implementation that
+ * doesn't throw EvalError must allow assignment to eval and indirect calls
+ * of the evalnative method.
+ *
+ */
+var SECTION = "eval-001.js";
+var VERSION = "JS1_4";
+var TITLE = "Calling eval indirectly should NOT fail in version 140";
+var BUGNUMBER="38512";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var MY_EVAL = eval;
+var RESULT = "";
+var EXPECT = "abcdefg";
+
+MY_EVAL( "RESULT = EXPECT" );
+
+new TestCase(
+ SECTION,
+ "Call eval indirectly",
+ EXPECT,
+ RESULT );
+
+test();
+
diff --git a/js/src/tests/js1_4/Eval/eval-002.js b/js/src/tests/js1_4/Eval/eval-002.js
new file mode 100644
index 000000000..9f96f6e5b
--- /dev/null
+++ b/js/src/tests/js1_4/Eval/eval-002.js
@@ -0,0 +1,63 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: eval-002.js
+ * Description: (SEE REVISED DESCRIPTION FURTHER BELOW)
+ *
+ * The global eval function may not be accessed indirectly and then called.
+ * This feature will continue to work in JavaScript 1.3 but will result in an
+ * error in JavaScript 1.4. This restriction is also in place for the With and
+ * Closure constructors.
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324451
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ *
+ *
+ * REVISION: 05 February 2001
+ * Author: pschwartau@netscape.com
+ *
+ * Indirect eval IS NOT ILLEGAL per ECMA3!!! See
+ *
+ * http://bugzilla.mozilla.org/show_bug.cgi?id=38512
+ *
+ * ------- Additional Comments From Brendan Eich 2001-01-30 17:12 -------
+ * ECMA-262 Edition 3 doesn't require implementations to throw EvalError,
+ * see the short, section-less Chapter 16. It does say an implementation that
+ * doesn't throw EvalError must allow assignment to eval and indirect calls
+ * of the evalnative method.
+ *
+ */
+var SECTION = "eval-002.js";
+var VERSION = "JS1_4";
+var TITLE = "Calling eval indirectly should NOT fail in version 140";
+var BUGNUMBER="38512";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var MY_EVAL = eval;
+var RESULT = "";
+var EXPECT = 1 + "testString"
+
+ EvalTest();
+
+test();
+
+
+function EvalTest()
+{
+ MY_EVAL( "RESULT = EXPECT" );
+
+ new TestCase(
+ SECTION,
+ "Call eval indirectly",
+ EXPECT,
+ RESULT );
+}
+
diff --git a/js/src/tests/js1_4/Eval/eval-003.js b/js/src/tests/js1_4/Eval/eval-003.js
new file mode 100644
index 000000000..d7957d323
--- /dev/null
+++ b/js/src/tests/js1_4/Eval/eval-003.js
@@ -0,0 +1,67 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: eval-003.js
+ * Description: (SEE REVISED DESCRIPTION FURTHER BELOW)
+ *
+ * The global eval function may not be accessed indirectly and then called.
+ * This feature will continue to work in JavaScript 1.3 but will result in an
+ * error in JavaScript 1.4. This restriction is also in place for the With and
+ * Closure constructors.
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324451
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ *
+ *
+ * REVISION: 05 February 2001
+ * Author: pschwartau@netscape.com
+ *
+ * Indirect eval IS NOT ILLEGAL per ECMA3!!! See
+ *
+ * http://bugzilla.mozilla.org/show_bug.cgi?id=38512
+ *
+ * ------- Additional Comments From Brendan Eich 2001-01-30 17:12 -------
+ * ECMA-262 Edition 3 doesn't require implementations to throw EvalError,
+ * see the short, section-less Chapter 16. It does say an implementation that
+ * doesn't throw EvalError must allow assignment to eval and indirect calls
+ * of the evalnative method.
+ *
+ */
+var SECTION = "eval-003.js";
+var VERSION = "JS1_4";
+var TITLE = "Calling eval indirectly should NOT fail in version 140";
+var BUGNUMBER="38512";
+
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var MY_EVAL = eval;
+var RESULT = "";
+var EXPECT= "";
+var h = function f(x,y){var g = function(z){return Math.exp(z);}; return g(x+y);};
+
+
+new EvalTest();
+
+test();
+
+function EvalTest()
+{
+ with( this ) {
+ MY_EVAL( "RESULT = h(-1, 1)" );
+ EXPECT = 1; //The base e to the power (-1 + 1), i.e. the power 0, equals 1 ....
+
+ new TestCase(
+ SECTION,
+ "Call eval indirectly",
+ EXPECT,
+ RESULT );
+ }
+}
+
diff --git a/js/src/tests/js1_4/Eval/regress-531682.js b/js/src/tests/js1_4/Eval/regress-531682.js
new file mode 100644
index 000000000..2969b9817
--- /dev/null
+++ b/js/src/tests/js1_4/Eval/regress-531682.js
@@ -0,0 +1,34 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
+/*
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/licenses/publicdomain/
+ */
+
+//-----------------------------------------------------------------------------
+var BUGNUMBER = 531682;
+var summary = 'Checking proper wrapping of scope in eval(source, scope)';
+var actual;
+var expect;
+
+//-----------------------------------------------------------------------------
+var x = 0;
+
+test();
+//-----------------------------------------------------------------------------
+
+function scope1() {
+ eval('var x = 1;');
+ return function() { return x; }
+}
+
+function test() {
+ enterFunc ('test');
+ printBugNumber(BUGNUMBER);
+ printStatus (summary);
+
+ // The scope chain in eval should be just scope1() and the global object.
+ actual = eval('x', scope1());
+ expect = 0;
+ reportCompare(expect, actual, summary);
+ exitFunc ('test');
+}
diff --git a/js/src/tests/js1_4/Eval/shell.js b/js/src/tests/js1_4/Eval/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/Eval/shell.js
diff --git a/js/src/tests/js1_4/Functions/browser.js b/js/src/tests/js1_4/Functions/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/Functions/browser.js
diff --git a/js/src/tests/js1_4/Functions/function-001.js b/js/src/tests/js1_4/Functions/function-001.js
new file mode 100644
index 000000000..e00825e14
--- /dev/null
+++ b/js/src/tests/js1_4/Functions/function-001.js
@@ -0,0 +1,89 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: function-001.js
+ * Description:
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=324455
+ *
+ * Earlier versions of JavaScript supported access to the arguments property
+ * of the function object. This property held the arguments to the function.
+ * function f() {
+ * return f.arguments[0]; // deprecated
+ * }
+ * var x = f(3); // x will be 3
+ *
+ * This feature is not a part of the final ECMA standard. Instead, scripts
+ * should simply use just "arguments":
+ *
+ * function f() {
+ * return arguments[0]; // okay
+ * }
+ *
+ * var x = f(3); // x will be 3
+ *
+ * Again, this feature was motivated by performance concerns. Access to the
+ * arguments property is not threadsafe, which is of particular concern in
+ * server environments. Also, the compiler can generate better code for
+ * functions because it can tell when the arguments are being accessed only by
+ * name and avoid setting up the arguments object.
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ */
+var SECTION = "function-001.js";
+var VERSION = "JS1_4";
+var TITLE = "Accessing the arguments property of a function object";
+var BUGNUMBER="324455";
+startTest();
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+new TestCase(
+ SECTION,
+ "return function.arguments",
+ "P",
+ TestFunction_2("P", "A","S","S")[0] +"");
+
+
+new TestCase(
+ SECTION,
+ "return arguments",
+ "P",
+ TestFunction_1( "P", "A", "S", "S" )[0] +"");
+
+new TestCase(
+ SECTION,
+ "return arguments when function contains an arguments property",
+ "PASS",
+ TestFunction_3( "P", "A", "S", "S" ) +"");
+
+new TestCase(
+ SECTION,
+ "return function.arguments when function contains an arguments property",
+ "[object Arguments]",
+ TestFunction_4( "F", "A", "I", "L" ) +"");
+
+test();
+
+function TestFunction_1( a, b, c, d, e ) {
+ return arguments;
+}
+
+function TestFunction_2( a, b, c, d, e ) {
+ return TestFunction_2.arguments;
+}
+
+function TestFunction_3( a, b, c, d, e ) {
+ var arguments = "PASS";
+ return arguments;
+}
+
+function TestFunction_4( a, b, c, d, e ) {
+ var arguments = "FAIL";
+ return TestFunction_4.arguments;
+}
+
diff --git a/js/src/tests/js1_4/Functions/shell.js b/js/src/tests/js1_4/Functions/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/Functions/shell.js
diff --git a/js/src/tests/js1_4/README b/js/src/tests/js1_4/README
new file mode 100644
index 000000000..53a00cf68
--- /dev/null
+++ b/js/src/tests/js1_4/README
@@ -0,0 +1 @@
+JavaScript 1.4
diff --git a/js/src/tests/js1_4/Regress/browser.js b/js/src/tests/js1_4/Regress/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/browser.js
diff --git a/js/src/tests/js1_4/Regress/function-001.js b/js/src/tests/js1_4/Regress/function-001.js
new file mode 100644
index 000000000..43669e9c1
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/function-001.js
@@ -0,0 +1,62 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: function-001.js
+ * Description:
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=325843
+ * js> function f(a){var a,b;}
+ *
+ * causes an an assert on a null 'sprop' in the 'Variables' function in
+ * jsparse.c This will crash non-debug build.
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ */
+var SECTION = "function-001.js";
+var VERSION = "JS1_4";
+var TITLE = "Regression test case for 325843";
+var BUGNUMBER="3258435";
+startTest();
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+eval("function f1 (a){ var a,b; }");
+
+function f2( a ) { var a, b; };
+
+new TestCase(
+ SECTION,
+ "eval(\"function f1 (a){ var a,b; }\"); "+
+ "function f2( a ) { var a, b; }; typeof f1",
+ "function",
+ typeof f1 );
+
+// force a function decompilation
+
+new TestCase(
+ SECTION,
+ "typeof f1.toString()",
+ "string",
+ typeof f1.toString() );
+
+new TestCase(
+ SECTION,
+ "typeof f2",
+ "function",
+ typeof f2 );
+
+// force a function decompilation
+
+new TestCase(
+ SECTION,
+ "typeof f2.toString()",
+ "string",
+ typeof f2.toString() );
+
+test();
+
diff --git a/js/src/tests/js1_4/Regress/function-002.js b/js/src/tests/js1_4/Regress/function-002.js
new file mode 100644
index 000000000..c1596db7c
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/function-002.js
@@ -0,0 +1,107 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: function-002.js
+ * Description:
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=330462
+ * js> function f(a){var a,b;}
+ *
+ * causes an an assert on a null 'sprop' in the 'Variables' function in
+ * jsparse.c This will crash non-debug build.
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ * REVISED: 04 February 2001
+ * (changed the comma expressions from trivial to non-trivial)
+ * Author: pschwartau@netscape.com
+ *
+ * Brendan: "The test seemed to require something that ECMA does not
+ * guarantee, and that JS1.4 didn't either. For example, given
+ *
+ * dec2 = "function f2(){1,2}";
+ *
+ * the engine is free to decompile a function object compiled from this source,
+ * via Function.prototype.toString(), into some other string that compiles to
+ * an equivalent function. The engine now eliminates the useless comma expression
+ * 1,2, giving function f2(){}. This should be legal by the testsuite's lights."
+ *
+ */
+var SECTION = "function-002.js";
+var VERSION = "JS1_4";
+var TITLE = "Regression test case for 325843";
+var BUGNUMBER="330462";
+
+startTest();
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+dec1 = "function f1(x,y){++x, --y}";
+dec2 = "function f2(){var y; f1(1,2); y=new Date(); print(y.toString())}";
+
+eval(dec1);
+eval(dec2);
+
+new TestCase(
+ SECTION,
+ "typeof f1",
+ "function",
+ typeof f1 );
+
+
+// force a function decompilation
+new TestCase(
+ SECTION,
+ "f1.toString() == dec1",
+ true,
+ StripSpaces(f1.toString()) == StripSpaces(dec1));
+
+new TestCase(
+ SECTION,
+ "typeof f2",
+ "function",
+ typeof f2 );
+
+// force a function decompilation
+
+new TestCase(
+ SECTION,
+ "f2.toString() == dec2",
+ true,
+ StripSpaces(f2.toString().replace(/new Date\(\)/g, 'new Date')) ==
+ StripSpaces(dec2.replace(/new Date\(\)/g, 'new Date')));
+
+test();
+
+function StripSpaces( s ) {
+ var strippedString = "";
+ for ( var currentChar = 0; currentChar < s.length; currentChar++ ) {
+ if (!IsWhiteSpace(s.charAt(currentChar))) {
+ strippedString += s.charAt(currentChar);
+ }
+ }
+ return strippedString;
+}
+
+function IsWhiteSpace( string ) {
+ var cc = string.charCodeAt(0);
+
+ switch (cc) {
+ case (0x0009):
+ case (0x000B):
+ case (0x000C):
+ case (0x0020):
+ case (0x000A):
+ case (0x000D):
+ case ( 59 ): // let's strip out semicolons, too
+ return true;
+ break;
+ default:
+ return false;
+ }
+}
+
diff --git a/js/src/tests/js1_4/Regress/function-003.js b/js/src/tests/js1_4/Regress/function-003.js
new file mode 100644
index 000000000..157e926db
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/function-003.js
@@ -0,0 +1,60 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: function-003.js
+ * Description:
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=104766
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ */
+var SECTION = "toString-001.js";
+var VERSION = "JS1_4";
+var TITLE = "Regression test case for 104766";
+var BUGNUMBER="310514";
+
+startTest();
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+new TestCase(
+ SECTION,
+ "StripSpaces(Array.prototype.concat.toString()).substring(0,17)",
+ "functionconcat(){",
+ StripSpaces(Array.prototype.concat.toString()).substring(0,17));
+
+test();
+
+function StripSpaces( s ) {
+ for ( var currentChar = 0, strippedString="";
+ currentChar < s.length; currentChar++ )
+ {
+ if (!IsWhiteSpace(s.charAt(currentChar))) {
+ strippedString += s.charAt(currentChar);
+ }
+ }
+ return strippedString;
+}
+
+function IsWhiteSpace( string ) {
+ var cc = string.charCodeAt(0);
+ switch (cc) {
+ case (0x0009):
+ case (0x000B):
+ case (0x000C):
+ case (0x0020):
+ case (0x000A):
+ case (0x000D):
+ case ( 59 ): // let's strip out semicolons, too
+ return true;
+ break;
+ default:
+ return false;
+ }
+}
+
diff --git a/js/src/tests/js1_4/Regress/function-004-n.js b/js/src/tests/js1_4/Regress/function-004-n.js
new file mode 100644
index 000000000..36d3dbfea
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/function-004-n.js
@@ -0,0 +1,37 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: function-004.js
+ * Description:
+ *
+ * http://scopus.mcom.com/bugsplat/show_bug.cgi?id=310502
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ */
+var SECTION = "funtion-004-n.js";
+var VERSION = "JS1_4";
+var TITLE = "Regression test case for 310502";
+var BUGNUMBER="310502";
+
+startTest();
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var o = {};
+o.call = Function.prototype.call;
+
+DESCRIPTION = "var o = {}; o.call = Function.prototype.call; o.call()";
+EXPECTED = "error";
+
+new TestCase(
+ SECTION,
+ "var o = {}; o.call = Function.prototype.call; o.call()",
+ "error",
+ o.call() );
+
+test();
diff --git a/js/src/tests/js1_4/Regress/regress-7224.js b/js/src/tests/js1_4/Regress/regress-7224.js
new file mode 100644
index 000000000..fe248f38d
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/regress-7224.js
@@ -0,0 +1,57 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: regress-7224.js
+ * Reference: js1_2
+ * Description: Remove support for the arg
+ * Author: ** replace with your e-mail address **
+ */
+
+var SECTION = "regress"; // provide a document reference (ie, ECMA section)
+var VERSION = "JS1_4"; // Version of JavaScript or ECMA
+var TITLE = "Regression test for bugzilla #7224"; // Provide ECMA section title or a description
+var BUGNUMBER = "http://bugzilla.mozilla.org/show_bug.cgi?id=7224"; // Provide URL to bugsplat or bugzilla report
+
+startTest(); // leave this alone
+
+/*
+ * Calls to AddTestCase here. AddTestCase is a function that is defined
+ * in shell.js and takes three arguments:
+ * - a string representation of what is being tested
+ * - the expected result
+ * - the actual result
+ *
+ * For example, a test might look like this:
+ *
+ * var zip = /[\d]{5}$/;
+ *
+ * AddTestCase(
+ * "zip = /[\d]{5}$/; \"PO Box 12345 Boston, MA 02134\".match(zip)", // description of the test
+ * "02134", // expected result
+ * "PO Box 12345 Boston, MA 02134".match(zip) ); // actual result
+ *
+ */
+
+var f = new Function( "return arguments.caller" );
+var o = {};
+
+o.foo = f;
+o.foo("a", "b", "c");
+
+
+AddTestCase(
+ "var f = new Function( 'return arguments.caller' ); f()",
+ undefined,
+ f() );
+
+AddTestCase(
+ "var o = {}; o.foo = f; o.foo('a')",
+ undefined,
+ o.foo('a') );
+
+test(); // leave this alone. this executes the test cases and
+// displays results.
diff --git a/js/src/tests/js1_4/Regress/shell.js b/js/src/tests/js1_4/Regress/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/shell.js
diff --git a/js/src/tests/js1_4/Regress/toString-001-n.js b/js/src/tests/js1_4/Regress/toString-001-n.js
new file mode 100644
index 000000000..45abb1f3f
--- /dev/null
+++ b/js/src/tests/js1_4/Regress/toString-001-n.js
@@ -0,0 +1,37 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+
+/**
+ * File Name: toString-001-n.js
+ * Description:
+ *
+ * Function.prototype.toString is not generic.
+ *
+ * Author: christine@netscape.com
+ * Date: 11 August 1998
+ */
+var SECTION = "toString-001.js";
+var VERSION = "JS1_4";
+var TITLE = "Regression test case for 310514";
+var BUGNUMBER="310514";
+
+startTest();
+
+writeHeaderToLog( SECTION + " "+ TITLE);
+
+var o = {};
+o.toString = Function.prototype.toString;
+
+DESCRIPTION = "var o = {}; o.toString = Function.prototype.toString; o.toString();";
+EXPECTED = "error";
+
+new TestCase(
+ SECTION,
+ "var o = {}; o.toString = Function.prototype.toString; o.toString();",
+ "error",
+ o.toString() );
+
+test();
diff --git a/js/src/tests/js1_4/browser.js b/js/src/tests/js1_4/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/browser.js
diff --git a/js/src/tests/js1_4/shell.js b/js/src/tests/js1_4/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/js1_4/shell.js