summaryrefslogtreecommitdiffstats
path: root/js/src/tests/test262/ch07/7.8/7.8.5
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/tests/test262/ch07/7.8/7.8.5')
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js20
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js13
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js36
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js31
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js36
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js56
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js14
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js31
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js55
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js15
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js21
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js26
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.js17
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.2.js20
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/browser.js0
-rw-r--r--js/src/tests/test262/ch07/7.8/7.8.5/shell.js0
54 files changed, 1189 insertions, 0 deletions
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js
new file mode 100644
index 000000000..a8fe6e29f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1.js
@@ -0,0 +1,20 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+/**
+ * @path ch07/7.8/7.8.5/7.8.5-1.js
+ * @description Literal RegExp Objects - SyntaxError exception is thrown if the RegularExpressionNonTerminator position of a RegularExpressionBackslashSequence is a LineTerminator.
+ */
+
+
+function testcase() {
+ try {
+ eval("var regExp = /\\\rn/;");
+ return false;
+ } catch (e) {
+ return e instanceof SyntaxError;
+ }
+ }
+runTestCase(testcase);
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js
new file mode 100644
index 000000000..4b22a6193
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-1gs.js
@@ -0,0 +1,15 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch07/7.8/7.8.5/7.8.5-1gs.js
+ * @description Empty literal RegExp should result in a SyntaxError
+ * @negative ^((?!NotEarlyError).)*$
+ */
+
+throw NotEarlyError;
+var re = //;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js
new file mode 100644
index 000000000..b67638b03
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/7.8.5-2gs.js
@@ -0,0 +1,13 @@
+/// Copyright (c) 2012 Ecma International. All rights reserved.
+/// Ecma International makes this code available under the terms and conditions set
+/// forth on http://hg.ecmascript.org/tests/test262/raw-file/tip/LICENSE (the
+/// "Use Terms"). Any redistribution of this code must retain the above
+/// copyright and this notice and otherwise comply with the Use Terms.
+
+/**
+ * @path ch07/7.8/7.8.5/7.8.5-2gs.js
+ * @description Empty dynamic RegExp should not result in a SyntaxError
+ */
+
+var re = new RegExp("");
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js
new file mode 100644
index 000000000..638177170
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: NonTerminator but not * or \ or /,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.1_T1.js
+ * @description Without eval
+ */
+
+//CHECK#1
+if (/1/.source !== "1") {
+ $ERROR('#1: /1/');
+}
+
+//CHECK#2
+if (/a/.source !== "a") {
+ $ERROR('#2: /a/');
+}
+
+//CHECK#3
+if (/;/.source !== ";") {
+ $ERROR('#3: /;/');
+}
+
+//CHECK#4
+if (/ /.source !== " ") {
+ $ERROR('#4: / /');
+}
+
+//CHECK#5
+if (/\u0041/.source !== "\\u0041") {
+ $ERROR('#5: /\\u0041/');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js
new file mode 100644
index 000000000..e46d2e24d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: NonTerminator but not * or \ or /,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.1_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js
new file mode 100644
index 000000000..d7013d049
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T1.js
+ * @description *
+ * @negative
+ */
+
+//CHECK#1
+/*/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js
new file mode 100644
index 000000000..b050d8c53
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T2.js
+ * @description \
+ * @negative
+ */
+
+//CHECK#1
+/\/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js
new file mode 100644
index 000000000..abd943bac
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T3.js
+ * @description /
+ * @negative
+ */
+
+//CHECK#1
+///
+.source;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js
new file mode 100644
index 000000000..6d341f991
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: * or \ or / or [empty] is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.2_T4.js
+ * @description [empty]
+ * @negative
+ */
+
+//CHECK#1
+//
+.source;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js
new file mode 100644
index 000000000..4fdba3e4c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js
new file mode 100644
index 000000000..a2ac51235
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u000A/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Line Feed is incorrect. Actual: ' + (eval("/\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js
new file mode 100644
index 000000000..95d7ebcd6
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js
new file mode 100644
index 000000000..638eecf69
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u000D/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Carriage Return is incorrect. Actual: ' + (eval("/\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js
new file mode 100644
index 000000000..c621df543
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u2028/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Line separator is incorrect. Actual: ' + (eval("/\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js
new file mode 100644
index 000000000..1ad88db22
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.3_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\u2029/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: Paragraph separator is incorrect. Actual: ' + (eval("/\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js
new file mode 100644
index 000000000..0c87e0b3d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.4_T1.js
+ * @description Check similar to (/\1/.source === "\\1")
+ */
+
+//CHECK#1
+if (/\1/.source !== "\\1") {
+ $ERROR('#1: /\\1/');
+}
+
+//CHECK#2
+if (/\a/.source !== "\\a") {
+ $ERROR('#2: /\\a/');
+}
+
+//CHECK#3
+if (/\;/.source !== "\\;") {
+ $ERROR('#3: /\\;/');
+}
+
+//CHECK#4
+if (/\ /.source !== "\\ ") {
+ $ERROR('#4: /\\ /');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js
new file mode 100644
index 000000000..f17d8332a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionChars :: [empty], RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.4_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "\\" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js
new file mode 100644
index 000000000..94a9734d0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js
new file mode 100644
index 000000000..923e3f737
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u000A/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (eval("/\\\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js
new file mode 100644
index 000000000..3c349c10b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js
new file mode 100644
index 000000000..e5b89920a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u000D/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (eval("/\\\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js
new file mode 100644
index 000000000..a9b6d9696
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u2028/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (eval("/\\\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js
new file mode 100644
index 000000000..73345ed41
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFirstChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A1.5_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/\\\u2029/").source;
+ $ERROR('#1.1: RegularExpressionFirstChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (eval("/\\\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionFirstChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js
new file mode 100644
index 000000000..5b69da20d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js
@@ -0,0 +1,36 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: NonTerminator but not \ or /,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.1_T1.js
+ * @description Without eval
+ */
+
+//CHECK#1
+if (/1a/.source !== "1a") {
+ $ERROR('#1: /1a/');
+}
+
+//CHECK#2
+if (/aa/.source !== "aa") {
+ $ERROR('#2: /aa/');
+}
+
+//CHECK#3
+if (/,;/.source !== ",;") {
+ $ERROR('#3: /,;/');
+}
+
+//CHECK#4
+if (/ /.source !== " ") {
+ $ERROR('#4: / /');
+}
+
+//CHECK#5
+if (/a\u0041/.source !== "a\\u0041") {
+ $ERROR('#5: /a\\u0041/');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js
new file mode 100644
index 000000000..b8e66b23e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js
@@ -0,0 +1,56 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: NonTerminator but not \ or /,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.1_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "nnnn" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js
new file mode 100644
index 000000000..8231c0407
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: \ or / is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.2_T1.js
+ * @description \
+ * @negative
+ */
+
+//CHECK#1
+/a\/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js
new file mode 100644
index 000000000..b80f21691
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js
@@ -0,0 +1,14 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: \ or / is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.2_T2.js
+ * @description /
+ * @negative
+ */
+
+//CHECK#1
+/a//.source;
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js
new file mode 100644
index 000000000..fd42341e0
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js
new file mode 100644
index 000000000..8f3523088
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\u000A/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Line Feedis incorrect. Actual: ' + (eval("/a\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js
new file mode 100644
index 000000000..c9debb5c5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js
new file mode 100644
index 000000000..4c2dda384
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\u000D/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Carriage Retur is incorrect. Actual: ' + (eval("/a\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Carriage Retur is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js
new file mode 100644
index 000000000..85d43801f
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\u2028/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Line separator is incorrect. Actual: ' + (eval("/a\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js
new file mode 100644
index 000000000..abf9833c5
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.3_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/s\u2029/").source;
+ $ERROR('#1.1: RegularExpressionChar :: Paragraph separator is incorrect. Actual: ' + (eval("/s\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js
new file mode 100644
index 000000000..8a67dc42a
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js
@@ -0,0 +1,31 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.4_T1.js
+ * @description Check similar to (/a\1/.source === "a\\1")
+ */
+
+//CHECK#1
+if (/a\1/.source !== "a\\1") {
+ $ERROR('#1: /a\\1/');
+}
+
+//CHECK#2
+if (/a\a/.source !== "a\\a") {
+ $ERROR('#2: /a\\a/');
+}
+
+//CHECK#3
+if (/,\;/.source !== ",\\;") {
+ $ERROR('#3: /,\\;/');
+}
+
+//CHECK#4
+if (/ \ /.source !== " \\ ") {
+ $ERROR('#4: / \\ /');
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js
new file mode 100644
index 000000000..fa26a976b
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js
@@ -0,0 +1,55 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \NonTerminator,
+ * RegularExpressionFlags :: [empty]
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.4_T2.js
+ * @description Complex test with eval, using syntax pattern
+ */
+
+//CHECK
+var errorCount = 0;
+var count = 0;
+var hex = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"];
+for (var i1 = 0; i1 < 16; i1++) {
+ for (var i2 = 0; i2 < 16; i2++) {
+ for (var i3 = 0; i3 < 16; i3++) {
+ for (var i4 = 0; i4 < 16; i4++) {
+ try {
+ var uu = hex[i1] + hex[i2] + hex[i3] + hex[i4];
+ var Elimination =
+ ((uu === "002A") || (uu === "002F") || (uu === "005C") || (uu === "002B") ||
+ (uu === "003F") || (uu === "0028") || (uu === "0029") ||
+ (uu === "005B") || (uu === "005D") || (uu === "007B") || (uu === "007D"));
+ /*
+ * \u002A / \u002F \ \u005C + \u002B
+ ? \u003F ( \u0028 ) \u0029
+ [ \u005B ] \u005D { \u007B } \u007D
+ */
+ var LineTerminator = ((uu === "000A") || (uu === "000D") || (uu === "2028") || (uu === "2029"));
+ if ((Elimination || LineTerminator ) === false) {
+ var xx = "a\\" + String.fromCharCode("0x" + uu);
+ var pattern = eval("/" + xx + "/");
+ if (pattern.source !== xx) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ } else {
+ count--;
+ }
+ } catch (e) {
+ $ERROR('#' + uu + ' ');
+ errorCount++;
+ }
+ count++;
+ }
+ }
+ }
+}
+
+if (errorCount > 0) {
+ $ERROR('Total error: ' + errorCount + ' bad Regular Expression First Char in ' + count);
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js
new file mode 100644
index 000000000..a3d5e5b4e
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T1.js
+ * @description Line Feed, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js
new file mode 100644
index 000000000..685ada093
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T2.js
+ * @description Line Feed, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u000A/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (eval("/a\\\u000A/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Line Feed is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js
new file mode 100644
index 000000000..e85821870
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js
@@ -0,0 +1,15 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T3.js
+ * @description Carriage Return, without eval
+ * @negative
+ */
+
+//CHECK#1
+/a\
+/
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js
new file mode 100644
index 000000000..5cdea0817
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T4.js
+ * @description Carriage Return, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u000D/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (eval("/a\\\u000D/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Carriage Return is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js
new file mode 100644
index 000000000..acc1f3080
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T5.js
+ * @description Line separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u2028/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (eval("/a\\\u2028/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Line separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js
new file mode 100644
index 000000000..d33041021
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js
@@ -0,0 +1,21 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionChar :: BackslashSequence :: \LineTerminator is incorrect
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A2.5_T6.js
+ * @description Paragraph separator, with eval
+ */
+
+//CHECK#1
+try {
+ eval("/a\\\u2029/").source;
+ $ERROR('#1.1: RegularExpressionChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (eval("/a\\\u2029/").source));
+}
+catch (e) {
+ if ((e instanceof SyntaxError) !== true) {
+ $ERROR('#1.2: RegularExpressionChar :: BackslashSequence :: \\Paragraph separator is incorrect. Actual: ' + (e));
+ }
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js
new file mode 100644
index 000000000..14ea4d7ea
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T1.js
+ * @description IdentifierPart :: g
+ */
+
+//CHECK#1
+var regexp = /(?:)/g;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js
new file mode 100644
index 000000000..f247140d2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T2.js
+ * @description IdentifierPart :: i
+ */
+
+//CHECK#1
+var regexp = /(?:)/i;
+if (regexp.global !== false) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === false. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js
new file mode 100644
index 000000000..4f0e6f14d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T3.js
+ * @description IdentifierPart :: m
+ */
+
+//CHECK#1
+var regexp = /(?:)/m;
+if (regexp.global !== false) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === false. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js
new file mode 100644
index 000000000..fd56ca01c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T4.js
+ * @description IdentifierPart :: gi
+ */
+
+//CHECK#1
+var regexp = /(?:)/gi;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== false) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === false. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js
new file mode 100644
index 000000000..3b45a94ca
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T5.js
+ * @description IdentifierPart :: mg
+ */
+
+//CHECK#1
+var regexp = /(?:)/mg;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== false) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === false. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js
new file mode 100644
index 000000000..fb188ed6c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js
@@ -0,0 +1,26 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T6.js
+ * @description IdentifierPart :: mig
+ */
+
+//CHECK#1
+var regexp = /(?:)/mig;
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/g; regexp.global === true. Actual: ' + (regexp.global));
+}
+
+//CHECK#2
+if (regexp.ignoreCase !== true) {
+ $ERROR('#2: var regexp = /(?:)/g; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
+//CHECK#3
+if (regexp.multiline !== true) {
+ $ERROR('#3: var regexp = /(?:)/g; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js
new file mode 100644
index 000000000..299241d4c
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T7.js
+ * @description IdentifierPart :: \u0067 (g)
+ */
+
+//CHECK#1
+var regexp;
+eval("regexp = /(?:)/\u0067");
+if (regexp.global !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u0067; regexp.global === true. Actual: ' + (regexp.global));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js
new file mode 100644
index 000000000..de78b6f23
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T8.js
+ * @description IdentifierPart :: \u0069 (i)
+ */
+
+//CHECK#1
+var regexp;
+eval("regexp = /(?:)/\u0069");
+if (regexp.ignoreCase !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u0069; regexp.ignoreCase === true. Actual: ' + (regexp.ignoreCase));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js
new file mode 100644
index 000000000..132586af4
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * RegularExpressionFlags :: IdentifierPart
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A3.1_T9.js
+ * @description IdentifierPart :: \u006D (m)
+ */
+
+//CHECK#1
+var regexp;
+eval("regexp = /(?:)/\u006D");
+if (regexp.multiline !== true) {
+ $ERROR('#1: var regexp = /(?:)/\\u006D; regexp.multiline === true. Actual: ' + (regexp.multiline));
+}
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.js
new file mode 100644
index 000000000..d8f33d67d
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.1.js
@@ -0,0 +1,17 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * A regular expression literal is an input element that is converted to
+ * a RegExp object when it is scanned
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A4.1.js
+ * @description Check ((/(?:)/ instanceof RegExp) === true)
+ */
+
+//CHECK#1
+if ((/(?:)/ instanceof RegExp) !== true) {
+ $ERROR('#1: (/(?:)/ instanceof RegExp) === true. Actual: ' + ((/(?:)/ instanceof RegExp)));
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.2.js b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.2.js
new file mode 100644
index 000000000..569e4cbd2
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/S7.8.5_A4.2.js
@@ -0,0 +1,20 @@
+// Copyright 2009 the Sputnik authors. All rights reserved.
+// This code is governed by the BSD license found in the LICENSE file.
+
+/**
+ * Two regular expression literals in a program evaluate to
+ * regular expression objects that never compare as === to each other even
+ * if the two literals' contents are identical
+ *
+ * @path ch07/7.8/7.8.5/S7.8.5_A4.2.js
+ * @description Check equality two regular expression literals
+ */
+
+//CHECK#1
+var regexp1 = /(?:)/;
+var regexp2 = /(?:)/;
+if (regexp1 === regexp2) {
+ $ERROR('#1: var regexp1 = /(?:)/; var regexp2 = /(?:)/; regexp1 !== regexp2');
+}
+
+
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/browser.js b/js/src/tests/test262/ch07/7.8/7.8.5/browser.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/browser.js
diff --git a/js/src/tests/test262/ch07/7.8/7.8.5/shell.js b/js/src/tests/test262/ch07/7.8/7.8.5/shell.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/js/src/tests/test262/ch07/7.8/7.8.5/shell.js