|
1 | 1 | use QAST;
|
2 | 2 |
|
3 |
| -plan(125); |
| 3 | +plan(130); |
4 | 4 |
|
5 | 5 | # Following a test infrastructure.
|
6 | 6 | sub compile_qast($qast) {
|
@@ -2090,3 +2090,90 @@ is_qast(
|
2090 | 2090 | 'for loop nohandler');
|
2091 | 2091 |
|
2092 | 2092 | }
|
| 2093 | + |
| 2094 | +is_qast( |
| 2095 | + QAST::Block.new( |
| 2096 | + QAST::Op.new( |
| 2097 | + :op<add_i>, |
| 2098 | + QAST::IVal.new( :value(0) ), |
| 2099 | + QAST::Want.new( |
| 2100 | + QAST::IVal.new( :value(100) ), |
| 2101 | + 'N', |
| 2102 | + QAST::NVal.new( :value(200) ), |
| 2103 | + 'I', |
| 2104 | + QAST::IVal.new( :value(300) ), |
| 2105 | + 'S', |
| 2106 | + QAST::SVal.new( :value('400') ), |
| 2107 | + ) |
| 2108 | + ) |
| 2109 | + ), 300, 'QAST::Want - choosing int' |
| 2110 | +); |
| 2111 | + |
| 2112 | +is_qast( |
| 2113 | + QAST::Block.new( |
| 2114 | + QAST::Op.new( |
| 2115 | + :op<add_n>, |
| 2116 | + QAST::NVal.new( :value(0) ), |
| 2117 | + QAST::Want.new( |
| 2118 | + QAST::IVal.new( :value(100) ), |
| 2119 | + 'N', |
| 2120 | + QAST::NVal.new( :value(200) ), |
| 2121 | + 'I', |
| 2122 | + QAST::IVal.new( :value(300) ), |
| 2123 | + 'S', |
| 2124 | + QAST::SVal.new( :value('400') ), |
| 2125 | + ) |
| 2126 | + ) |
| 2127 | + ), 200, 'QAST::Want - choosing num' |
| 2128 | +); |
| 2129 | + |
| 2130 | +is_qast( |
| 2131 | + QAST::Block.new( |
| 2132 | + QAST::Op.new( |
| 2133 | + :op<concat>, |
| 2134 | + QAST::SVal.new( :value('') ), |
| 2135 | + QAST::Want.new( |
| 2136 | + QAST::IVal.new( :value(100) ), |
| 2137 | + 'N', |
| 2138 | + QAST::NVal.new( :value(200) ), |
| 2139 | + 'I', |
| 2140 | + QAST::IVal.new( :value(300) ), |
| 2141 | + 'S', |
| 2142 | + QAST::SVal.new( :value('400') ), |
| 2143 | + ) |
| 2144 | + ) |
| 2145 | + ), '400', 'QAST::Want - choosing str' |
| 2146 | +); |
| 2147 | + |
| 2148 | +is_qast( |
| 2149 | + QAST::Block.new( |
| 2150 | + QAST::Op.new( |
| 2151 | + :op<clone>, |
| 2152 | + QAST::Want.new( |
| 2153 | + QAST::IVal.new( :value(100) ), |
| 2154 | + 'N', |
| 2155 | + QAST::NVal.new( :value(200) ), |
| 2156 | + 'I', |
| 2157 | + QAST::IVal.new( :value(300) ), |
| 2158 | + 'S', |
| 2159 | + QAST::SVal.new( :value('400') ), |
| 2160 | + ) |
| 2161 | + ) |
| 2162 | + ), 100, 'QAST::Want - choose first for objects' |
| 2163 | +); |
| 2164 | + |
| 2165 | +is_qast( |
| 2166 | + QAST::Block.new( |
| 2167 | + QAST::Op.new( |
| 2168 | + :op<concat>, |
| 2169 | + QAST::SVal.new( :value('x') ), |
| 2170 | + QAST::Want.new( |
| 2171 | + QAST::IVal.new( :value(100) ), |
| 2172 | + 'N', |
| 2173 | + QAST::NVal.new( :value(200) ), |
| 2174 | + 'I', |
| 2175 | + QAST::IVal.new( :value(300) ), |
| 2176 | + ) |
| 2177 | + ) |
| 2178 | + ), 'x100', 'QAST::Want - choose first when no match' |
| 2179 | +); |
0 commit comments