Merge pull request #176 from sbt/1.2.x

Merge 1.2.x
This commit is contained in:
eugene yokota 2018-08-29 03:27:16 -04:00 committed by GitHub
commit 965de89c64
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 139 additions and 14 deletions

View File

@ -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)

View File

@ -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(); }
}

View File

@ -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(); }
}

View File

@ -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
}

View File

@ -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()
}
}

View File

@ -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()
}
}

View File

@ -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"
}
}

View File

@ -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)
}

View File

@ -1 +1 @@
sbt.version=1.1.6
sbt.version=1.2.1