diff --git a/compile/inc/src/main/scala/sbt/inc/Analysis.scala b/compile/inc/src/main/scala/sbt/inc/Analysis.scala index 90e8c73fa..d9a9dee26 100644 --- a/compile/inc/src/main/scala/sbt/inc/Analysis.scala +++ b/compile/inc/src/main/scala/sbt/inc/Analysis.scala @@ -5,6 +5,7 @@ package sbt package inc import xsbti.api.Source +import xsbti.DependencyContext._ import java.io.File /** diff --git a/compile/inc/src/main/scala/sbt/inc/Compile.scala b/compile/inc/src/main/scala/sbt/inc/Compile.scala index dd2dc4223..cd99e0e8b 100644 --- a/compile/inc/src/main/scala/sbt/inc/Compile.scala +++ b/compile/inc/src/main/scala/sbt/inc/Compile.scala @@ -10,6 +10,7 @@ import xsbti.{ Position, Problem, Severity } import Logger.{ m2o, problem } import java.io.File import xsbti.api.Definition +import xsbti.DependencyContext._ object IncrementalCompile { def apply(sources: Set[File], entry: String => Option[File], diff --git a/compile/inc/src/main/scala/sbt/inc/Dependency.scala b/compile/inc/src/main/scala/sbt/inc/Dependency.scala index a10d33d00..668c687fd 100644 --- a/compile/inc/src/main/scala/sbt/inc/Dependency.scala +++ b/compile/inc/src/main/scala/sbt/inc/Dependency.scala @@ -2,22 +2,7 @@ package sbt.inc import java.io.File import xsbti.api.Source - -/** - * Represents contextual information about particular depedency edge. See comments in - * subtypes for examples of particular contexts. - */ -private[inc] sealed abstract class DependencyContext - -/** - * Marks dependency edge introduced by referring to a class through inheritance as in - * - * class A extends B - * - * Each dependency by inheritance introduces corresponding dependency by member reference. - */ -private[inc] final case object DependencyByInheritance extends DependencyContext -private[inc] final case object DependencyByMemberRef extends DependencyContext +import xsbti.DependencyContext /** * Represents the kind of dependency that exists between `sourceFile` and either `targetFile` diff --git a/compile/inc/src/main/scala/sbt/inc/Relations.scala b/compile/inc/src/main/scala/sbt/inc/Relations.scala index 5db719311..6f7aaaf82 100644 --- a/compile/inc/src/main/scala/sbt/inc/Relations.scala +++ b/compile/inc/src/main/scala/sbt/inc/Relations.scala @@ -8,6 +8,8 @@ import java.io.File import Relations.Source import Relations.SourceDependencies import xsbti.api.{ Source => APISource } +import xsbti.DependencyContext +import xsbti.DependencyContext._ /** * Provides mappings between source files, generated classes (products), and binaries. diff --git a/compile/persist/src/main/scala/sbt/inc/AnalysisFormats.scala b/compile/persist/src/main/scala/sbt/inc/AnalysisFormats.scala index 1af8278aa..d74b81645 100644 --- a/compile/persist/src/main/scala/sbt/inc/AnalysisFormats.scala +++ b/compile/persist/src/main/scala/sbt/inc/AnalysisFormats.scala @@ -7,6 +7,7 @@ package inc import xsbti.api.{ Source, Compilation } import xsbti.{ Position, Problem, Severity } import xsbti.compile.{ CompileOrder, Output => APIOutput, SingleOutput, MultipleOutput } +import xsbti.DependencyContext._ import MultipleOutput.OutputGroup import java.io.File import sbinary._ diff --git a/interface/src/main/java/xsbti/DependencyContext.java b/interface/src/main/java/xsbti/DependencyContext.java new file mode 100644 index 000000000..15cfa76d1 --- /dev/null +++ b/interface/src/main/java/xsbti/DependencyContext.java @@ -0,0 +1,22 @@ +package xsbti; + +/** + * Enumeration of existing dependency contexts. + * Dependency contexts represent the various kind of dependencies that + * can exist between symbols. + */ +public enum DependencyContext { + /** + * Represents a direct dependency between two symbols : + * object Foo + * object Bar { def foo = Foo } + */ + DependencyByMemberRef, + + /** + * Represents an inheritance dependency between two symbols : + * class A + * class B extends A + */ + DependencyByInheritance +}