diff options
Diffstat (limited to 'go/ssa/parameterized.go')
-rw-r--r-- | go/ssa/parameterized.go | 12 |
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 +} |