aboutsummaryrefslogtreecommitdiff
path: root/go/ssa/parameterized.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/ssa/parameterized.go')
-rw-r--r--go/ssa/parameterized.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/go/ssa/parameterized.go b/go/ssa/parameterized.go
index 956718cd7..3fc4348fc 100644
--- a/go/ssa/parameterized.go
+++ b/go/ssa/parameterized.go
@@ -17,7 +17,7 @@ type tpWalker struct {
seen map[types.Type]bool
}
-// isParameterized returns true when typ contains any type parameters.
+// isParameterized returns true when typ reaches any type parameter.
func (w *tpWalker) isParameterized(typ types.Type) (res bool) {
// NOTE: Adapted from go/types/infer.go. Try to keep in sync.
@@ -101,6 +101,7 @@ func (w *tpWalker) isParameterized(typ types.Type) (res bool) {
return true
}
}
+ return w.isParameterized(t.Underlying()) // recurse for types local to parameterized functions
case *typeparams.TypeParam:
return true
@@ -111,3 +112,12 @@ func (w *tpWalker) isParameterized(typ types.Type) (res bool) {
return false
}
+
+func (w *tpWalker) anyParameterized(ts []types.Type) bool {
+ for _, t := range ts {
+ if w.isParameterized(t) {
+ return true
+ }
+ }
+ return false
+}