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


Reply via email to