# New Ticket Created by Will Coleda # Please include the string: [perl #41790] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=41790 >
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. So, since we can we can already get the current namespace with: current_ns = interp['namespace'] I vote we change Sub's get_string to return the simple name instead of the full name. 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. === src/pmc/sub.pmc ================================================================== --- src/pmc/sub.pmc (revision 4399) +++ src/pmc/sub.pmc (local) @@ -120,7 +120,8 @@ */ STRING* get_string() { - return Parrot_full_sub_name(INTERP, SELF); + struct Parrot_sub * const sub = PMC_sub(SELF); + return Parrot_make_COW_reference(INTERP, sub->name); } void set_string_native(STRING *subname) { -- Will "Coke" Coleda [EMAIL PROTECTED]