diff --git a/src/Perl6/Actions.nqp b/src/Perl6/Actions.nqp index 055963ee3e3..667fd9d29e0 100644 --- a/src/Perl6/Actions.nqp +++ b/src/Perl6/Actions.nqp @@ -9774,7 +9774,17 @@ class Perl6::QActions is HLL::Actions does STDActions { } } walk($past); - +@($result) == 1 ?? $result[0] !! QAST::Stmts.new( $result ) + + # Strip out list op and possible Slip if only one resulting word + nqp::if( + +@($result) == 1, + nqp::if( + nqp::istype($result[0], QAST::Op) && $result[0].name eq 'Slip', + $result[0][0], + $result[0] + ), + QAST::Stmts.new( $result ) + ) } method postprocess_heredoc($/, $past) { diff --git a/src/core/allomorphs.pm b/src/core/allomorphs.pm index 7dda60432f1..f15ac40850c 100644 --- a/src/core/allomorphs.pm +++ b/src/core/allomorphs.pm @@ -159,9 +159,16 @@ multi sub val(Mu) { Mu } -# needed to preserve slip-ness -multi sub val(Slip:D $maybevals) { - val(|$maybevals).Slip +# if Slip, preserve slipness +multi sub val(List:D $maybevals) { + nqp::stmts( + (my $output := val(|$maybevals)), + nqp::if( + nqp::istype($maybevals, Slip), + $output.Slip, + $output + ) + ) } multi sub val(Pair:D \ww-thing) is raw {