From cecf8b93283dd9fddacdf05db583644a2f3b0bbb Mon Sep 17 00:00:00 2001 From: Rob Findley Date: Fri, 12 May 2023 11:31:28 -0400 Subject: [PATCH] go/types: minor refactoring of missingMethod following CL 494615 Make the refactoring suggested by gri@ in that CL. Change-Id: I6c363f3ba5aaa3c616d3982d998b989de7046a86 Reviewed-on: https://go-review.googlesource.com/c/go/+/494617 Run-TryBot: Robert Findley Reviewed-by: Robert Griesemer TryBot-Result: Gopher Robot --- src/cmd/compile/internal/types2/lookup.go | 11 +++++++---- src/go/types/lookup.go | 11 +++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/cmd/compile/internal/types2/lookup.go b/src/cmd/compile/internal/types2/lookup.go index ccf724373b7..b7370ca38d0 100644 --- a/src/cmd/compile/internal/types2/lookup.go +++ b/src/cmd/compile/internal/types2/lookup.go @@ -387,10 +387,6 @@ func (check *Checker) missingMethod(V, T Type, static bool, equivalent func(x, y obj, _, _ = lookupFieldOrMethodImpl(V, false, m.pkg, m.name, true /* fold case */) f, _ = obj.(*Func) if f != nil { - // This method is formatted in funcString below, so must be type-checked. - if check != nil { - check.objDecl(f, nil) - } state = wrongName } } @@ -421,6 +417,13 @@ func (check *Checker) missingMethod(V, T Type, static bool, equivalent func(x, y } if cause != nil { + if f != nil { + // This method may be formatted in funcString below, so must have a fully + // set up signature. + if check != nil { + check.objDecl(f, nil) + } + } switch state { case notFound: switch { diff --git a/src/go/types/lookup.go b/src/go/types/lookup.go index 0ff5db74e62..d96dd86e5eb 100644 --- a/src/go/types/lookup.go +++ b/src/go/types/lookup.go @@ -389,10 +389,6 @@ func (check *Checker) missingMethod(V, T Type, static bool, equivalent func(x, y obj, _, _ = lookupFieldOrMethodImpl(V, false, m.pkg, m.name, true /* fold case */) f, _ = obj.(*Func) if f != nil { - // This method is formatted in funcString below, so must be type-checked. - if check != nil { - check.objDecl(f, nil) - } state = wrongName } } @@ -423,6 +419,13 @@ func (check *Checker) missingMethod(V, T Type, static bool, equivalent func(x, y } if cause != nil { + if f != nil { + // This method may be formatted in funcString below, so must have a fully + // set up signature. + if check != nil { + check.objDecl(f, nil) + } + } switch state { case notFound: switch {