Thanks Ian for being generous with your time in answering this.  I'll see 
if I can drum up another way to make that check work. 

Cheers and have a good rest of your day.
On Monday, November 7, 2022 at 10:02:28 AM UTC-8 Ian Lance Taylor wrote:

> On Mon, Nov 7, 2022 at 9:24 AM John <johns...@gmail.com> wrote:
> >
> > Or maybe I'm just doing something wrong.
> >
> > I have a struct implementing generics where methods return the next 
> method to execute.
> >
> > For tests, I wanted to make sure the returned method was the one 
> expected, so I was using this:
> >
> > nextStageName := 
> runtime.FuncForPC(reflect.ValueOf(nextStage).Pointer()).Name()
> > (where "nextStage" is the next method)
> >
> > Here is a simple non-generic version where I get what I expect:
> > https://go.dev/play/p/kimGRS7xiP2
> >
> > result: main.(*AStruct).NextStage-fm):
> >
> > Here is probably a slightly convoluted generic version that does not:
> > https://go.dev/play/p/TUHUaZywki0
> >
> > result: main.(*GenericStruct[...]).Stage.func1
> >
> > In that version, it seem to give me the name of the method that returned 
> the next method.
> >
> > Any idea what is (or what I'm doing) wrong?
>
> I'm not sure that runtime.FuncForPC is going to work here. What it is
> reporting is a function literal defined within the Stage method (that
> is what the "func1" means). What is happening is that the Stage
> method is returning a function literal that invokes the NextStage
> method. This is due to details of how generic functions are compiled,
> and may change from release to release. In general FuncForPC is a
> fairly low level operation that has no way to avoid these sorts of
> compilation details. I don't know if there is a way to do what you
> want to do.
>
> Ian
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/ab2b391f-fd9c-4384-b349-2db97e704fd6n%40googlegroups.com.

Reply via email to