@@ -0,0 +1,109 @@
1+--TEST--
2+A pipe operator displays as a pipe operator when outputting syntax, with correct parens.
3+--FILE--
4+<?php
5+6+print "Concat, which binds higher\n";
7+8+try {
9+assert(false && foo() . bar() |> baz() . quux());
10+} catch (AssertionError $e) {
11+echo $e->getMessage(), PHP_EOL;
12+}
13+14+try {
15+assert(false && (foo() . bar()) |> baz() . quux());
16+} catch (AssertionError $e) {
17+echo $e->getMessage(), PHP_EOL;
18+}
19+20+try {
21+assert(false && foo() . (bar() |> baz()) . quux());
22+} catch (AssertionError $e) {
23+echo $e->getMessage(), PHP_EOL;
24+}
25+26+try {
27+assert(false && foo() . bar() |> (baz() . quux()));
28+} catch (AssertionError $e) {
29+echo $e->getMessage(), PHP_EOL;
30+}
31+32+try {
33+assert(false && (foo() . bar() |> baz()) . quux());
34+} catch (AssertionError $e) {
35+echo $e->getMessage(), PHP_EOL;
36+}
37+38+try {
39+assert(false && foo() . (bar() |> baz() . quux()));
40+} catch (AssertionError $e) {
41+echo $e->getMessage(), PHP_EOL;
42+}
43+44+print "<, which binds lower\n";
45+46+try {
47+assert(false && foo() < bar() |> baz());
48+} catch (AssertionError $e) {
49+echo $e->getMessage(), PHP_EOL;
50+}
51+52+try {
53+assert(false && (foo() < bar()) |> baz());
54+} catch (AssertionError $e) {
55+echo $e->getMessage(), PHP_EOL;
56+}
57+58+try {
59+assert(false && foo() < (bar() |> baz()));
60+} catch (AssertionError $e) {
61+echo $e->getMessage(), PHP_EOL;
62+}
63+64+try {
65+assert(false && foo() |> bar() < baz());
66+} catch (AssertionError $e) {
67+echo $e->getMessage(), PHP_EOL;
68+}
69+70+try {
71+assert(false && (foo() |> bar()) < baz());
72+} catch (AssertionError $e) {
73+echo $e->getMessage(), PHP_EOL;
74+}
75+76+try {
77+assert(false && foo() |> (bar() < baz()));
78+} catch (AssertionError $e) {
79+echo $e->getMessage(), PHP_EOL;
80+}
81+82+83+84+print "misc examples\n";
85+86+try {
87+assert(false && foo() |> (bar() |> baz(...)));
88+} catch (AssertionError $e) {
89+echo $e->getMessage(), PHP_EOL;
90+}
91+92+?>
93+--EXPECT--
94+Concat, which binds higher
95+assert(false && foo() . bar() |> baz() . quux())
96+assert(false && foo() . bar() |> baz() . quux())
97+assert(false && foo() . (bar() |> baz()) . quux())
98+assert(false && foo() . bar() |> baz() . quux())
99+assert(false && (foo() . bar() |> baz()) . quux())
100+assert(false && foo() . (bar() |> baz() . quux()))
101+<, which binds lower
102+assert(false && foo() < bar() |> baz())
103+assert(false && (foo() < bar()) |> baz())
104+assert(false && foo() < bar() |> baz())
105+assert(false && foo() |> bar() < baz())
106+assert(false && foo() |> bar() < baz())
107+assert(false && foo() |> (bar() < baz()))
108+misc examples
109+assert(false && foo() |> (bar() |> baz(...)))