aboutsummaryrefslogtreecommitdiffhomepage
path: root/codegen/methods.go
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/methods.go')
-rw-r--r--codegen/methods.go16
1 files changed, 10 insertions, 6 deletions
diff --git a/codegen/methods.go b/codegen/methods.go
index 9bc80cc3e..65a7cc2b7 100644
--- a/codegen/methods.go
+++ b/codegen/methods.go
@@ -452,12 +452,16 @@ func collectMethodsRecursive(pkg string, f []*ast.Field) []string {
}
if ident, ok := m.Type.(*ast.Ident); ok && ident.Obj != nil {
- // Embedded interface
- methodNames = append(
- methodNames,
- collectMethodsRecursive(
- pkg,
- ident.Obj.Decl.(*ast.TypeSpec).Type.(*ast.InterfaceType).Methods.List)...)
+ switch tt := ident.Obj.Decl.(*ast.TypeSpec).Type.(type) {
+ case *ast.InterfaceType:
+ // Embedded interface
+ methodNames = append(
+ methodNames,
+ collectMethodsRecursive(
+ pkg,
+ tt.Methods.List)...)
+ }
+
} else {
// Embedded, but in a different file/package. Return the
// package.Name and deal with that later.