diff --git a/go/extractor/extractor.go b/go/extractor/extractor.go index c0eef233ba58..e4059e3e90c1 100644 --- a/go/extractor/extractor.go +++ b/go/extractor/extractor.go @@ -475,11 +475,11 @@ func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label) populateTypeParamParents(funcObj.Type().(*types.Signature).TypeParams(), obj) populateTypeParamParents(funcObj.Type().(*types.Signature).RecvTypeParams(), obj) } - // Populate type parameter parents for named types. Note that we - // skip type aliases as the original type should be the parent - // of any type parameters. - if typeNameObj, ok := obj.(*types.TypeName); ok && !typeNameObj.IsAlias() { - if tp, ok := typeNameObj.Type().(*types.Named); ok { + // Populate type parameter parents for named types. + if typeNameObj, ok := obj.(*types.TypeName); ok { + if tp, ok := typeNameObj.Type().(*types.Named); ok && !typeNameObj.IsAlias() { + populateTypeParamParents(tp.TypeParams(), obj) + } else if tp, ok := typeNameObj.Type().(*types.Alias); ok { populateTypeParamParents(tp.TypeParams(), obj) } }