package result

import "go/token"

type Range struct {
	From, To int
}

type Issue struct {
	FromLinter string
	Text       string

	Pos       token.Position
	LineRange *Range `json:",omitempty"`
	HunkPos   int    `json:",omitempty"`

	SourceLines []string
}

func (i Issue) FilePath() string {
	return i.Pos.Filename
}

func (i Issue) Line() int {
	return i.Pos.Line
}

func (i Issue) Column() int {
	return i.Pos.Column
}

func (i Issue) GetLineRange() Range {
	if i.LineRange == nil {
		return Range{
			From: i.Line(),
			To:   i.Line(),
		}
	}

	if i.LineRange.From == 0 {
		return Range{
			From: i.Line(),
			To:   i.Line(),
		}
	}

	return *i.LineRange
}