Skip to content

Instantly share code, notes, and snippets.

@FROGGS
Created September 10, 2014 11:17
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 FROGGS/5ef84cab70b6367e7d2b to your computer and use it in GitHub Desktop.
Save FROGGS/5ef84cab70b6367e7d2b to your computer and use it in GitHub Desktop.
diff --git a/src/core/Distro.pm b/src/core/Distro.pm
index 7ba5517..87b8d2d 100644
--- a/src/core/Distro.pm
+++ b/src/core/Distro.pm
@@ -30,7 +30,7 @@ class Distro does Systemic {
}
# set up $*DISTRO and deprecated $*OS and $*OSVER
-multi sub INITIALIZE('$*DISTRO') {
+multi sub INITIALIZE_DYNAMIC('$*DISTRO') {
PROCESS::<$DISTRO> := do {
#?if jvm
my $properties := $*VM.properties;
@@ -69,7 +69,7 @@ multi sub INITIALIZE('$*DISTRO') {
};
}
-multi sub INITIALIZE('$*OS') {
+multi sub INITIALIZE_DYNAMIC('$*OS') {
PROCESS::<$OS> := Deprecation.obsolete(
:name('$*OS'),
:value($*DISTRO.name),
@@ -77,7 +77,7 @@ multi sub INITIALIZE('$*OS') {
);
}
-multi sub INITIALIZE('$*OSVER') {
+multi sub INITIALIZE_DYNAMIC('$*OSVER') {
PROCESS::<$OSVER> := Deprecation.obsolete(
:name('$*OSVER'),
:value($*DISTRO.version),
diff --git a/src/core/Env.pm b/src/core/Env.pm
index 2dae5c0..4783342 100644
--- a/src/core/Env.pm
+++ b/src/core/Env.pm
@@ -12,7 +12,7 @@
PROCESS::<%ENV> := %ENV;
}
-multi sub INITIALIZE('$*CWD') {
+multi sub INITIALIZE_DYNAMIC('$*CWD') {
## duplicate src/core/IO.pm::cwd
my $CWD = IO::Path.new(nqp::p6box_s(
#?if parrot
diff --git a/src/core/Instant.pm b/src/core/Instant.pm
index 3788432..4bb8c8f 100644
--- a/src/core/Instant.pm
+++ b/src/core/Instant.pm
@@ -122,7 +122,7 @@ sub term:<now>() {
#{
my num $init-time-num = nqp::time_n; # need find a way to not leak this
- multi sub INITIALIZE('$*INITTIME') {
+ multi sub INITIALIZE_DYNAMIC('$*INITTIME') {
PROCESS::<$INITTIME> := Instant.from-posix: $init-time-num;
}
#}
diff --git a/src/core/Kernel.pm b/src/core/Kernel.pm
index 707b40a..c44a93a 100644
--- a/src/core/Kernel.pm
+++ b/src/core/Kernel.pm
@@ -105,7 +105,7 @@ class Kernel does Systemic {
#?endif
}
-multi sub INITIALIZE('$*KERNEL') {
+multi sub INITIALIZE_DYNAMIC('$*KERNEL') {
PROCESS::<$KERNEL> := Kernel.new;
}
diff --git a/src/core/Perl.pm b/src/core/Perl.pm
index 95289da..f3ef460 100644
--- a/src/core/Perl.pm
+++ b/src/core/Perl.pm
@@ -27,7 +27,7 @@ class Perl does Systemic {
method KERNELnames { <darwin linux win32> }
}
-multi sub INITIALIZE('$*PERL') {
+multi sub INITIALIZE_DYNAMIC('$*PERL') {
PROCESS::<$PERL> := Perl.new;
}
multi postcircumfix:<{ }> (Perl $d, "name" ) {
diff --git a/src/core/Process.pm b/src/core/Process.pm
index 3a9a1bc..7b6b759 100644
--- a/src/core/Process.pm
+++ b/src/core/Process.pm
@@ -1,8 +1,8 @@
-multi sub INITIALIZE('$*PID') {
+multi sub INITIALIZE_DYNAMIC('$*PID') {
PROCESS::<$PID> := nqp::p6box_i(nqp::getpid());
}
-multi sub INITIALIZE('$*EXECUTABLE') {
+multi sub INITIALIZE_DYNAMIC('$*EXECUTABLE') {
my $EXECUTABLE =
#?if parrot
nqp::p6box_s(pir::interpinfo__Si(pir::const::INTERPINFO_EXECUTABLE_FULLNAME));
@@ -20,22 +20,22 @@ multi sub INITIALIZE('$*EXECUTABLE') {
PROCESS::<$EXECUTABLE> := $EXECUTABLE;
}
-multi sub INITIALIZE('$*EXECUTABLE_NAME') {
+multi sub INITIALIZE_DYNAMIC('$*EXECUTABLE_NAME') {
PROCESS::<$EXECUTABLE_NAME> := $*EXECUTABLE.basename;
}
-multi sub INITIALIZE('$*PROGRAM_NAME') {
+multi sub INITIALIZE_DYNAMIC('$*PROGRAM_NAME') {
my Mu $comp := nqp::getcomp('perl6');
my $PROGRAM_NAME = $comp.user-progname();
PROCESS::<$PROGRAM> := IO::Path.new($PROGRAM_NAME);
PROCESS::<$PROGRAM_NAME> := $PROGRAM_NAME;
}
-multi sub INITIALIZE('$*PROGRAM') {
+multi sub INITIALIZE_DYNAMIC('$*PROGRAM') {
PROCESS::<$PROGRAM> := IO::Path.new($*PROGRAM_NAME);
}
-multi sub INITIALIZE('$*TMPDIR') {
+multi sub INITIALIZE_DYNAMIC('$*TMPDIR') {
PROCESS::<$TMPDIR> := IO::Spec.tmpdir.path;
}
diff --git a/src/core/Temporal.pm b/src/core/Temporal.pm
index ff88d4b..ff0dddf 100644
--- a/src/core/Temporal.pm
+++ b/src/core/Temporal.pm
@@ -648,7 +648,7 @@ multi infix:«>»(Date:D $a, Date:D $b) {
$a.daycount > $b.daycount
}
-multi sub INITIALIZE('$*TZ') {
+multi sub INITIALIZE_DYNAMIC('$*TZ') {
PROCESS::<$TZ> = get-local-timezone-offset();
}
diff --git a/src/core/VM.pm b/src/core/VM.pm
index 9983d93..69a84b8 100644
--- a/src/core/VM.pm
+++ b/src/core/VM.pm
@@ -56,7 +56,7 @@ multi postcircumfix:<{ }> (VM $d, "properties" ) {
}
#?endif
-multi sub INITIALIZE('$*VM') {
+multi sub INITIALIZE_DYNAMIC('$*VM') {
PROCESS::<$VM> := do {
my $config :=
#?if parrot
diff --git a/src/core/stubs.pm b/src/core/stubs.pm
index 1261e41..58be2f4 100644
--- a/src/core/stubs.pm
+++ b/src/core/stubs.pm
@@ -24,7 +24,7 @@ my role Mixy { ... }
my class Mix { ... }
my class MixHash { ... }
-sub DYNAMIC(\name) is rw {
+sub DYNAMIC(\name) is rw {
my Mu $x := nqp::getlexdyn(nqp::unbox_s(name));
if nqp::isnull($x) {
my str $pkgname = nqp::replace(nqp::unbox_s(name), 1, 1, '');
@@ -34,19 +34,19 @@ sub DYNAMIC(\name) is rw {
elsif nqp::existskey(PROCESS.WHO, $pkgname) {
$x := nqp::atkey(PROCESS.WHO, $pkgname);
}
- elsif try INITIALIZE(name) -> \result {
- $x := result;
- }
else {
- fail X::Dynamic::NotFound.new(:name(name));
+ $x := INITIALIZE_DYNAMIC(name);
}
}
$x
}
# prime the automagic dynamic variable initializers
-proto sub INITIALIZE(|) { * }
-#multi sub INITIALIZE('$*FOO') { # example stub
+proto sub INITIALIZE_DYNAMIC(|) { * }
+multi sub INITIALIZE_DYNAMIC(\name) {
+ fail X::Dynamic::NotFound.new(:name(name));
+}
+#multi sub INITIALIZE_DYNAMIC('$*FOO') { # example stub
# PROCESS::<$FOO> := "foo";
#}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment