package lintpack

import (
	"go/ast"
)

type checkerProto struct {
	info        *CheckerInfo
	constructor func(*Context, parameters) *Checker
}

type Checker struct {
	Info *CheckerInfo

	ctx CheckerContext

	fileWalker FileWalker

	Init func(ctx *Context)
}

// Check runs rule checker over file f.
func (c *Checker) Check(f *ast.File) []Warning {
	c.ctx.warnings = c.ctx.warnings[:0]
	c.fileWalker.WalkFile(f)
	return c.ctx.warnings
}