Closed
Description
Macro:
package playground
import scala.quoted._, scala.quoted.matching._
import delegate scala.quoted._
import scala.tasty._
case class Box[T](v: T)
inline def mcr(expr: => Boolean): Unit = ${mcrProxy('expr)}
def mcrProxy(expr: Expr[Boolean]) given QuoteContext: Expr[Unit] = {
val res = mcrImpl[Boolean]('{ (esx: Seq[Box[Boolean]]) => () }, expr)
// println(s"Out: ${res.show}")
res
}
def mcrImpl[T](func: Expr[Seq[Box[T]] => Unit], expr: Expr[T]) given (ctx: QuoteContext, tt: Type[T]): Expr[Unit] = {
import ctx.tasty._
val arg = Seq('{(Box($expr))}).toExprOfSeq
func(arg)
}
Main:
package playground
@main def main = println(mcr(true))
Crash
[info] exception occurred while compiling /Users/anatolii/Projects/dotty/playground/core/src/main/scala/playground/Main.scala
java.lang.AssertionError: assertion failed: unresolved symbols: type tt$_$2(line 18) when pickling /Users/anatolii/Projects/dotty/playground/core/src/main/scala/playground/Main.scala while compiling /Users/anatolii/Projects/dotty/playground/core/src/main/scala/playground/Main.scala
[error] ## Exception when compiling 1 sources to /Users/anatolii/Projects/dotty/playground/core/target/scala-0.18/classes
[error] assertion failed: unresolved symbols: type tt$_$2(line 18) when pickling /Users/anatolii/Projects/dotty/playground/core/src/main/scala/playground/Main.scala
[error] dotty.DottyPredef$.assertFail(DottyPredef.scala:16)
[error] dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:695)
[error] dotty.tools.dotc.transform.Pickler.run$$anonfun$10$$anonfun$8(Pickler.scala:60)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:392)
[error] dotty.tools.dotc.transform.Pickler.run$$anonfun$2(Pickler.scala:83)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.immutable.List.foreach(List.scala:392)
[error] dotty.tools.dotc.transform.Pickler.run(Pickler.scala:83)
[error] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:316)
[error] scala.collection.immutable.List.map(List.scala:286)
[error] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:318)
[error] dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:87)
[error] dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:158)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
[error] scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
[error] scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
[error] dotty.tools.dotc.Run.runPhases$5(Run.scala:170)
[error] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:178)
[error] dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:65)
[error] dotty.tools.dotc.Run.compileUnits(Run.scala:185)
[error] dotty.tools.dotc.Run.compileSources(Run.scala:120)
[error] dotty.tools.dotc.Run.compile(Run.scala:104)
[error] dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
[error] dotty.tools.dotc.Driver.process(Driver.scala:180)
[error] dotty.tools.dotc.Main.process(Main.scala)
[error] xsbt.CachedCompilerImpl.run(CachedCompilerImpl.java:69)
[error] xsbt.CompilerInterface.run(CompilerInterface.java:41)
[error] sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
[error] sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] java.lang.reflect.Method.invoke(Method.java:498)
[error] sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:237)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:111)
[error] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:90)
[error] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
[error] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:133)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:73)
[error] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:116)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:307)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:307)
[error] sbt.internal.inc.Incremental$.doCompile(Incremental.scala:106)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:87)
[error] sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:116)
[error] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:63)
[error] sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:89)
[error] sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:134)
[error] sbt.internal.inc.Incremental$.compile(Incremental.scala:80)
[error] sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:67)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:311)
[error] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:269)
[error] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:159)
[error] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:238)
[error] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:69)
[error] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1549)
[error] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1523)
[error] scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] sbt.std.Transform$$anon$4.work(System.scala:67)
[error] sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] sbt.Execute.work(Execute.scala:278)
[error] sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[error] java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[error] java.lang.Thread.run(Thread.java:745)
[error]
[error] java.lang.AssertionError: assertion failed: unresolved symbols: type tt$_$2(line 18) when pickling /Users/anatolii/Projects/dotty/playground/core/src/main/scala/playground/Main.scala
[error] at dotty.DottyPredef$.assertFail(DottyPredef.scala:16)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:695)
[error] at dotty.tools.dotc.transform.Pickler.run$$anonfun$10$$anonfun$8(Pickler.scala:60)
[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:392)
[error] at dotty.tools.dotc.transform.Pickler.run$$anonfun$2(Pickler.scala:83)
[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:392)
[error] at dotty.tools.dotc.transform.Pickler.run(Pickler.scala:83)
[error] at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:316)
[error] at scala.collection.immutable.List.map(List.scala:286)
[error] at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:318)
[error] at dotty.tools.dotc.transform.Pickler.runOn(Pickler.scala:87)
[error] at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:158)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] at scala.collection.IndexedSeqOptimized.foreach(IndexedSeqOptimized.scala:36)
[error] at scala.collection.IndexedSeqOptimized.foreach$(IndexedSeqOptimized.scala:33)
[error] at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:198)
[error] at dotty.tools.dotc.Run.runPhases$5(Run.scala:170)
[error] at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:178)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:65)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:185)
[error] at dotty.tools.dotc.Run.compileSources(Run.scala:120)
[error] at dotty.tools.dotc.Run.compile(Run.scala:104)
[error] at dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
[error] at dotty.tools.dotc.Driver.process(Driver.scala:180)
[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 sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
[error] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.lang.reflect.Method.invoke(Method.java:498)
[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.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[error] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[error] at java.lang.Thread.run(Thread.java:745)
[error] (Compile / compileIncremental) java.lang.AssertionError: assertion failed: unresolved symbols: type tt$_$2(line 18) when pickling /Users/anatolii/Projects/dotty/playground/core/src/main/scala/playground/Main.scala
[error] Total time: 1 s, completed Aug 7, 2019 2:14:39 PM
If you uncomment the println statement:
println(s"Out: ${res.show}")
It will result in:
CyclicReference Exception
[error] -- Error: /Users/anatolii/Projects/dotty/playground/core/src/main/scala/playground/Main.scala:3:28
[error] 3 |@main def main = println(mcr(true))
[error] | ^^^^^^^^^
[error] |Exception occurred while executing macro expansion.
[error] |dotty.tools.dotc.core.CyclicReference:
[error] | at dotty.tools.dotc.core.CyclicReference$.apply(TypeErrors.scala:157)
[error] | at dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:249)
[error] | at dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:180)
[error] | at dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:182)
[error] | at dotty.tools.dotc.core.SymDenotations$SymDenotation.ensureCompleted(SymDenotations.scala:391)
[error] | at dotty.tools.dotc.core.SymDenotations$SymDenotation.flags(SymDenotations.scala:150)
[error] | at dotty.tools.dotc.tastyreflect.ReflectionCompilerInterface.Symbol_flags(ReflectionInternal.scala:1492)
[error] | at dotty.tools.dotc.tastyreflect.ReflectionCompilerInterface.Symbol_flags(ReflectionInternal.scala:1492)
[error] | at scala.tasty.reflect.SymbolOps$SymbolAPI.flags(SymbolOps.scala:15)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printType(Printers.scala:1521)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTypeOrBound(Printers.scala:1502)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printSeparated$9(Printers.scala:1162)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTypesOrBounds(Printers.scala:1168)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printType$$anonfun$1(Printers.scala:1581)
[error] | at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.inSquare(Printers.scala:534)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printType(Printers.scala:1581)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTypeOrBound(Printers.scala:1502)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printSeparated$9(Printers.scala:1162)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTypesOrBounds(Printers.scala:1168)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printType$$anonfun$1(Printers.scala:1581)
[error] | at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.inSquare(Printers.scala:534)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printType(Printers.scala:1581)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTypeAndAnnots$1(Printers.scala:1430)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTypeTree(Printers.scala:1432)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTree(Printers.scala:723)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printSeparated$2(Printers.scala:1065)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printStats(Printers.scala:1071)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printFlatBlock$$anonfun$1(Printers.scala:1033)
[error] | at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.indented(Printers.scala:522)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printFlatBlock(Printers.scala:1034)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter$Buffer.printTree(Printers.scala:913)
[error] | at scala.tasty.reflect.Printers$SourceCodePrinter.showTree(Printers.scala:463)
[error] | at scala.tasty.reflect.Printers$TreeShowDeco.show(Printers.scala:31)
[error] | at scala.quoted.QuoteContext.show(QuoteContext.scala:17)
[error] | at scala.quoted.Expr.show(Expr.scala:17)
[error] | at scala.internal.quoted.TastyTreeExpr.show(Expr.scala:91)
[error] | at playground.macros$package$.mcrProxy(macros.scala:13)
[error] |
[error] | This location is in code that was inlined at Main.scala:3
[error] one error found