From 4f1bbdbfebeb6ad3df9566c502aa246d8ca78989 Mon Sep 17 00:00:00 2001 From: Stefan Seifert Date: Mon, 9 Jan 2023 22:54:34 +0100 Subject: [PATCH] Stub IterationBuffer in the bootstrap We need it in RakuAST::ScopePhaser, which is a role and has no easy access to indirect lookups. --- src/Perl6/bootstrap.c/BOOTSTRAP.nqp | 5 +++++ src/core.c/core_epilogue.pm6 | 1 + src/core.c/core_prologue.pm6 | 5 ++--- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/Perl6/bootstrap.c/BOOTSTRAP.nqp b/src/Perl6/bootstrap.c/BOOTSTRAP.nqp index 68378eccfd0..7df12e89889 100644 --- a/src/Perl6/bootstrap.c/BOOTSTRAP.nqp +++ b/src/Perl6/bootstrap.c/BOOTSTRAP.nqp @@ -73,6 +73,7 @@ my stub List metaclass Perl6::Metamodel::ClassHOW { ... }; my stub Slip metaclass Perl6::Metamodel::ClassHOW { ... }; my stub Array metaclass Perl6::Metamodel::ClassHOW { ... }; my stub array metaclass Perl6::Metamodel::ClassHOW is repr('VMArray') { ... }; +my stub IterationBuffer metaclass Perl6::Metamodel::ClassHOW is repr('VMArray') { ... }; my stub Map metaclass Perl6::Metamodel::ClassHOW { ... }; my stub Hash metaclass Perl6::Metamodel::ClassHOW { ... }; my stub Capture metaclass Perl6::Metamodel::ClassHOW { ... }; @@ -3729,6 +3730,8 @@ BEGIN { # class array does Iterable does Positional { array.HOW.compose_repr(array); + # class IterationBuffer { + IterationBuffer.HOW.compose_repr(IterationBuffer); # my class Map is Cool { # has Mu $!storage; @@ -3860,6 +3863,7 @@ BEGIN { Perl6::Metamodel::ClassHOW.add_stash(Slip); Perl6::Metamodel::ClassHOW.add_stash(Array); Perl6::Metamodel::ClassHOW.add_stash(array); + Perl6::Metamodel::ClassHOW.add_stash(IterationBuffer); Perl6::Metamodel::ClassHOW.add_stash(Map); Perl6::Metamodel::ClassHOW.add_stash(Hash); Perl6::Metamodel::ClassHOW.add_stash(Capture); @@ -3972,6 +3976,7 @@ BEGIN { EXPORT::DEFAULT.WHO := Slip; EXPORT::DEFAULT.WHO := Array; EXPORT::DEFAULT.WHO := array; + EXPORT::DEFAULT.WHO := IterationBuffer; EXPORT::DEFAULT.WHO := Map; EXPORT::DEFAULT.WHO := Hash; EXPORT::DEFAULT.WHO := Capture; diff --git a/src/core.c/core_epilogue.pm6 b/src/core.c/core_epilogue.pm6 index 4d229a1fa75..52fc275a852 100644 --- a/src/core.c/core_epilogue.pm6 +++ b/src/core.c/core_epilogue.pm6 @@ -157,6 +157,7 @@ BEGIN .^compose for int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64, byte, num, num32, num64, str, + IterationBuffer ; BEGIN Metamodel::ClassHOW.exclude_parent(Mu); diff --git a/src/core.c/core_prologue.pm6 b/src/core.c/core_prologue.pm6 index 21fc0c93e28..b3138ecdae9 100644 --- a/src/core.c/core_prologue.pm6 +++ b/src/core.c/core_prologue.pm6 @@ -58,9 +58,8 @@ BEGIN { } # Set up Empty, which is a Slip created with an empty IterationBuffer (which -# we also stub here). This is needed in a bunch of simple constructs (like if -# with only one branch). -my class IterationBuffer is repr('VMArray') { ... } +# is stubbed in bootstrap). This is needed in a bunch of simple constructs +# (like if with only one branch). my constant Empty = nqp::p6bindattrinvres(nqp::create(Slip), List, '$!reified', nqp::create(IterationBuffer));