Ошибки в коде scalac

#scala #compiler-construction #shebang #scalac

#scala #компилятор-конструирование #дело #scalac

Вопрос:

Интерпретатор scala допускает ошибки, но, как ни странно, scalac их игнорирует. Существуют ли какие-либо приемы, подобные этим, чтобы обойти этот недостаток?

Ответ №1:

#! в scala должно быть закрыто с помощью !#. Например:

 #!/bin/bash
script_dir=$(cd $(dirname "$0") >/dev/null; pwd -P)
classes_dir=${script_dir}/build/classes
src_dir=${script_dir}/src

mkdir -p ${classes_dir}
scalac -d ${classes_dir} $(find ${src_dir} -name '*.scala')

exec /usr/bin/scala -classpath ${classes_dir} "$0" "$@"
!#
  

Ответ №2:

Почему бы не удалить их прозрачно перед вызовом scalac в вашем скрипте сборки?

Комментарии:

1. Я бы хотел, чтобы мне не приходилось удалять какой-либо код. Я готов использовать непонятный синтаксис shebang, если это необходимо для достижения этой цели.

Ответ №3:

Я не думаю, что это вопрос «неясного синтаксиса shebang», а скорее проблема «спецификации языка».
В статье Википедии о Shebang упоминается:

Содержимое строки shebang будет автоматически проигнорировано интерпретатором, поскольку # символ является маркером комментария во многих языках сценариев.
Некоторые языковые интерпретаторы, которые не используют хэш-метку для начала комментариев, такие как Scheme, все еще могут игнорировать строку shebang.

Итак, если scalac не имеет в своей спецификации директив игнорировать первые строки как «заголовок скрипта», подобный Scheme, нам нужно дождаться вашего обращения Jira 5179.