mirror of
https://github.com/google/go-jsonnet.git
synced 2025-08-07 14:57:24 +02:00
55 lines
1.5 KiB
Go
55 lines
1.5 KiB
Go
// Package common provides utilities to be used in multiple linter
|
|
// subpackages.
|
|
package common
|
|
|
|
import (
|
|
"github.com/google/go-jsonnet/ast"
|
|
"github.com/google/go-jsonnet/internal/errors"
|
|
)
|
|
|
|
// VariableKind allows distinguishing various kinds of variables.
|
|
type VariableKind int
|
|
|
|
const (
|
|
// VarRegular is a "normal" variable with a definition in the code.
|
|
VarRegular VariableKind = iota
|
|
// VarParam is a function parameter.
|
|
VarParam
|
|
// VarStdlib is a special `std` variable.
|
|
VarStdlib
|
|
)
|
|
|
|
// Variable is a representation of a variable somewhere in the code.
|
|
type Variable struct {
|
|
Name ast.Identifier
|
|
BindNode ast.Node
|
|
Occurences []ast.Node
|
|
VariableKind VariableKind
|
|
LocRange ast.LocationRange
|
|
}
|
|
|
|
// VariableInfo holds information about a variables from one file
|
|
type VariableInfo struct {
|
|
Variables []*Variable
|
|
|
|
// Variable information at every use site.
|
|
// More precisely it maps every *ast.Var to the variable.
|
|
VarAt map[ast.Node]*Variable
|
|
}
|
|
|
|
// ErrCollector is a struct for accumulating warnings / errors from the linter.
|
|
// It is slightly more convenient and more clear than passing pointers to slices around.
|
|
type ErrCollector struct {
|
|
Errs []errors.StaticError
|
|
}
|
|
|
|
// Collect adds an error to the list
|
|
func (ec *ErrCollector) Collect(err errors.StaticError) {
|
|
ec.Errs = append(ec.Errs, err)
|
|
}
|
|
|
|
// StaticErr constructs a static error from msg and loc and adds it to the list.
|
|
func (ec *ErrCollector) StaticErr(msg string, loc *ast.LocationRange) {
|
|
ec.Collect(errors.MakeStaticError(msg, *loc))
|
|
}
|