diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index f687f54c9777..c45443907530 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -1582,18 +1582,10 @@ func isAlias(tp types.Type) bool { return ok } -// If the given type is a type alias, this function resolves it to its underlying type. -func resolveTypeAlias(tp types.Type) types.Type { - if isAlias(tp) { - return types.Unalias(tp) // tp.Underlying() - } - return tp -} - // extractType extracts type information for `tp` and returns its associated label; // types are only extracted once, so the second time `extractType` is invoked it simply returns the label func extractType(tw *trap.Writer, tp types.Type) trap.Label { - tp = resolveTypeAlias(tp) + tp = types.Unalias(tp) lbl, exists := getTypeLabel(tw, tp) if !exists { var kind int @@ -1771,7 +1763,7 @@ func extractType(tw *trap.Writer, tp types.Type) trap.Label { // is constructed from their globally unique ID. This prevents cyclic type keys // since type recursion in Go always goes through defined types. func getTypeLabel(tw *trap.Writer, tp types.Type) (trap.Label, bool) { - tp = resolveTypeAlias(tp) + tp = types.Unalias(tp) lbl, exists := tw.Labeler.TypeLabels[tp] if !exists { switch tp := tp.(type) { diff --git a/go/extractor/trap/labels.go b/go/extractor/trap/labels.go index 79ac9192e026..2822da61ff14 100644 --- a/go/extractor/trap/labels.go +++ b/go/extractor/trap/labels.go @@ -169,11 +169,12 @@ func (l *Labeler) ScopedObjectID(object types.Object, getTypeLabel func() Label) // findMethodWithGivenReceiver finds a method with `object` as its receiver, if one exists func findMethodWithGivenReceiver(object types.Object) *types.Func { - meth := findMethodOnTypeWithGivenReceiver(object.Type(), object) + unaliasedType := types.Unalias(object.Type()) + meth := findMethodOnTypeWithGivenReceiver(unaliasedType, object) if meth != nil { return meth } - if pointerType, ok := object.Type().(*types.Pointer); ok { + if pointerType, ok := unaliasedType.(*types.Pointer); ok { meth = findMethodOnTypeWithGivenReceiver(pointerType.Elem(), object) } return meth