Improve code loading logic in ExtensionCompiler
In the nightlies it is possible to get the below exception. The reason for this is that the compiled classes only depend on the Scala version and not on the compiler version, which means that if a nightly is updated, it is very likely that the code breaks due to binary incompatibilities.
2015-11-16 10:24:27,554 ERROR [ForkJoinPool-1-worker-5] - org.scala-ide.sdt.core - org.scala-ide.sdt.core - org.scala-ide.sdt.core - 2 - Problems occurred when invoking code from plug-in: "org.scala-ide.sdt.core".
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.scalaide.core.internal.extensions.ExtensionCompiler$$anonfun$13$$anonfun$apply$4.apply(ExtensionCompiler.scala:281)
at org.scalaide.core.internal.extensions.ExtensionCompiler$$anonfun$13$$anonfun$apply$4.apply(ExtensionCompiler.scala:280)
at org.scalaide.ui.internal.editor.SaveActionExtensions$$anonfun$org$scalaide$ui$internal$editor$SaveActionExtensions$$createExtensionWithCompilerSupport$1.apply(SaveActionExtensions.scala:273)
at org.scalaide.ui.internal.editor.SaveActionExtensions$$anonfun$org$scalaide$ui$internal$editor$SaveActionExtensions$$createExtensionWithCompilerSupport$1.apply(SaveActionExtensions.scala:266)
at org.scalaide.core.compiler.InteractiveCompilationUnit$$anonfun$withSourceFile$1.apply(InteractiveCompilationUnit.scala:202)
at org.scalaide.core.compiler.InteractiveCompilationUnit$$anonfun$withSourceFile$1.apply(InteractiveCompilationUnit.scala:202)
at org.scalaide.core.internal.compiler.PresentationCompilerProxy$$anonfun$internal$1.apply(PresentationCompilerProxy.scala:105)
at org.scalaide.core.internal.compiler.PresentationCompilerProxy$$anonfun$internal$1.apply(PresentationCompilerProxy.scala:104)
at scala.Option.flatMap(Option.scala:171)
at org.scalaide.core.internal.compiler.PresentationCompilerProxy.internal(PresentationCompilerProxy.scala:104)
at org.scalaide.core.internal.compiler.PresentationCompilerProxy.apply(PresentationCompilerProxy.scala:62)
at org.scalaide.core.compiler.InteractiveCompilationUnit$class.withSourceFile(InteractiveCompilationUnit.scala:202)
at org.scalaide.core.internal.jdt.model.ScalaSourceFile.withSourceFile(ScalaSourceFile.scala:73)
at org.scalaide.ui.internal.editor.SaveActionExtensions$class.org$scalaide$ui$internal$editor$SaveActionExtensions$$createExtensionWithCompilerSupport(SaveActionExtensions.scala:266)
at org.scalaide.ui.internal.editor.SaveActionExtensions$$anonfun$3$$anonfun$apply$5.apply(SaveActionExtensions.scala:166)
at org.scalaide.ui.internal.editor.SaveActionExtensions$$anonfun$3$$anonfun$apply$5.apply(SaveActionExtensions.scala:166)
at org.scalaide.util.eclipse.EclipseUtils$$anon$3.run(EclipseUtils.scala:216)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.scalaide.util.eclipse.EclipseUtils$.withSafeRunner(EclipseUtils.scala:212)
at org.scalaide.ui.internal.editor.SaveActionExtensions$$anonfun$3.apply(SaveActionExtensions.scala:165)
at org.scalaide.ui.internal.editor.SaveActionExtensions$$anonfun$3.apply(SaveActionExtensions.scala:171)
at org.scalaide.util.internal.FutureUtils$TimeoutFuture$$anonfun$1.apply(FutureUtils.scala:27)
at org.scalaide.util.internal.FutureUtils$TimeoutFuture$$anonfun$1.apply(FutureUtils.scala:27)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.AbstractMethodError: org.scalaide.core.internal.generated.AddMissingOverrideCreator$$anon$1.scala$tools$refactoring$transformation$TreeTransformations$_setter_$findBestPackageForImports_$eq(Lscala/tools/refactoring/transformation/Transformations$Transformation;)V
at scala.tools.refactoring.transformation.TreeTransformations$class.$init$(TreeTransformations.scala:144)
at org.scalaide.core.internal.generated.AddMissingOverrideCreator$$anon$1.<init>(<memory>:12)
at org.scalaide.core.internal.generated.AddMissingOverrideCreator.create(<memory>:12)
... 34 more
Leave a comment
We no longer load code at runtime.