package sbt

sealed trait SourcePosition

sealed trait FilePosition extends SourcePosition {
	def path: String
	def startLine: Int
}

case object NoPosition extends SourcePosition

final case class LinePosition(path: String, startLine: Int) extends FilePosition

final case class LineRange(start: Int, end: Int) {
	def shift(n: Int) = new LineRange(start + n, end + n)
}

final case class RangePosition(path: String, range: LineRange) extends FilePosition {
	def startLine = range.start
}