Commit 45f30ca
committed
bugfix: Handle NoClassDefFoundError coming from the compiler
It seems due to some incremental compilation errors (possibly), an exception can be thrown from inlining and if we don't handle it, we will never finish the compilation:
```
java.lang.NoClassDefFoundError: besom/internal/Context
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402)
at java.base/java.lang.Class.getMethodsRecursive(Class.java:3543)
at java.base/java.lang.Class.getMethod0(Class.java:3529)
at java.base/java.lang.Class.getMethod(Class.java:2225)
at dotty.tools.dotc.quoted.Interpreter.getMethod(Interpreter.scala:221)
at dotty.tools.dotc.quoted.Interpreter.interpretedStaticMethodCall(Interpreter.scala:173)
at dotty.tools.dotc.quoted.Interpreter.interpretTree(Interpreter.scala:76)
at dotty.tools.dotc.transform.Splicer$SpliceInterpreter.interpretTree(Splicer.scala:247)
at dotty.tools.dotc.quoted.Interpreter.interpretTree$$anonfun$2(Interpreter.scala:95)
at dotty.tools.dotc.transform.Splicer$.$anonfun$2(Splicer.scala:60)
at scala.Option.fold(Option.scala:263)
at dotty.tools.dotc.transform.Splicer$.splice(Splicer.scala:60)
at dotty.tools.dotc.inlines.Inliner.dotty$tools$dotc$inlines$Inliner$$expandMacro(Inliner.scala:1042)
at dotty.tools.dotc.inlines.Inliner$InlineTyper.typedApply(Inliner.scala:818)
at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2928)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2991)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
at dotty.tools.dotc.inlines.Inliner$InlineTyper.typedUnadapted(Inliner.scala:904)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:3058)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:3062)
at dotty.tools.dotc.typer.ReTyper.typedTyped(ReTyper.scala:64)
at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2933)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2991)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:126)
at dotty.tools.dotc.inlines.Inliner$InlineTyper.typedUnadapted(Inliner.scala:904)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:3058)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:3055)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:3062)
at dotty.tools.dotc.inlines.Inliner.inlined(Inliner.scala:671)
at dotty.tools.dotc.inlines.Inlines$InlineCall.expand(Inlines.scala:444)
at dotty.tools.dotc.inlines.Inlines$.inlineCall(Inlines.scala:151)
at dotty.tools.dotc.transform.Inlining$InliningTreeMap.transform(Inlining.scala:99)
at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1478)
at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:73)
at dotty.tools.dotc.transform.Inlining$InliningTreeMap.transform(Inlining.scala:93)
at dotty.tools.dotc.ast.tpd$TreeMapWithPreciseStatContexts.loop$2(tpd.scala:1228)
at dotty.tools.dotc.ast.tpd$TreeMapWithPreciseStatContexts.transformStats(tpd.scala:1228)
at dotty.tools.dotc.ast.tpd$TreeMapWithPreciseStatContexts.transformStats(tpd.scala:1230)
at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:64)
at dotty.tools.dotc.transform.Inlining$InliningTreeMap.transform(Inlining.scala:115)
at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1483)
at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:73)
at dotty.tools.dotc.transform.Inlining$InliningTreeMap.transform(Inlining.scala:93)
at dotty.tools.dotc.ast.tpd$TreeMapWithPreciseStatContexts.loop$2(tpd.scala:1228)
at dotty.tools.dotc.ast.tpd$TreeMapWithPreciseStatContexts.transformStats(tpd.scala:1228)
at dotty.tools.dotc.ast.tpd$TreeMapWithPreciseStatContexts.transformStats(tpd.scala:1230)
at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1491)
at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:73)
at dotty.tools.dotc.transform.Inlining$InliningTreeMap.transform(Inlining.scala:105)
at dotty.tools.dotc.transform.Inlining$$anon$2.transform(Inlining.scala:62)
at dotty.tools.dotc.transform.MacroTransform.run(MacroTransform.scala:18)
at dotty.tools.dotc.transform.Inlining.run(Inlining.scala:34)
at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:324)
at scala.collection.immutable.List.map(List.scala:250)
at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:328)
at dotty.tools.dotc.transform.Inlining.runOn(Inlining.scala:38)
at dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:247)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
at scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1321)
at dotty.tools.dotc.Run.runPhases$1(Run.scala:263)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:271)
at dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:280)
at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:67)
at dotty.tools.dotc.Run.compileUnits(Run.scala:280)
at dotty.tools.dotc.Run.compileSources(Run.scala:195)
at dotty.tools.dotc.Run.compile(Run.scala:179)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
at dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:88)
at dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.compileSources$1(BloopHighLevelCompiler.scala:133)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$7(BloopHighLevelCompiler.scala:155)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$1(BloopHighLevelCompiler.scala:71)
at bloop.tracing.BraveTracer.traceInternal(BraveTracer.scala:67)
at bloop.tracing.BraveTracer.trace(BraveTracer.scala:41)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.timed$1(BloopHighLevelCompiler.scala:70)
at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$6(BloopHighLevelCompiler.scala:155)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:81)
at monix.eval.internal.TaskRestartCallback.syncOnSuccess(TaskRestartCallback.scala:101)
at monix.eval.internal.TaskRestartCallback.onSuccess(TaskRestartCallback.scala:74)
at monix.eval.internal.TaskExecuteOn$AsyncRegister$$anon$1.run(TaskExecuteOn.scala:71)
at monix.execution.internal.InterceptRunnable.run(InterceptRunnable.scala:27)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.ClassNotFoundException: besom.internal.Context
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:440)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 89 more
```1 parent 7b633eb commit 45f30ca
1 file changed
Lines changed: 4 additions & 0 deletions
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
140 | 144 | | |
141 | 145 | | |
142 | 146 | | |
| |||
0 commit comments