package astwalk import ( "go/ast" ) type localCommentWalker struct { visitor LocalCommentVisitor } func (w *localCommentWalker) WalkFile(f *ast.File) { if !w.visitor.EnterFile(f) { return } for _, decl := range f.Decls { decl, ok := decl.(*ast.FuncDecl) if !ok || !w.visitor.EnterFunc(decl) { continue } for _, cg := range f.Comments { // Not sure that decls/comments are sorted // by positions, so do a naive full scan for now. if cg.Pos() < decl.Pos() || cg.Pos() > decl.End() { continue } visitCommentGroups(cg, w.visitor.VisitLocalComment) } } }