diff --git a/src/builtins/Parcel.pir b/src/builtins/Parcel.pir index 036a22766d9..1d649e20c1b 100644 --- a/src/builtins/Parcel.pir +++ b/src/builtins/Parcel.pir @@ -53,6 +53,15 @@ A Parcel in item context becomes a Seq. .end +=item hash() + +=cut + +.sub 'hash' :method + .tailcall 'hash'(self) +.end + + =item iterator() Construct an iterator for the Parcel. diff --git a/src/core/Mu.pm b/src/core/Mu.pm index de5c13ef1b4..ba8edbcb563 100644 --- a/src/core/Mu.pm +++ b/src/core/Mu.pm @@ -1,6 +1,11 @@ augment class Mu { method Bool { $.defined } + method item { + # This is overridden by non-items. + self; + } + multi method notdef() { !self.defined; } multi method perl { diff --git a/src/core/operators.pm b/src/core/operators.pm index 7672390fa83..13d7191b8df 100644 --- a/src/core/operators.pm +++ b/src/core/operators.pm @@ -243,6 +243,16 @@ our sub WHAT(\$x) { $x.WHAT } +our multi sub item(*@values) { + @values.Seq +} +our multi sub item(@values) { + @values.Seq +} +our multi sub item($item) { + $item +} + class Whatever { ... } # the magic one that handles stuff like