summaryrefslogtreecommitdiffstats
path: root/js/src/tests/non262/pipeline/precedence.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--js/src/tests/non262/pipeline/precedence.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/js/src/tests/non262/pipeline/precedence.js b/js/src/tests/non262/pipeline/precedence.js
new file mode 100644
index 0000000000..0ef6ff7281
--- /dev/null
+++ b/js/src/tests/non262/pipeline/precedence.js
@@ -0,0 +1,56 @@
+const BUGNUMBER = 1405943;
+const summary = "Implement pipeline operator (operator precedence)";
+
+print(BUGNUMBER + ": " + summary);
+
+if (hasPipeline()) {
+ // Operator precedence
+ eval(`
+ const double = (n) => n * 2;
+ const increment = (n) => n + 1;
+ const getType = (v) => typeof v;
+ const toString = (v) => v.toString();
+ let a = 8;
+ assertEq(10 |> double |> increment |> double, 42);
+ assertEq(++ a |> double, 18);
+ assertEq(typeof 42 |> toString, "number");
+ assertEq(! true |> toString, "false");
+ assertEq(delete 42 |> toString, "true");
+ assertEq(10 ** 2 |> double, 200);
+ assertEq(10 * 2 |> increment, 21);
+ assertEq(5 + 5 |> double, 20);
+ assertEq(1 << 4 |> double, 32);
+ assertEq(0 < 1 |> toString, "true");
+ assertEq("a" in {} |> toString, "false");
+ assertEq(10 instanceof String |> toString, "false");
+ assertEq(10 == 10 |> toString, "true");
+ assertEq(0b0101 & 0b1101 |> increment, 0b0110);
+ assertEq(false && true |> toString, "false");
+ assertEq(0 |> double ? toString : null, null);
+ assertEq(true ? 20 |> toString : 10, '20');
+ assertEq(true ? 10 : 20 |> toString, 10);
+ a = 10 |> toString;
+ assertEq(a, "10");
+ a = 10;
+ a += 2 |> increment;
+ assertEq(a, 13);
+
+ // Right-side association
+ a = toString;
+ assertThrowsInstanceOf(() => "42" |> parseInt ** 2, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt * 1, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt + 0, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt << 1, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt < 0, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt in {}, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt instanceof String, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt == 255, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt & 0b1111, TypeError);
+ assertThrowsInstanceOf(() => "42" |> parseInt && true, TypeError);
+ assertThrowsInstanceOf(() => Function('"42" |> a = parseInt'), ReferenceError);
+ assertThrowsInstanceOf(() => Function('"42" |> a += parseInt'), ReferenceError);
+ `);
+}
+
+if (typeof reportCompare === "function")
+ reportCompare(0, 0);