aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/lookup.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2021-07-02 18:12:02 -0700
committerRobert Griesemer <gri@golang.org>2021-07-07 23:42:29 +0000
commit18135150b0ce945735d242eb6259ffc9b5c767d0 (patch)
tree49e225267b7cb510e993142cfc650c7a87ad31e2 /src/cmd/compile/internal/types2/lookup.go
parentd2bf94fb86b45609564919caa21c6b098b5197d3 (diff)
downloadgo-18135150b0ce945735d242eb6259ffc9b5c767d0.tar.gz
go-18135150b0ce945735d242eb6259ffc9b5c767d0.zip
[dev.typeparams] cmd/compile/internal/types2: don't permit method calls on ptr to type parameter receivers
Simplify the implementation of asInterface while at it. For #47031. Change-Id: Ie7d4fbbab898d961ed3c0b7772ba9604641be13f Reviewed-on: https://go-review.googlesource.com/c/go/+/332609 Trust: Robert Griesemer <gri@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/lookup.go')
-rw-r--r--src/cmd/compile/internal/types2/lookup.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/cmd/compile/internal/types2/lookup.go b/src/cmd/compile/internal/types2/lookup.go
index d59a2f474c..91be14bde3 100644
--- a/src/cmd/compile/internal/types2/lookup.go
+++ b/src/cmd/compile/internal/types2/lookup.go
@@ -73,10 +73,12 @@ func lookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (o
typ, isPtr := deref(T)
- // *typ where typ is an interface has no methods.
- // Be cautious: typ may be nil (issue 39634, crash #3).
- if typ == nil || isPtr && IsInterface(typ) {
- return
+ // *typ where typ is an interface or type parameter has no methods.
+ switch under(typ).(type) {
+ case *Interface, *TypeParam:
+ if isPtr {
+ return
+ }
}
// Start with typ as single entry at shallowest depth.