Запуск приложения Scala в Scala IDE с ошибками компиляции

Есть ли способ запустить Scala-приложение или модульный тест в Scala IDE 2.0.2 (Eclipse 3.7), если в проекте есть (несвязанные!) ошибки компиляции?

В Java это не проблема, но Scala IDE постоянно говорит мне:

Проект содержит ошибки компиляции (поэтому бинарники не созданы).

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


person rolve    schedule 01.11.2012    source источник


Ответы (2)


В настоящее время среда Scala IDE не поддерживает такое поведение, но было бы неплохо, если бы она могла.

Чтобы знать об этом, я создал тикет:

JDT позволяет выполнять Java-код, несмотря на проблемы компиляции в исходниках. Внутренне JDT заменяет дефектный код исключением, которое генерируется при выполнении соответствующего кода. Но если дефектный код никогда не вызывается во время выполнения, ничего страшного не происходит. Было бы неплохо, если бы SDT поддерживал подобное поведение.

person kiritsuku    schedule 01.11.2012
comment
Интересно, я не знал, что JDT должен сделать что-то подобное для поддержки этой функции. Я думал, что это каким-то образом выполняет программу, полностью исключая ошибочные классы из пути к классам. Но в этом больше смысла. Спасибо за билет и пояснения. - person rolve; 01.11.2012

Если вы используете Scala 2.10, хорошим вариантом будет использование новой нотации ???. Таким образом, ваш код будет скомпилирован, даже если функция еще не реализована.

Конечно, есть лучший способ, но этот все же будет лучше, чем комментирование кода.

Как предложил Джеспер, вы все равно можете реализовать ???, если работаете с предыдущими версиями Scala:

def ??? : Nothing = throw new Error("Not implemented") 
person Christopher Chiche    schedule 01.11.2012
comment
Спасибо, но я вынужден использовать Scala 2.9.2. - person rolve; 01.11.2012
comment
@rolve Обратите внимание, что ??? не является новым ключевым словом или изменением языка. Вы можете легко запрограммировать его самостоятельно: def ???: Nothing = throw new Error("Not implemented") (Это то, что делается в курсе Coursera Scala). - person Jesper; 01.11.2012
comment
Спасибо за разъяснения! - person Christopher Chiche; 01.11.2012
comment
@Jesper Спасибо. Только одно небольшое замечание: я думаю, что правильным объявлением будет def ??? : Nothing = throw new Error("Not implemented") с пробелом после ???. Без пробела не компилируется. - person rolve; 01.11.2012