W scala 2.9.x użyłem tools.nsc.Global
bezpośrednio, aby skompilować pewien ciąg do klasy i wykonać go.Czy istnieje sposób, aby uzyskać prawidłowy raport błędów kompilacji środowiska wykonawczego w programie Scala 2.10?
w Scala 2.10, możliwe jest zastąpienie go coś jak następuje:
import scala.reflect.runtime._;
val cm = universe.runtimeMirror(getClass.getClassLoader)
import scala.tools.reflect.ToolBox;
val tb = cm.mkToolBox()
tb.eval(tb.parse("class C; new C"))
I to działa bez zarzutu. Jedynym problemem jest to, że dzięki starszemu (przestarzałemu) podejściu mogłem uzyskać bardzo ładne podsumowanie wszystkich awarii kompilacji przy użyciu StoreReporter (z komunikatami o błędach, numerach linii), a nowe podejście właśnie zgłasza wyjątek w błędzie kompilacji.
Czy istnieje sposób na potwierdzenie tego?
Ale, jak widzisz, daje brak pozycji dla wszystkich błędów. A jeśli chciałbym skompilować duże kawałki kodu, chciałbym móc zgłosić użytkownikowi przynajmniej pozycje linii. – Rogach
Oto, jak to zrobić: https://github.com/Rogach/miltamm/blob/master/src/main/scala/BuildCompiler.scala#L8 – Rogach
Czy możesz otworzyć zgłoszenie dotyczące tego problemu? ? –