All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scalafix.internal.interfaces.ScalafixDiagnosticImpl.scala Maven / Gradle / Ivy

The newest version!
package scalafix.internal.interfaces
import java.util.Optional

import scalafix.interfaces.ScalafixDiagnostic
import scalafix.interfaces.ScalafixLintID
import scalafix.interfaces.ScalafixPosition
import scalafix.interfaces.ScalafixSeverity
import scalafix.lint.LintID
import scalafix.lint.LintSeverity
import scalafix.lint.RuleDiagnostic

object ScalafixDiagnosticImpl {
  def fromScala(diagnostic: RuleDiagnostic): ScalafixDiagnostic =
    DelegateJavaDiagnostic(diagnostic)

  def fromJava(scalafixDiagnostic: ScalafixDiagnostic): RuleDiagnostic = {
    scalafixDiagnostic match {
      case DelegateJavaDiagnostic(underlying) =>
        underlying
      case _ =>
        throw new IllegalArgumentException(
          "Unexpected diagnostic: " + scalafixDiagnostic.toString
        )
    }
  }
}

case class DelegateJavaDiagnostic(diagnostic: RuleDiagnostic)
    extends ScalafixDiagnostic {
  override def severity(): ScalafixSeverity = diagnostic.severity match {
    case LintSeverity.Info => ScalafixSeverity.INFO
    case LintSeverity.Warning => ScalafixSeverity.WARNING
    case LintSeverity.Error => ScalafixSeverity.ERROR
  }
  override def message(): String = diagnostic.message
  override def explanation(): String = diagnostic.explanation
  override def position(): Optional[ScalafixPosition] =
    PositionImpl.optionalFromScala(diagnostic.position)
  override def lintID(): Optional[ScalafixLintID] =
    if (diagnostic.id == LintID.empty) {
      Optional.empty()
    } else {
      Optional.of(new ScalafixLintID {
        override def ruleName(): String = diagnostic.id.rule
        override def categoryID(): String = diagnostic.id.category
      })
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy