
org.langmeta.internal.ScalafixLangmetaHacks.scala Maven / Gradle / Ivy
package org.langmeta.internal
import scala.compat.Platform.EOL
import org.langmeta._
object ScalafixLangmetaHacks {
// Workaround for https://github.com/scalameta/scalameta/issues/1115
def formatMessage(
pos: Position,
severity: String,
message: String): String = {
if (pos != Position.None) {
val input = pos.input
val startLine = pos.startLine + 1
val startColumn = pos.startColumn + 1
val header =
s"${input.syntax}:$startLine:$startColumn: $severity: $message"
val line = {
val start = input.lineToOffset(pos.startLine)
val notEof = start < input.chars.length
val end = if (notEof) input.lineToOffset(pos.startLine + 1) else start
val count = end - start
val eolOffset =
if (input.chars.lift(start + count - 1).contains('\n')) -1 else 0
new String(input.chars, start, math.max(0, count + eolOffset))
}
val caret = " " * pos.startColumn + "^"
header + EOL + line + EOL + caret
} else {
s"$severity: $message"
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy