Вызов основного метода в scala nsc


person sc_ray    schedule 29.03.2015    source источник


Ответы (1)


MainClass расширяет Driver, у которого есть метод main:

def main(args: Array[String]) {
  process(args)
  sys.exit(if (reporter.hasErrors) 1 else 0)
}

В то же время объект Main расширяет MainClass, что означает наличие файла Main.class, содержащего метод пересылки public static void main(String[] args), который фактически вызывает вышеупомянутый нестатический метод для объекта Main. См., например, этот вопрос для более подробной информации о том, как object компилируется в Scala.

Это означает, что scala.tools.nsc.Main можно использовать в качестве основного класса при запуске компилятора scala (это жестко запрограммировано где-то в скрипте scalac).

newCompiler и doCompile вызываются process.

person ghik    schedule 30.03.2015