You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a stackoverflow occurs in macro code, and we use tasty.error in an exception handler, then the compiler crashes instead of giving a useful error message.
Expected behavior: Instead of crashing, the call to error should report the provided error message.
// called using macros
loop { 4 }
// called using staging
run {
impl('{ 4 })
}
Output of the Macrocall (click arrow to expand)
[error] scala.MatchError:EmptyTree (of classdotty.tools.dotc.ast.Trees$EmptyTree)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:621)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$6(TreePickler.scala:440)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:49)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:440)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$19(TreePickler.scala:495)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:49)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:501)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:344)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.immutable.List.foreach(List.scala:333)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:344)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$26(TreePickler.scala:560)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:49)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:561)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleDef$$anonfun$2(TreePickler.scala:320)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:49)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleDef(TreePickler.scala:325)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:536)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleStats$$anonfun$2(TreePickler.scala:344)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.immutable.List.foreach(List.scala:333)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleStats(TreePickler.scala:344)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree$$anonfun$28(TreePickler.scala:570)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.core.tasty.TreePickler.withLength(TreePickler.scala:49)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickleTree(TreePickler.scala:570)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickle$$anonfun$1(TreePickler.scala:736)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.immutable.List.foreach(List.scala:333)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:736)
[error] at dotty.tools.dotc.transform.Pickler.run$$anonfun$3$$anonfun$2(Pickler.scala:64)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.immutable.List.foreach(List.scala:333)
[error] at dotty.tools.dotc.transform.Pickler.run$$anonfun$1(Pickler.scala:101)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.immutable.List.foreach(List.scala:333)
[error] at dotty.tools.dotc.transform.Pickler.run(Pickler.scala:101)
[error] at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:296)
[error] at scala.collection.immutable.List.map(List.scala:246)
[error] at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:297)
[error] at dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:105)
[error] at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:180)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
[error] at dotty.tools.dotc.Run.runPhases$5(Run.scala:190)
[error] at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:198)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:64)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:205)
[error] at dotty.tools.dotc.Run.compileSources(Run.scala:142)
[error] at dotty.tools.dotc.Run.compile(Run.scala:124)
[error] at dotty.tools.dotc.Driver.doCompile(Driver.scala:38)
[error] at dotty.tools.dotc.Driver.process(Driver.scala:195)
[error] at dotty.tools.dotc.Main.process(Main.scala)
[error] at xsbt.CachedCompilerImpl.run(CachedCompilerImpl.java:69)
[error] at xsbt.CompilerInterface.run(CompilerInterface.java:41)
[error] at jdk.internal.reflect.GeneratedMethodAccessor10.invoke(UnknownSource)
[error] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error] at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] at sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] at sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] at sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] at sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] at sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] at sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] at sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] at sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] at sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] at sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] at sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] at sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] at sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:278)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] at java.base/java.lang.Thread.run(Thread.java:834)
Output of the Staging Call (click arrow to expand)
Exception: java.lang.NullPointerException thrown from the UncaughtExceptionHandler in thread "run-main-1d"
The text was updated successfully, but these errors were encountered:
When a stackoverflow occurs in macro code, and we use
tasty.error
in an exception handler, then the compiler crashes instead of giving a useful error message.Expected behavior: Instead of crashing, the call to
error
should report the provided error message.Version: Dotty 0.27-RC1
Minimized code
and the callsite:
Output of the Macrocall (click arrow to expand)
Output of the Staging Call (click arrow to expand)
The text was updated successfully, but these errors were encountered: