Бесформенные разрывы sbt инкрементная компиляция

У меня есть проект Scala, который я строю с использованием SBT 13,5.

Поскольку я реализовал модуль с использованием бесформенного кода, всякий раз, когда sbt пытается постепенно компилировать проект, он не может разрешить требуемые последствия:

[...] не удалось найти неявное значение для преобразователя параметров [...]

[...] не удалось найти неявное значение для папки параметров [...]

и так далее.

sbt clean а также sbt compile решает проблему, но проект довольно большой, и это, в свою очередь, сильно замедляет время компиляции и мою производительность, поскольку новая сборка может занять несколько минут.

Есть идеи, что здесь происходит?


некоторая дополнительная информация

Итак, после некоторого размышления я сделал некоторую гипотезу. Эта проблема возникает при использовании бесформенных записей, и, глядя на сгенерированные файлы, я думаю, что это может быть проблема с макросом, который генерирует тип синглтона для каждого ключа записи.

Мой модуль занимает HList из ColParser[T, K] объявлен как:

sealed trait ColParser[T, K] {
  val columnL Witness.Aux[K]
}

Таким образом, компилятор генерирует Witness для каждого ColParser используя макрос, и я боюсь, что sbt теряет отслеживание сгенерированных макросов при принятии решения о том, что перекомпилировать, но это всего лишь отрывочная гипотеза.

Фактически, всякий раз, когда я изменяю что-то в коде, который вызывает мой модуль (например, я добавляю / удаляю ColParser от HList), Я получаю вышеуказанную ошибку. Принудительная перекомпиляция модуля (путем удаления сгенерированного .class) исправляет проблему.

0 ответов

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