aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/compress/regexp.js168
-rw-r--r--test/ufuzz/index.js2
2 files changed, 170 insertions, 0 deletions
diff --git a/test/compress/regexp.js b/test/compress/regexp.js
index defc0079..e8b2da73 100644
--- a/test/compress/regexp.js
+++ b/test/compress/regexp.js
@@ -255,3 +255,171 @@ issue_3434_4: {
"false true",
]
}
+
+exec: {
+ options = {
+ evaluate: true,
+ loops: true,
+ unsafe: true,
+ }
+ input: {
+ while (/a/.exec("AAA"))
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect: {
+ for (;null;)
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect_stdout: "PASS"
+}
+
+exec_global: {
+ options = {
+ evaluate: true,
+ loops: true,
+ unsafe: true,
+ }
+ input: {
+ while (/a/g.exec("AAA"))
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect: {
+ for (;null;)
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect_stdout: "PASS"
+}
+
+test: {
+ options = {
+ evaluate: true,
+ unsafe: true,
+ }
+ input: {
+ while (/a/.test("AAA"))
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect: {
+ while (false)
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect_stdout: "PASS"
+}
+
+test_global: {
+ options = {
+ evaluate: true,
+ unsafe: true,
+ }
+ input: {
+ while (/a/g.test("AAA"))
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect: {
+ while (false)
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect_stdout: "PASS"
+}
+
+var_exec: {
+ options = {
+ evaluate: true,
+ loops: true,
+ reduce_vars: true,
+ toplevel: true,
+ unsafe: true,
+ }
+ input: {
+ var r = /a/;
+ while (r.exec("AAA"))
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect: {
+ var r = /a/;
+ for (;null;)
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect_stdout: "PASS"
+}
+
+var_exec_global: {
+ options = {
+ evaluate: true,
+ loops: true,
+ reduce_vars: true,
+ toplevel: true,
+ unsafe: true,
+ }
+ input: {
+ var r = /a/g;
+ while (r.exec("aaa"))
+ console.log("PASS");
+ }
+ expect: {
+ var r = /a/g;
+ for (;r.exec("aaa");)
+ console.log("PASS");
+ }
+ expect_stdout: [
+ "PASS",
+ "PASS",
+ "PASS",
+ ]
+}
+
+var_test: {
+ options = {
+ evaluate: true,
+ reduce_vars: true,
+ toplevel: true,
+ unsafe: true,
+ }
+ input: {
+ var r = /a/;
+ while (r.test("AAA"))
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect: {
+ var r = /a/;
+ while (false)
+ console.log("FAIL");
+ console.log("PASS");
+ }
+ expect_stdout: "PASS"
+}
+
+var_test_global: {
+ options = {
+ evaluate: true,
+ reduce_vars: true,
+ toplevel: true,
+ unsafe: true,
+ }
+ input: {
+ var r = /a/g;
+ while (r.test("aaa"))
+ console.log("PASS");
+ }
+ expect: {
+ var r = /a/g;
+ while (r.test("aaa"))
+ console.log("PASS");
+ }
+ expect_stdout: [
+ "PASS",
+ "PASS",
+ "PASS",
+ ]
+}
diff --git a/test/ufuzz/index.js b/test/ufuzz/index.js
index 7032fc3c..2083a90e 100644
--- a/test/ufuzz/index.js
+++ b/test/ufuzz/index.js
@@ -743,6 +743,8 @@ function _createExpression(recurmax, noComma, stmtDepth, canThrow) {
case p++:
return " /[abc4]/.test(((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + ") || b || 5).toString()) ";
case p++:
+ return " /[abc4]/g.exec(((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + ") || b || 5).toString()) ";
+ case p++:
return " ((" + createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) +
") || " + rng(10) + ").toString()[" +
createExpression(recurmax, COMMA_OK, stmtDepth, canThrow) + "] ";