|  | // Copyright 2021 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | //go:build !compiler_bootstrap | 
|  |  | 
|  | package main | 
|  |  | 
|  | import ( | 
|  | "go/ast" | 
|  | "go/token" | 
|  | ) | 
|  |  | 
|  | func (f *File) walkUnexpected(x interface{}, context astContext, visit func(*File, interface{}, astContext)) { | 
|  | switch n := x.(type) { | 
|  | default: | 
|  | error_(token.NoPos, "unexpected type %T in walk", x) | 
|  | panic("unexpected type") | 
|  |  | 
|  | case *ast.IndexListExpr: | 
|  | f.walk(&n.X, ctxExpr, visit) | 
|  | f.walk(n.Indices, ctxExpr, visit) | 
|  | } | 
|  | } | 
|  |  | 
|  | func funcTypeTypeParams(n *ast.FuncType) *ast.FieldList { | 
|  | return n.TypeParams | 
|  | } | 
|  |  | 
|  | func typeSpecTypeParams(n *ast.TypeSpec) *ast.FieldList { | 
|  | return n.TypeParams | 
|  | } |