mirror of https://github.com/sbt/sbt.git
commit
965de89c64
|
|
@ -32,7 +32,8 @@ def commonSettings: Seq[Setting[_]] = Seq(
|
|||
val mimaSettings = Def settings (
|
||||
mimaPreviousArtifacts := Set(
|
||||
"1.0.0", "1.0.1", "1.0.2", "1.0.3",
|
||||
"1.1.0", "1.1.1", "1.1.2", "1.1.3"
|
||||
"1.1.0", "1.1.1", "1.1.2", "1.1.3",
|
||||
"1.2.0", "1.2.1"
|
||||
) map (version =>
|
||||
organization.value %% moduleName.value % version
|
||||
cross (if (crossPaths.value) CrossVersion.binary else CrossVersion.disabled)
|
||||
|
|
@ -53,7 +54,7 @@ lazy val utilRoot: Project = (project in file("."))
|
|||
.settings(
|
||||
inThisBuild(
|
||||
Seq(
|
||||
git.baseVersion := "1.2.0",
|
||||
git.baseVersion := "1.2.2",
|
||||
version := {
|
||||
val v = version.value
|
||||
if (v contains "SNAPSHOT") git.baseVersion.value + "-SNAPSHOT"
|
||||
|
|
@ -123,6 +124,9 @@ lazy val utilLogging = (project in internalPath / "util-logging")
|
|||
exclude[DirectMissingMethodProblem]("sbt.internal.util.SuccessEvent.copy*"),
|
||||
exclude[DirectMissingMethodProblem]("sbt.internal.util.TraceEvent.copy*"),
|
||||
exclude[DirectMissingMethodProblem]("sbt.internal.util.StringEvent.copy*"),
|
||||
// Private final class constructors changed
|
||||
exclude[DirectMissingMethodProblem]("sbt.util.InterfaceUtil#ConcretePosition.this"),
|
||||
exclude[DirectMissingMethodProblem]("sbt.util.InterfaceUtil#ConcreteProblem.this"),
|
||||
),
|
||||
)
|
||||
.configure(addSbtIO)
|
||||
|
|
|
|||
|
|
@ -18,4 +18,12 @@ public interface Position
|
|||
|
||||
Optional<String> sourcePath();
|
||||
Optional<File> sourceFile();
|
||||
|
||||
// Default values to avoid breaking binary compatibility
|
||||
default Optional<Integer> startOffset() { return Optional.empty(); }
|
||||
default Optional<Integer> endOffset() { return Optional.empty(); }
|
||||
default Optional<Integer> startLine() { return Optional.empty(); }
|
||||
default Optional<Integer> startColumn() { return Optional.empty(); }
|
||||
default Optional<Integer> endLine() { return Optional.empty(); }
|
||||
default Optional<Integer> endColumn() { return Optional.empty(); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,20 @@
|
|||
*/
|
||||
package xsbti;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public interface Problem
|
||||
{
|
||||
String category();
|
||||
Severity severity();
|
||||
String message();
|
||||
Position position();
|
||||
}
|
||||
|
||||
// Default value to avoid breaking binary compatibility
|
||||
/**
|
||||
* If present, the string shown to the user when displaying this Problem.
|
||||
* Otherwise, the Problem will be shown in an implementation-defined way
|
||||
* based on the values of its other fields.
|
||||
*/
|
||||
default Optional<String> rendered() { return Optional.empty(); }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,12 @@ type Position {
|
|||
pointerSpace: String
|
||||
sourcePath: String
|
||||
sourceFile: java.io.File
|
||||
startOffset: Int
|
||||
endOffset: Int
|
||||
startLine: Int
|
||||
startColumn: Int
|
||||
endLine: Int
|
||||
endColumn: Int
|
||||
}
|
||||
|
||||
type Problem {
|
||||
|
|
@ -23,4 +29,5 @@ type Problem {
|
|||
severity: Severity!
|
||||
message: String!
|
||||
position: Position!
|
||||
rendered: String
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,6 +19,13 @@ trait PositionFormats { self: sjsonnew.BasicJsonProtocol =>
|
|||
val pointerSpace0 = unbuilder.readField[Optional[String]]("pointerSpace")
|
||||
val sourcePath0 = unbuilder.readField[Optional[String]]("sourcePath")
|
||||
val sourceFile0 = unbuilder.readField[Optional[java.io.File]]("sourceFile")
|
||||
val startOffset0 = unbuilder.readField[Optional[java.lang.Integer]]("startOffset")
|
||||
val endOffset0 = unbuilder.readField[Optional[java.lang.Integer]]("endOffset")
|
||||
val startLine0 = unbuilder.readField[Optional[java.lang.Integer]]("startLine")
|
||||
val startColumn0 = unbuilder.readField[Optional[java.lang.Integer]]("startColumn")
|
||||
val endLine0 = unbuilder.readField[Optional[java.lang.Integer]]("endLine")
|
||||
val endColumn0 = unbuilder.readField[Optional[java.lang.Integer]]("endColumn")
|
||||
|
||||
unbuilder.endObject()
|
||||
new Position() {
|
||||
override val line = line0
|
||||
|
|
@ -28,6 +35,13 @@ trait PositionFormats { self: sjsonnew.BasicJsonProtocol =>
|
|||
override val pointerSpace = pointerSpace0
|
||||
override val sourcePath = sourcePath0
|
||||
override val sourceFile = sourceFile0
|
||||
override val startOffset = startOffset0
|
||||
override val endOffset = endOffset0
|
||||
override val startLine = startLine0
|
||||
override val startColumn = startColumn0
|
||||
override val endLine = endLine0
|
||||
override val endColumn = endColumn0
|
||||
|
||||
}
|
||||
case None =>
|
||||
deserializationError("Expected JsObject but found None")
|
||||
|
|
@ -42,6 +56,13 @@ trait PositionFormats { self: sjsonnew.BasicJsonProtocol =>
|
|||
builder.addField("pointerSpace", obj.pointerSpace)
|
||||
builder.addField("sourcePath", obj.sourcePath)
|
||||
builder.addField("sourceFile", obj.sourceFile)
|
||||
builder.addField("startOffset", obj.startOffset)
|
||||
builder.addField("endOffset", obj.endOffset)
|
||||
builder.addField("startLine", obj.startLine)
|
||||
builder.addField("startColumn", obj.startColumn)
|
||||
builder.addField("endLine", obj.endLine)
|
||||
builder.addField("endColumn", obj.endColumn)
|
||||
|
||||
builder.endObject()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
package sbt.internal.util.codec
|
||||
|
||||
import xsbti.{ Problem, Severity, Position }
|
||||
import sbt.util.InterfaceUtil.problem
|
||||
import _root_.sjsonnew.{ deserializationError, Builder, JsonFormat, Unbuilder }
|
||||
import java.util.Optional
|
||||
|
||||
trait ProblemFormats { self: SeverityFormats with PositionFormats with sjsonnew.BasicJsonProtocol =>
|
||||
implicit lazy val ProblemFormat: JsonFormat[Problem] = new JsonFormat[Problem] {
|
||||
|
|
@ -13,12 +13,20 @@ trait ProblemFormats { self: SeverityFormats with PositionFormats with sjsonnew.
|
|||
jsOpt match {
|
||||
case Some(js) =>
|
||||
unbuilder.beginObject(js)
|
||||
val category = unbuilder.readField[String]("category")
|
||||
val severity = unbuilder.readField[Severity]("severity")
|
||||
val message = unbuilder.readField[String]("message")
|
||||
val position = unbuilder.readField[Position]("position")
|
||||
val category0 = unbuilder.readField[String]("category")
|
||||
val severity0 = unbuilder.readField[Severity]("severity")
|
||||
val message0 = unbuilder.readField[String]("message")
|
||||
val position0 = unbuilder.readField[Position]("position")
|
||||
val rendered0 = unbuilder.readField[Optional[String]]("rendered")
|
||||
|
||||
unbuilder.endObject()
|
||||
problem(category, position, message, severity)
|
||||
new Problem {
|
||||
override val category = category0
|
||||
override val position = position0
|
||||
override val message = message0
|
||||
override val severity = severity0
|
||||
override val rendered = rendered0
|
||||
}
|
||||
case None =>
|
||||
deserializationError("Expected JsObject but found None")
|
||||
}
|
||||
|
|
@ -29,6 +37,7 @@ trait ProblemFormats { self: SeverityFormats with PositionFormats with sjsonnew.
|
|||
builder.addField("severity", obj.severity)
|
||||
builder.addField("message", obj.message)
|
||||
builder.addField("position", obj.position)
|
||||
builder.addField("rendered", obj.rendered)
|
||||
builder.endObject()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ object InterfaceUtil {
|
|||
case None => Optional.empty[A]()
|
||||
}
|
||||
|
||||
@deprecated("Use the overload of this method with more arguments", "1.2.2")
|
||||
def position(
|
||||
line0: Option[Integer],
|
||||
content: String,
|
||||
|
|
@ -45,10 +46,59 @@ object InterfaceUtil {
|
|||
sourcePath0: Option[String],
|
||||
sourceFile0: Option[File]
|
||||
): Position =
|
||||
new ConcretePosition(line0, content, offset0, pointer0, pointerSpace0, sourcePath0, sourceFile0)
|
||||
position(line0,
|
||||
content,
|
||||
offset0,
|
||||
pointer0,
|
||||
pointerSpace0,
|
||||
sourcePath0,
|
||||
sourceFile0,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
None)
|
||||
|
||||
def position(
|
||||
line0: Option[Integer],
|
||||
content: String,
|
||||
offset0: Option[Integer],
|
||||
pointer0: Option[Integer],
|
||||
pointerSpace0: Option[String],
|
||||
sourcePath0: Option[String],
|
||||
sourceFile0: Option[File],
|
||||
startOffset0: Option[Integer],
|
||||
endOffset0: Option[Integer],
|
||||
startLine0: Option[Integer],
|
||||
startColumn0: Option[Integer],
|
||||
endLine0: Option[Integer],
|
||||
endColumn0: Option[Integer]
|
||||
): Position =
|
||||
new ConcretePosition(line0,
|
||||
content,
|
||||
offset0,
|
||||
pointer0,
|
||||
pointerSpace0,
|
||||
sourcePath0,
|
||||
sourceFile0,
|
||||
startOffset0,
|
||||
endOffset0,
|
||||
startLine0,
|
||||
startColumn0,
|
||||
endLine0,
|
||||
endColumn0)
|
||||
|
||||
@deprecated("Use the overload of this method with more arguments", "1.2.2")
|
||||
def problem(cat: String, pos: Position, msg: String, sev: Severity): Problem =
|
||||
new ConcreteProblem(cat, pos, msg, sev)
|
||||
problem(cat, pos, msg, sev, None)
|
||||
|
||||
def problem(cat: String,
|
||||
pos: Position,
|
||||
msg: String,
|
||||
sev: Severity,
|
||||
rendered: Option[String]): Problem =
|
||||
new ConcreteProblem(cat, pos, msg, sev, rendered)
|
||||
|
||||
private final class ConcreteT2[A1, A2](a1: A1, a2: A2) extends T2[A1, A2] {
|
||||
val get1: A1 = a1
|
||||
|
|
@ -75,7 +125,13 @@ object InterfaceUtil {
|
|||
pointer0: Option[Integer],
|
||||
pointerSpace0: Option[String],
|
||||
sourcePath0: Option[String],
|
||||
sourceFile0: Option[File]
|
||||
sourceFile0: Option[File],
|
||||
startOffset0: Option[Integer],
|
||||
endOffset0: Option[Integer],
|
||||
startLine0: Option[Integer],
|
||||
startColumn0: Option[Integer],
|
||||
endLine0: Option[Integer],
|
||||
endColumn0: Option[Integer]
|
||||
) extends Position {
|
||||
val line = o2jo(line0)
|
||||
val lineContent = content
|
||||
|
|
@ -84,18 +140,26 @@ object InterfaceUtil {
|
|||
val pointerSpace = o2jo(pointerSpace0)
|
||||
val sourcePath = o2jo(sourcePath0)
|
||||
val sourceFile = o2jo(sourceFile0)
|
||||
override val startOffset = o2jo(startOffset0)
|
||||
override val endOffset = o2jo(endOffset0)
|
||||
override val startLine = o2jo(startLine0)
|
||||
override val startColumn = o2jo(startColumn0)
|
||||
override val endLine = o2jo(endLine0)
|
||||
override val endColumn = o2jo(endColumn0)
|
||||
}
|
||||
|
||||
private final class ConcreteProblem(
|
||||
cat: String,
|
||||
pos: Position,
|
||||
msg: String,
|
||||
sev: Severity
|
||||
sev: Severity,
|
||||
rendered0: Option[String]
|
||||
) extends Problem {
|
||||
val category = cat
|
||||
val position = pos
|
||||
val message = msg
|
||||
val severity = sev
|
||||
override val rendered = o2jo(rendered0)
|
||||
override def toString = s"[$severity] $pos: $message"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ object Logger {
|
|||
def jo2o[A](o: Optional[A]): Option[A] = InterfaceUtil.jo2o(o)
|
||||
def o2jo[A](o: Option[A]): Optional[A] = InterfaceUtil.o2jo(o)
|
||||
|
||||
@deprecated("Use InterfaceUtil.position", "1.2.2")
|
||||
def position(
|
||||
line0: Option[Integer],
|
||||
content: String,
|
||||
|
|
@ -116,6 +117,7 @@ object Logger {
|
|||
sourceFile0
|
||||
)
|
||||
|
||||
@deprecated("Use InterfaceUtil.problem", "1.2.2")
|
||||
def problem(cat: String, pos: Position, msg: String, sev: Severity): Problem =
|
||||
InterfaceUtil.problem(cat, pos, msg, sev)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
sbt.version=1.1.6
|
||||
sbt.version=1.2.1
|
||||
|
|
|
|||
Loading…
Reference in New Issue