Skip to content

Instantly share code, notes, and snippets.

.sub foo
.lex "$key", $S0
$S0 = "hello"
$P0 = new ['Hash']
set $P0[$S0], "TEST"
$S1 = $P0["hello"]
say $S1
.end
diff --git a/src/Perl6/Metamodel/MROBasedMethodDispatch.pm b/src/Perl6/Metamodel/MROBasedMethodDispatch.pm
index 50d021a..5e41cbb 100644
--- a/src/Perl6/Metamodel/MROBasedMethodDispatch.pm
+++ b/src/Perl6/Metamodel/MROBasedMethodDispatch.pm
@@ -27,17 +27,11 @@ role Perl6::Metamodel::MROBasedMethodDispatch {
@mro_reversed.unshift($_);
}
for @mro_reversed {
- my %methods := $_.HOW.method_table($_);
- for %methods {
my $r = '';
sub foo {
UNDO { $r ~= "U1"}
KEEP { $r ~= "R1"}
CATCH {
if (1) {
UNDO { $r ~= "U3"}
KEEP { $r ~= "R3"}
diff --git a/src/Perl6/Metamodel/C3MRO.pm b/src/Perl6/Metamodel/C3MRO.pm
index fd2b170..cb00d6d 100644
--- a/src/Perl6/Metamodel/C3MRO.pm
+++ b/src/Perl6/Metamodel/C3MRO.pm
@@ -55,12 +55,12 @@ role Perl6::Metamodel::C3MRO {
}
}
- # If we didn't reject it, this candidate will do.
- unless $rejected {
diff --git a/src/Perl6/Actions.pm b/src/Perl6/Actions.pm
index e5e6caf..c9bda8d 100644
--- a/src/Perl6/Actions.pm
+++ b/src/Perl6/Actions.pm
@@ -3728,28 +3728,36 @@ class Perl6::Actions is HLL::Actions {
unless $block.handlers() {
$block.handlers([]);
}
- $handler := PAST::Block.new(
- :blocktype('declaration'),
diff --git a/src/Perl6/Actions.pm b/src/Perl6/Actions.pm
index e5e6caf..2228b2c 100644
--- a/src/Perl6/Actions.pm
+++ b/src/Perl6/Actions.pm
@@ -3728,26 +3728,34 @@ class Perl6::Actions is HLL::Actions {
unless $block.handlers() {
$block.handlers([]);
}
- $handler := PAST::Block.new(
- :blocktype('declaration'),
diff --git a/src/Perl6/Actions.pm b/src/Perl6/Actions.pm
index e5e6caf..fbff596 100644
--- a/src/Perl6/Actions.pm
+++ b/src/Perl6/Actions.pm
@@ -3728,26 +3728,22 @@ class Perl6::Actions is HLL::Actions {
unless $block.handlers() {
$block.handlers([]);
}
- $handler := PAST::Block.new(
- :blocktype('declaration'),
diff --git a/src/Perl6/Actions.pm b/src/Perl6/Actions.pm
index e5e6caf..b8ad191 100644
--- a/src/Perl6/Actions.pm
+++ b/src/Perl6/Actions.pm
@@ -3728,26 +3728,26 @@ class Perl6::Actions is HLL::Actions {
unless $block.handlers() {
$block.handlers([]);
}
- $handler := PAST::Block.new(
- :blocktype('declaration'),
diff --git a/src/binder/container.c b/src/binder/container.c
index d0d047e..6ae05c3 100644
--- a/src/binder/container.c
+++ b/src/binder/container.c
@@ -64,6 +64,10 @@ void Rakudo_cont_store(PARROT_INTERP, PMC *cont, PMC *value,
Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
"Cannot assign a non-Perl 6 value to a Perl 6 container");
+ if (PMC_IS_NULL(cont)) {
+ Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_INVALID_OPERATION,
diff --git a/src/Perl6/Metamodel/C3MRO.pm b/src/Perl6/Metamodel/C3MRO.pm
index 6889829..fd2b170 100644
--- a/src/Perl6/Metamodel/C3MRO.pm
+++ b/src/Perl6/Metamodel/C3MRO.pm
@@ -9,14 +9,18 @@ role Perl6::Metamodel::C3MRO {
# Provided we have immediate parents...
my @result;
if +@immediate_parents {
- # Build merge list of lineraizations of all our parents, add
- # immediate parents and merge.