Merge pull request #7039 from eed3si9n/bport/7006

[1.8.x] fix: also include diagnosticCode and related info in InterfaceUtil
This commit is contained in:
eugene yokota 2022-10-02 06:33:45 -04:00 committed by GitHub
commit abd9f13b6f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 36 additions and 3 deletions

View File

@ -7,10 +7,14 @@
package sbt.util
import xsbti.{ Position, Problem, Severity, T2 }
import java.io.File
import java.util.Optional
import java.util.function.Supplier
import java.{ util => ju }
import xsbti.{ DiagnosticCode, DiagnosticRelatedInformation, Position, Problem, Severity, T2 }
import scala.collection.mutable.ListBuffer
object InterfaceUtil {
def toSupplier[A](a: => A): Supplier[A] = new Supplier[A] {
@ -43,6 +47,18 @@ object InterfaceUtil {
case None => Optional.empty[A]()
}
def l2jl[A](l: List[A]): ju.List[A] = {
val jl = new ju.ArrayList[A](l.size)
l.foreach(jl.add(_))
jl
}
def jl2l[A](jl: ju.List[A]): List[A] = {
val l = ListBuffer[A]()
jl.forEach(l += _)
l.toList
}
@deprecated("Use the overload of this method with more arguments", "1.2.2")
def position(
line0: Option[Integer],
@ -104,6 +120,7 @@ object InterfaceUtil {
def problem(cat: String, pos: Position, msg: String, sev: Severity): Problem =
problem(cat, pos, msg, sev, None)
@deprecated("Use the overload of this method with more arguments", "1.7.2")
def problem(
cat: String,
pos: Position,
@ -111,7 +128,18 @@ object InterfaceUtil {
sev: Severity,
rendered: Option[String]
): Problem =
new ConcreteProblem(cat, pos, msg, sev, rendered)
problem(cat, pos, msg, sev, rendered, None, List.empty[DiagnosticRelatedInformation])
def problem(
cat: String,
pos: Position,
msg: String,
sev: Severity,
rendered: Option[String],
diagnosticCode: Option[DiagnosticCode],
diagnosticRelatedInforamation: List[DiagnosticRelatedInformation]
): Problem =
new ConcreteProblem(cat, pos, msg, sev, rendered, diagnosticCode, diagnosticRelatedInforamation)
private final class ConcreteT2[A1, A2](a1: A1, a2: A2) extends T2[A1, A2] {
val get1: A1 = a1
@ -166,13 +194,18 @@ object InterfaceUtil {
pos: Position,
msg: String,
sev: Severity,
rendered0: Option[String]
rendered0: Option[String],
diagnosticCode0: Option[DiagnosticCode],
diagnosticRelatedInformation0: List[DiagnosticRelatedInformation]
) extends Problem {
val category = cat
val position = pos
val message = msg
val severity = sev
override val rendered = o2jo(rendered0)
override def diagnosticCode: Optional[DiagnosticCode] = o2jo(diagnosticCode0)
override def diagnosticRelatedInforamation(): ju.List[DiagnosticRelatedInformation] =
l2jl(diagnosticRelatedInformation0)
override def toString = s"[$severity] $pos: $message"
}
}