src/builtins/guts.pir - subs that are part of the internals,
not for users
- !EXPORT(symbols,
from :named('from') [,
to :named('to')] )
- Export symbols in namespace
from
to the namespace given by to
.
If to
isn't given,
then exports into the HLL global namespace.
This function differs somewhat from Parrot's Exporter
PMC in that it understands how to properly merge MultiSub
PMCs.
- !VAR
- Helper function for implementing the VAR and .VAR macros.
- !COPYPARAM
- Copies a param for the is copy trait,
taking account of any ObjectRef and dereferencing it so we really do copy the underlying value.
- !DOTYPECHECK
- Checks that the value and the assignee are type-compatible and does the assignment.
- !TYPECHECKPARAM
- Checks the type of a parameter.
- !SAMETYPE_EXACT
- Takes two types and returns true if they match exactly (not accounting for any subtyping relations,
etc).
- !CREATE_SUBSET_TYPE
- Creates a subset type.
Basically,
we make an anonymous subclass of the original type,
attach the refinement and override ACCEPTS.
We also chase up to find a real,
non-subtype and stash that away for fast access later.
- !TOPERL6MULTISUB
- At the moment,
we don't have the abilility to have Parrot use our own MultiSub type,
nor are we ready to (because built-ins need to get Perl 6 signatures first).
So for now we just transform multis in user code like this.
- !SETUP_ARGS
- Sets up the @*ARGS global.
We could possibly use the args pmc coming directly from Parrot,
but currently Parrot provides it as a ResizableStringArray and we need Undefs for non-existent elements (RSA gives empty strings).
- !keyword_class(name)
- Internal helper method to create a class.
- !keyword_role(name)
- Internal helper method to create a role.
- !keyword_grammar(name)
- Internal helper method to create a grammar.
- !keyword_enum(name)
- Internal helper method to create an enum class.
- !keyword_does(class,
role)
- Internal helper method to implement the functionality of the does keyword.
- !keyword_has(class,
attr_name,
type)
- Adds an attribute with the given name to the class or role.
- !ADD_TO_WHENCE
- Adds a key/value mapping to what will become the WHENCE on a proto-object (we don't have a proto-object to stick them on yet,
so we put a property on the class temporarily,
then attach it as the WHENCE clause later).
- !PROTOINIT
- Called after a new proto-object has been made for a new class or grammar.
It finds any WHENCE data that we may need to add.
- !anon_enum(value_list)
- Constructs a Mapping,
based upon the values list.