in reply to Re: Introspecting type informations? HvNAME(SvSTASH(SvRV(ST(0))))
in thread Introspecting type informations?

Thanks, probably you forgot to define TYPE.

FYI you don't need inline C, B::Deparse is written in Perl and accessing all methods via the B:: backend.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

  • Comment on Re^2: Introspecting type informations? HvNAME(SvSTASH(SvRV(ST(0))))

Replies are listed 'Best First'.
Re^3: Introspecting type informations? HvNAME(SvSTASH(SvRV(ST(0))))
by Anonymous Monk on Aug 04, 2019 at 12:48 UTC
    Heh. Didnt forget diagnostics always reminds. Show the B code then.

        LanX:

        In the page you linked, it looks like lines 1612 and 1613 (inside subroutine maybe_my) fetch the information from the PAD if it's a typed PAD:

        1607: if ($op->private & OPpLVAL_INTRO and not $self->{'avoid_local'}{ +$$op}) { 1608: # Check $padname->FLAGS for statehood, rather than $op->p +rivate, 1609: # because enteriter ops do not carry the flag. 1610: my $my = 1611: $self->keyword($padname->FLAGS & SVpad_STATE ? "state +" : "my"); 1612: if ($padname->FLAGS & SVpad_TYPED) { 1613: $my .= ' ' . $padname->SvSTASH->NAME; 1614: }

        I didn't dig any further into it because it looks like the right thing. Hopefully that'll get you on the trail to the info you're looking for.

        Note: I got lucky when looking for it, as I first did a ^F in the browser looking for my, but it indicated over 1000 results. However, it also added highlights, drawing my attention to the first item: OPpTARGET_MY. Changing the search to _my gave a mere 6 locations, and the third one shows where the type name gets added to the "my TYPE VAR" output for Deparse. Had it not done so, it may have taken a while to dig it up.

        ...roboticus

        When your only tool is a hammer, all problems look like your thumb.