Сломанная компиляция SBT - ошибка или особенность?

Я сталкиваюсь со следующей проблемой при использовании SBT. Если я добавлю эту строку в build.sbt:

unmanagedResourceDirectories in Compile <+= baseDirectory( _ / "src/main/scala" )

Инкрементная компиляция очень сложно и не очень хорошо. Полный пример того, как воспроизвести ошибку, находится здесь: https://github.com/vn971/sbt-incremental-bug

Это в основном 2 файла. Implicits.scala:

object MyImplicits {
  implicit def stringToInt(str: String) = 1
}

И Usage.scala:

import MyImplicits._
object MyUsage {
  def a: Int = ""
}

Теперь, чтобы воспроизвести ошибку инкрементной компиляции, вы должны внести соответствующие изменения в эти файлы:

  • закомментируйте метод в Usage.scala. Сохраните файл, перекомпилируйте.
  • раскомментируйте, сохраните и заново скомпилируйте.
  • закомментируйте метод в Implicits.scala. Сохраните файл, перекомпилируйте.

Поскольку MyImplicits.stringToInt, несомненно, используется в Usage.scala, он не должен компилироваться. Но это так, с добавочной компиляцией.

Мысли? Вопросы? Если вам нужно больше деталей, чем уже предоставлено, посмотрите минималистичный проект, на который я ссылался.

0 ответов

Другие вопросы по тегам