| 1 | t/examples/pod....error:imcc:syntax error, unexpected STRINGC, expecting '(' ('"expired"') |
|---|
| 2 | in file '/tmp/oFLv8VF8TK.pir' line 11 |
|---|
| 3 | error:imcc:syntax error, unexpected STRINGC, expecting '(' ('"timer"') |
|---|
| 4 | in file '/tmp/oFLv8VF8TK.pir' line 17 |
|---|
| 5 | |
|---|
| 6 | # Failed test 'docs/user/pir/pmcs.pod |
|---|
| 7 | # |
|---|
| 8 | # |
|---|
| 9 | # .include "timer.pasm" \# for the timer constants |
|---|
| 10 | # |
|---|
| 11 | # .sub expired |
|---|
| 12 | # print "Timer has expired!\n" |
|---|
| 13 | # .end |
|---|
| 14 | # |
|---|
| 15 | # .sub _ :main |
|---|
| 16 | # $P0 = new 'Timer' |
|---|
| 17 | # $P1 = global "expired" |
|---|
| 18 | # |
|---|
| 19 | # $P0[.PARROT_TIMER_HANDLER] = $P1 \# call sub in $P1 when timer goes off |
|---|
| 20 | # $P0[.PARROT_TIMER_SEC] = 2 \# trigger every 2 seconds |
|---|
| 21 | # $P0[.PARROT_TIMER_REPEAT] = -1 \# repeat indefinitely |
|---|
| 22 | # $P0[.PARROT_TIMER_RUNNING] = 1 \# start timer immediately |
|---|
| 23 | # global "timer" = $P0 \# keep the timer around |
|---|
| 24 | # |
|---|
| 25 | # $I0 = 0 |
|---|
| 26 | # loop: |
|---|
| 27 | # print $I0 |
|---|
| 28 | # print ": running...\n" |
|---|
| 29 | # inc $I0 |
|---|
| 30 | # sleep 1 \# wait a second |
|---|
| 31 | # goto loop |
|---|
| 32 | # .end |
|---|
| 33 | # |
|---|
| 34 | # ' |
|---|
| 35 | # at t/examples/pod.t line 49. |
|---|
| 36 | # got: '256' |
|---|
| 37 | # expected: '0' |
|---|
| 38 | error:imcc:syntax error, unexpected IDENTIFIER, expecting $end ('This') |
|---|
| 39 | in file '/tmp/4Wsizg0h5B.pir' line 21 |
|---|
| 40 | |
|---|
| 41 | # Failed test 'docs/user/pir/intro.pod |
|---|
| 42 | # |
|---|
| 43 | # |
|---|
| 44 | # .sub main :main |
|---|
| 45 | # $I1 = factorial(5) |
|---|
| 46 | # print $I1 |
|---|
| 47 | # print "\n" |
|---|
| 48 | # .end |
|---|
| 49 | # |
|---|
| 50 | # .sub factorial |
|---|
| 51 | # .param int i |
|---|
| 52 | # if i > 1 goto recur |
|---|
| 53 | # .return (1) |
|---|
| 54 | # recur: |
|---|
| 55 | # $I1 = i - 1 |
|---|
| 56 | # $I2 = factorial($I1) |
|---|
| 57 | # $I2 *= i |
|---|
| 58 | # .return ($I2) |
|---|
| 59 | # .end |
|---|
| 60 | # |
|---|
| 61 | # =cut |
|---|
| 62 | # |
|---|
| 63 | # This example also shows that PIR subroutines may be recursive just as in |
|---|
| 64 | # a high-level language. |
|---|
| 65 | # |
|---|
| 66 | # =head2 Named Arguments |
|---|
| 67 | # |
|---|
| 68 | # As some other languages as Python and Perl support named arguments, |
|---|
| 69 | # PIR supports them as well. |
|---|
| 70 | # |
|---|
| 71 | # As before, I need to use C<.param> for each named argument, but you need to |
|---|
| 72 | # specify a flag indicating the parameter is named: |
|---|
| 73 | # |
|---|
| 74 | # .sub func |
|---|
| 75 | # .param int a :named("foo") |
|---|
| 76 | # |
|---|
| 77 | # The subroutine will receive an integer named "foo", and inside of the |
|---|
| 78 | # subroutine that integer will be known as "a". |
|---|
| 79 | # |
|---|
| 80 | # When calling the function, I need to pass the names of the |
|---|
| 81 | # arguments. For that there are two syntaxes: |
|---|
| 82 | # |
|---|
| 83 | # func( 10 :named("foo") ) \# or |
|---|
| 84 | # func( "foo" => 10 ) |
|---|
| 85 | # |
|---|
| 86 | # Note that with named arguments, you may rearrange the order of your |
|---|
| 87 | # parameters at will. |
|---|
| 88 | # |
|---|
| 89 | # =begin PIR |
|---|
| 90 | # |
|---|
| 91 | # .sub foo |
|---|
| 92 | # .param string "name" => a |
|---|
| 93 | # .param int "age" => b |
|---|
| 94 | # .param string "gender" => c |
|---|
| 95 | # \# ... |
|---|
| 96 | # .end |
|---|
| 97 | # |
|---|
| 98 | # ' |
|---|
| 99 | # at t/examples/pod.t line 49. |
|---|
| 100 | # got: '256' |
|---|
| 101 | # expected: '0' |
|---|
| 102 | error:imcc:The opcode 'fact_i' (fact<1>) was not found. Check the type and number of the arguments |
|---|
| 103 | in file '/tmp/PHze5YBsNQ.pir' line 10 |
|---|
| 104 | |
|---|
| 105 | # Failed test 'docs/book/ch04_pir_subroutines.pod |
|---|
| 106 | # |
|---|
| 107 | # |
|---|
| 108 | # \# factorial.pir |
|---|
| 109 | # .sub main |
|---|
| 110 | # .local int count |
|---|
| 111 | # .local int product |
|---|
| 112 | # count = 5 |
|---|
| 113 | # product = 1 |
|---|
| 114 | # |
|---|
| 115 | # $I0 = fact(count, product) |
|---|
| 116 | # |
|---|
| 117 | # print $I0 |
|---|
| 118 | # print "\n" |
|---|
| 119 | # end |
|---|
| 120 | # .end |
|---|
| 121 | # |
|---|
| 122 | # .sub fact |
|---|
| 123 | # .param int c |
|---|
| 124 | # .param int p |
|---|
| 125 | # |
|---|
| 126 | # loop: |
|---|
| 127 | # if c <= 1 goto fin |
|---|
| 128 | # p = c * p |
|---|
| 129 | # dec c |
|---|
| 130 | # branch loop |
|---|
| 131 | # fin: |
|---|
| 132 | # .return p |
|---|
| 133 | # .end |
|---|
| 134 | # |
|---|
| 135 | # ' |
|---|
| 136 | # at t/examples/pod.t line 49. |
|---|
| 137 | # got: '512' |
|---|
| 138 | # expected: '0' |
|---|
| 139 | error:imcc:The opcode 'concat_s_sc_i' (concat<3>) was not found. Check the type and number of the arguments |
|---|
| 140 | in file '/tmp/JcNjVN4Ljy.pir' line 7 |
|---|
| 141 | |
|---|
| 142 | # Failed test 'docs/book/ch04_pir_subroutines.pod |
|---|
| 143 | # |
|---|
| 144 | # |
|---|
| 145 | # .sub 'MySub' |
|---|
| 146 | # .param int yrs :named("age") |
|---|
| 147 | # .param string call :named("name") |
|---|
| 148 | # $S0 = "Hello " . call |
|---|
| 149 | # $S1 = "You are " . yrs |
|---|
| 150 | # $S1 = $S1 . " years old |
|---|
| 151 | # print $S0 |
|---|
| 152 | # print $S1 |
|---|
| 153 | # .end |
|---|
| 154 | # |
|---|
| 155 | # .sub main :main |
|---|
| 156 | # 'MySub'("age" => 42, "name" => "Bob") |
|---|
| 157 | # .end |
|---|
| 158 | # |
|---|
| 159 | # ' |
|---|
| 160 | # at t/examples/pod.t line 49. |
|---|
| 161 | # got: '512' |
|---|
| 162 | # expected: '0' |
|---|
| 163 | error:imcc:syntax error, unexpected '\n', expecting COMMA or ')' |
|---|
| 164 | in file '/tmp/FTZhyWsid2.pir' line 12 |
|---|
| 165 | error:imcc:syntax error, unexpected VAR, expecting '(' ('b') |
|---|
| 166 | in file '/tmp/FTZhyWsid2.pir' line 20 |
|---|
| 167 | |
|---|
| 168 | # Failed test 'docs/book/ch04_pir_subroutines.pod |
|---|
| 169 | # |
|---|
| 170 | # |
|---|
| 171 | # .sub main :main |
|---|
| 172 | # .local int value |
|---|
| 173 | # value = add_two(5) |
|---|
| 174 | # say value |
|---|
| 175 | # .end |
|---|
| 176 | # |
|---|
| 177 | # .sub add_two |
|---|
| 178 | # .param int value |
|---|
| 179 | # .local int val2 |
|---|
| 180 | # val2 = add_one(value |
|---|
| 181 | # .tailcall add_one(val2) |
|---|
| 182 | # .end |
|---|
| 183 | # |
|---|
| 184 | # .sub add_one |
|---|
| 185 | # .param int a |
|---|
| 186 | # .local int b |
|---|
| 187 | # b = a + 1 |
|---|
| 188 | # return b |
|---|
| 189 | # .end |
|---|
| 190 | # |
|---|
| 191 | # ' |
|---|
| 192 | # at t/examples/pod.t line 49. |
|---|
| 193 | # got: '256' |
|---|
| 194 | # expected: '0' |
|---|
| 195 | error:imcc:syntax error, unexpected INTV, expecting STRINGC ('int') |
|---|
| 196 | in file '/tmp/wlhMKOemjj.pir' line 4 |
|---|
| 197 | error:imcc:syntax error, unexpected INTV, expecting STRINGC ('int') |
|---|
| 198 | in file '/tmp/wlhMKOemjj.pir' line 5 |
|---|
| 199 | error:imcc:syntax error, unexpected INTV, expecting STRINGC ('int') |
|---|
| 200 | in file '/tmp/wlhMKOemjj.pir' line 11 |
|---|
| 201 | |
|---|
| 202 | # Failed test 'docs/book/ch04_pir_subroutines.pod |
|---|
| 203 | # |
|---|
| 204 | # |
|---|
| 205 | # .sub 'MyOuter' |
|---|
| 206 | # .lex int x |
|---|
| 207 | # .lex int y |
|---|
| 208 | # 'MyInner'() |
|---|
| 209 | # \# only x and y are visible here |
|---|
| 210 | # .end |
|---|
| 211 | # |
|---|
| 212 | # .sub 'MyInner' :outer('MyOuter') |
|---|
| 213 | # .lex int z |
|---|
| 214 | # \#x, y, and z are all "visible" here |
|---|
| 215 | # .end |
|---|
| 216 | # |
|---|
| 217 | # ' |
|---|
| 218 | # at t/examples/pod.t line 49. |
|---|
| 219 | # got: '256' |
|---|
| 220 | # expected: '0' |
|---|
| 221 | error:imcc:syntax error, unexpected PARROT_OP, expecting '(' ('fact') |
|---|
| 222 | in file '/tmp/tp7yEZjet4.pir' line 5 |
|---|
| 223 | error:imcc:syntax error, unexpected PARROT_OP, expecting '(' ('fact') |
|---|
| 224 | in file '/tmp/tp7yEZjet4.pir' line 9 |
|---|
| 225 | |
|---|
| 226 | # Failed test 'docs/book/ch04_pir_subroutines.pod |
|---|
| 227 | # |
|---|
| 228 | # |
|---|
| 229 | # .sub main |
|---|
| 230 | # $I1 = 5 \# counter |
|---|
| 231 | # call fact \# same as "bsr fact" |
|---|
| 232 | # print $I0 |
|---|
| 233 | # print "\n" |
|---|
| 234 | # $I1 = 6 \# counter |
|---|
| 235 | # call fact |
|---|
| 236 | # print $I0 |
|---|
| 237 | # print "\n" |
|---|
| 238 | # end |
|---|
| 239 | # |
|---|
| 240 | # fact: |
|---|
| 241 | # $I0 = 1 \# product |
|---|
| 242 | # L1: |
|---|
| 243 | # $I0 = $I0 * $I1 |
|---|
| 244 | # dec $I1 |
|---|
| 245 | # if $I1 > 0 goto L1 |
|---|
| 246 | # ret |
|---|
| 247 | # .end |
|---|
| 248 | # |
|---|
| 249 | # ' |
|---|
| 250 | # at t/examples/pod.t line 49. |
|---|
| 251 | # got: '256' |
|---|
| 252 | # expected: '0' |
|---|
| 253 | error:imcc:syntax error, unexpected ADV_INVOCANT, expecting '\n' (':invocant') |
|---|
| 254 | in file '/tmp/F4D162WOA5.pir' line 9 |
|---|
| 255 | |
|---|
| 256 | # Failed test 'docs/book/ch04_pir_subroutines.pod |
|---|
| 257 | # |
|---|
| 258 | # |
|---|
| 259 | # .sub "MyMethod" :method |
|---|
| 260 | # $S0 = self \# Already defined as "self" |
|---|
| 261 | # say $S0 |
|---|
| 262 | # .end |
|---|
| 263 | # |
|---|
| 264 | # .sub "MyMethod2" :method |
|---|
| 265 | # .param pmc item :invocant \# "self" is now called "item" |
|---|
| 266 | # $S0 = item |
|---|
| 267 | # say $S0 |
|---|
| 268 | # .end |
|---|
| 269 | # |
|---|
| 270 | # ' |
|---|
| 271 | # at t/examples/pod.t line 49. |
|---|
| 272 | # got: '256' |
|---|
| 273 | # expected: '0' |
|---|
| 274 | # Looks like you failed 8 tests of 49. |
|---|
| 275 | Dubious, test returned 8 (wstat 2048, 0x800) |
|---|
| 276 | Failed 8/49 subtests |
|---|
| 277 | |
|---|
| 278 | Test Summary Report |
|---|
| 279 | ------------------- |
|---|
| 280 | t/examples/pod (Wstat: 2048 Tests: 49 Failed: 8) |
|---|
| 281 | Failed tests: 20, 24, 27-28, 30-33 |
|---|
| 282 | Non-zero exit status: 8 |
|---|
| 283 | Files=1, Tests=49, 4 wallclock secs ( 0.00 usr 0.00 sys + 0.95 cusr 0.48 csys = 1.43 CPU) |
|---|
| 284 | Result: FAIL |
|---|