develooper Front page | perl.perl6.users | Postings from December 2018

MoarVM Panic - OO - CONTROL Phaser

From:
Richard Hogaboom
Date:
December 8, 2018 16:31
Subject:
MoarVM Panic - OO - CONTROL Phaser
Message ID:
e632d06a-f84b-8d59-6432-0a48b1c78beb@gmail.com
While testing some of the OO code examples and having some 
PHASERS(specifically a CONTROL PHASER) installed I ran across a MoarVM 
Panic.  The code is from the 'Object orientation' page - 
https://docs.perl6.org/language/objects. A syntax error on my part in 
calling the constructor with a CONTROL PHASER installed causes it.

use v6;

CONTROL { say 'PHASER: CONTROL' } #  catch control exceptions, before LEAVE

{
     say '--- ', $?LINE;
     my $ⲧ = " " xx 4;
     class Journey {
         has $.origin;
         has $.destination;
         has @.travelers;
         has Str $.notes is rw;

         multi method notes() { "$!notes\n" };
         multi method notes( Str $note ) { $!notes ~= "$note\n$ⲧ" };

         method Str { "⤷ $!origin\n$ⲧ" ~ self.notes() ~ "$!destination 
⤶\n" };
     }

     #my $trip = Journey.new( :origin<Here>, :destination<There>, 
travelers => <þor Freya> );  # from doc - works
     #my $trip = Journey.new( origin => "Here", destination => "There", 
travelers => ["þor", "Freya"] );  # same - works

     my $trip = Journey.new( :origin{"Here"}, :destination<There>, 
travelers => <þor Freya> );  # change of < > to {" "} - only for %hash - 
fails with MoarVM panic

     $trip.travelers[0].say;
     $trip.travelers[1].say;
     $trip.travelers.say;
     $trip.notes("First steps");
     notes $trip: "Almost there";
     print $trip;

     # OUTPUT:
     #⤷ Here
     #       First steps
     #       Almost there
     #
     #There ⤶
}

=begin pod
# output if CONTROL {} phaser commented out
--- 8
þor
Freya
[þor Freya]
Block object coerced to string (please use .gist or .perl to do that)
   in method Str at ./MoarVMPanic.p6 line 19
⤷
        First steps
          First steps
        Almost there

There ⤶
=end pod

=begin pod
# output if CONTROL {} phaser commented in
--- 8
þor
Freya
[þor Freya]
PHASER: CONTROL
Block object coerced to string (please use .gist or .perl to do that)
   in method Str at ./MoarVMPanic.p6 line 19
MoarVM panic: Trying to unwind over wrong handler
=end pod

rahogaboom



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About