func NewSpecValidationError(m string, f string) SpecValidationError {
	return SpecValidationError{message: m, fileName: f}
}
NewSpecValidationError generates new spec validation error with error message and filename.
package validation
import (
	"errors"
	"fmt"
	"os"
	"strconv"
	"strings"
	gm "github.com/getgauge/gauge-proto/go/gauge_messages"
	"github.com/getgauge/gauge/api"
	"github.com/getgauge/gauge/gauge"
	"github.com/getgauge/gauge/logger"
	"github.com/getgauge/gauge/parser"
	"github.com/getgauge/gauge/runner"
	"github.com/getgauge/gauge/util"
)
var TableRows = ""
var HideSuggestion bool
type validator struct {
	specsToExecute     []*gauge.Specification
	runner             runner.Runner
	conceptsDictionary *gauge.ConceptDictionary
}
type SpecValidator struct {
	specification       *gauge.Specification
	runner              runner.Runner
	conceptsDictionary  *gauge.ConceptDictionary
	validationErrors    []error
	stepValidationCache map[string]error
}
type StepValidationError struct {
	step       *gauge.Step
	message    string
	fileName   string
	errorType  *gm.StepValidateResponse_ErrorType
	suggestion string
}
type SpecValidationError struct {
	message  string
	fileName string
}
func (s StepValidationError) Message() string {
	return s.message
}
func (s StepValidationError) Step() *gauge.Step {
	return s.step
}
func (s StepValidationError) FileName() string {
	return s.fileName
}
func (s StepValidationError) ErrorType() gm.StepValidateResponse_ErrorType {
	return *s.errorType
}
func (s StepValidationError) Error() string {
	return fmt.Sprintf("%s:%d %s => '%s'", s.fileName, s.step.LineNo, s.message, s.step.GetLineText())
}
func (s StepValidationError) Suggestion() string {
	return s.suggestion
}
func (s SpecValidationError) Error() string {
	return fmt.Sprintf("%s %s", s.fileName, s.message)
}