mirror of https://github.com/sbt/sbt.git
38 lines
1.2 KiB
Scala
38 lines
1.2 KiB
Scala
|
|
package sbt
|
||
|
|
package inc
|
||
|
|
|
||
|
|
import xsbti.Problem
|
||
|
|
|
||
|
|
import java.io.File
|
||
|
|
|
||
|
|
trait SourceInfo
|
||
|
|
{
|
||
|
|
def reportedProblems: Seq[Problem]
|
||
|
|
def unreportedProblems: Seq[Problem]
|
||
|
|
}
|
||
|
|
trait SourceInfos
|
||
|
|
{
|
||
|
|
def ++(o: SourceInfos): SourceInfos
|
||
|
|
def add(file: File, info: SourceInfo): SourceInfos
|
||
|
|
def --(files: Iterable[File]): SourceInfos
|
||
|
|
def get(file: File): SourceInfo
|
||
|
|
def allInfos: Map[File, SourceInfo]
|
||
|
|
}
|
||
|
|
object SourceInfos
|
||
|
|
{
|
||
|
|
def empty: SourceInfos = make(Map.empty)
|
||
|
|
def make(m: Map[File, SourceInfo]): SourceInfos = new MSourceInfos(m)
|
||
|
|
|
||
|
|
val emptyInfo: SourceInfo = makeInfo(Nil, Nil)
|
||
|
|
def makeInfo(reported: Seq[Problem], unreported: Seq[Problem]): SourceInfo =
|
||
|
|
new MSourceInfo(reported, unreported)
|
||
|
|
}
|
||
|
|
private final class MSourceInfos(val allInfos: Map[File, SourceInfo]) extends SourceInfos
|
||
|
|
{
|
||
|
|
def ++(o: SourceInfos) = new MSourceInfos(allInfos ++ o.allInfos)
|
||
|
|
def --(sources: Iterable[File]) = new MSourceInfos(allInfos -- sources)
|
||
|
|
def add(file: File, info: SourceInfo) = new MSourceInfos(allInfos + ((file, info)))
|
||
|
|
def get(file:File) = allInfos.getOrElse(file, SourceInfos.emptyInfo)
|
||
|
|
}
|
||
|
|
private final class MSourceInfo(val reportedProblems: Seq[Problem], val unreportedProblems: Seq[Problem]) extends SourceInfo
|