Reported by: email@example.com
PDD 22 indicates that the "print" method on an I/O handle PMC is meant to return one value, a status object. In fact, while the method on FileHandle does return one value, the corresponding method on StringHandle returns two values:
$ cat t50.pir
.sub main :main
$P0 = getstdout
$S0 = typeof $P0
($P1 :slurpy) = $P0."print"("(foo)\n")
$I0 = $P1
$P2 = new "StringHandle"
$S1 = typeof $P2
($P3 :slurpy) = $P2."print"("(foo)\n")
$I1 = $P3
$ ./parrot t50.pir
There also doesn't seem to be any consistency in what the values returned are. On FileHandle, the returned value is an integer, the number of characters printed. On StringHandle, the first return value is the StringHandle invocant, and the second return value is the string being printed. These are both inconsistent with each other, and inconsistent with PDD 22's promise of a status object.
Summary of my parrot 5.7.0 configuration:
configdate='Sat Oct 5 12:42:43 2013 GMT'