Will Coleda (via RT) wrote:
I have some work for Tcl pending commit that requires I know the name
a .Sub was invoked with at runtime, so I need a way to get at the
name at runtime. Currently, the following code (jisom++)
.sub main :main
'foo'()
.end
.sub 'foo'
print "We're inside sub "
$P0 = interpinfo 14
$S0 = $P0
say $S0
.end
says 'parrot;foo'. While I could strip off the leading namespace,
this would fail for subs like:
.sub 'foo;bar'
...
.end
And, even if we fixed the semi-predicate problem during the
stringification, stripping out the information needed will be even
harder.
Yup, agree with this, but...
So, since we can we can already get the current namespace with:
current_ns = interp['namespace']
This isn't a full replacement of the functionality we'd "lose", since
you may want to get the namespace of a sub other than the one you're
currently executing. There may already be a way to do that, though...if
not, maybe the sub PMC needs a get_namespace method.
I vote we change Sub's get_string to return the simple name instead
of the full name.
Gets my vote too.
Below is a patch to do just that (mdiep++). Hearing no objections
(anyone?), I'd like to get this into 0.4.10.
With it applied, there are ~13 core subtest failures, those will need
to be fixed to expect the new behavior.
Just to be clear - are they tests of what Sub stringifies to rather than
failures as a result of other bits of the core expecting Sub to
stringify to something including the namespace? Not that both can't be
fixed, just curious.
Jonathan