Skip to content

Instantly share code, notes, and snippets.

@lizmat
Created July 9, 2020 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lizmat/76f3e65f70fb644766919e30bbdf4bdf to your computer and use it in GitHub Desktop.
Save lizmat/76f3e65f70fb644766919e30bbdf4bdf to your computer and use it in GitHub Desktop.
6.e Str.succ
diff --git a/src/Perl6/Metamodel/MethodContainer.nqp b/src/Perl6/Metamodel/MethodContainer.nqp
index 50b33a83b..f25b061a4 100644
--- a/src/Perl6/Metamodel/MethodContainer.nqp
+++ b/src/Perl6/Metamodel/MethodContainer.nqp
@@ -14,11 +14,11 @@ role Perl6::Metamodel::MethodContainer {
has %!cache;
# Add a method.
- method add_method($obj, $name, $code_obj) {
+ method add_method($obj, $name, $code_obj, :$force) {
# Ensure we haven't already got it.
$code_obj := nqp::decont($code_obj);
$name := nqp::decont_s($name);
- if nqp::existskey(%!methods, $name) || nqp::existskey(%!submethods, $name) {
+ if !$force && nqp::existskey(%!methods, $name) || nqp::existskey(%!submethods, $name) {
# XXX try within nqp::die() causes a hang. Pre-cache the result and use it later.
my $method_type := try { nqp::lc($code_obj.HOW.name($code_obj)) } // 'method';
nqp::die("Package '"
diff --git a/tools/templates/6.e/core_sources b/tools/templates/6.e/core_sources
index c6d98218f..527a5f371 100644
--- a/tools/templates/6.e/core_sources
+++ b/tools/templates/6.e/core_sources
@@ -1,4 +1,5 @@
src/core.e/core_prologue.pm6
+src/core.e/Str.pm6
src/core.e/PseudoStash.pm6
src/core.e/Grammar.pm6
src/core.e/EXPORTHOW.pm6
# in src/core.e/Str.pm6
BEGIN {
Str.^add_method("succ",-> \str {
Rakudo::Internals.SUCC(str, nqp::chars(str) - 1)
}, :force );
Str.^add_method("pred",-> \str {
Rakudo::Internals.PRED(str, nqp::chars(str) - 1)
}, :force );
Str.^compose;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment