Note the main.(*Treap[.shape.*uint8_0,.shape.*uint8_1]).Get.
I understand why the name is needed in the binary, but it's not a great name to see in the stack trace.
It seems like we should probably elide that part, as in main.(*Treap[...]).Get,
or else make it more readable somehow.
I think this might be the first case where we slightly change a function name in a backtrace, rather than completely omit the function entry (as with wrappers). I guess maybe we can use the '...' as a good indication that the user that the name is not exactly what is in the binary (i.e. the user will see something different if they debug the crash in gdb). Or maybe we can think of some further way to highlight the change (something at the beginning of the line?).
If we had access to the dictionary we could print the real type(s) the code is instantiated with, as if it was fully stenciled. That could be tough, though, as we'd need to keep the dictionary reference alive and in a known location.
The dictionary argument is implicit; the user doesn't need to see it.
Trust: Keith Randall <email@example.com>
Trust: Dan Scales <firstname.lastname@example.org>
Run-TryBot: Keith Randall <email@example.com>
TryBot-Result: Go Bot <firstname.lastname@example.org>
Reviewed-by: Dan Scales <email@example.com>