diff --git a/src/Perl6/World.nqp b/src/Perl6/World.nqp index e8e195ea10f..92a3a7e3011 100644 --- a/src/Perl6/World.nqp +++ b/src/Perl6/World.nqp @@ -1068,7 +1068,7 @@ class Perl6::World is HLL::World { my $Map := self.find_symbol(['Map'], :setting-only); if nqp::istype($result, $Map) { my $storage := $result.hash.FLATTENABLE_HASH(); - self.import($/, $storage, $package_source_name); + self.import($/, $storage, $package_source_name, :need-decont); # $/.check_LANG_oopsies("do_import"); } else { @@ -1478,7 +1478,7 @@ class Perl6::World is HLL::World { } # Imports symbols from the specified stash into the current lexical scope. - method import($/, %stash, $source_package_name) { + method import($/, %stash, $source_package_name, :$need-decont = 0) { # What follows is a two-pass thing for historical reasons. my $target := self.cur_lexpad(); @@ -1489,6 +1489,9 @@ class Perl6::World is HLL::World { my @clash_onlystar; for sorted_keys(%stash) -> $key { my $value := %stash{$key}; + if $need-decont && nqp::islt_i(nqp::index('$&', nqp::substr($key,0,1)),0) { + $value := nqp::decont($value); + } if $target.symbol($key) -> %sym { # There's already a symbol. However, we may be able to merge # if both are multis and have onlystar dispatchers.