# New Ticket Created by  mt1957 
# Please include the string:  [perl #128624]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=128624 >


Hi,

Old code gives now error in Rakudo version 2016.06-234-g0189851 built on 
MoarVM version 2016.06-9-g8fc21d5.

Code is

   sub encode-int32 ( Int:D $i --> Buf ) is export {
     my int $ni = $i;
     return Buf.new( $ni +& 0xFF, ($ni +> 0x08) +& 0xFF,
                     ($ni +> 0x10) +& 0xFF, ($ni +> 0x18) +& 0xFF
                   );
   }

Fails at ' return Buf.new( $ni +& 0xFF, ....' when argument $i=5 with error


Type check failed in initializing element #0 to Buf; expected uint8 but 
got Int (5)
   in any  at gen/moar/m-Metamodel.nqp line 1736
   in sub encode-int32 at 
/home/marcel/Languages/Perl6/Projects/BSON/lib/BSON/Document.pm6 
(BSON::Document) line 948
   in method encode at 
/home/marcel/Languages/Perl6/Projects/BSON/lib/BSON/Document.pm6 
(BSON::Document) line 696
   in block <unit> at t/300-document.t line 10

Actually thrown at:
   in any  at gen/moar/m-Metamodel.nqp line 3055
   in any  at gen/moar/m-Metamodel.nqp line 1736
   in sub encode-int32 at 
/home/marcel/Languages/Perl6/Projects/BSON/lib/BSON/Document.pm6 
(BSON::Document) line 948
   in method encode at 
/home/marcel/Languages/Perl6/Projects/BSON/lib/BSON/Document.pm6 
(BSON::Document) line 696
   in block <unit> at t/300-document.t line 10


In REPL golfed down to

 > my int $i = 5
 > Buf.new($i +& 0xFF)
Type check failed in initializing element #0 to Buf; expected uint8 but 
got Int (5)
   in any  at gen/moar/m-Metamodel.nqp line 1736
   in block <unit> at <unknown file> line 1


Neither $i or 0xFF on its own will trigger this error so its the 
combination caused by the +& operator. Also 'Buf.new(|($i +& 0xFF))' 
helps but is rather cumbersome for the programmer as well as the compiler!

greetings,

Marcel

Reply via email to