Closed
Description
Minimized code
import scala.quoted._
def foo(expr: Expr[Any])(using Quotes) = expr match
case '{ $x: t } => '{$x: Any}
Output (click arrow to expand)
[error] (run-main-a) java.lang.AssertionError: assertion failed: unresolved symbols: type t(line 2) when pickling rs$line$1
[error] java.lang.AssertionError: assertion failed: unresolved symbols: type t(line 2) when pickling rs$line$1
[error] at dotty.DottyPredef$.assertFail(DottyPredef.scala:17)
[error] at dotty.tools.dotc.core.tasty.TreePickler.pickle(TreePickler.scala:765)
[error] at dotty.tools.dotc.quoted.PickledQuotes$.pickle(PickledQuotes.scala:165)
[error] at dotty.tools.dotc.quoted.PickledQuotes$.pickleQuote(PickledQuotes.scala:34)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.pickleAsTasty$1(ReifyQuotes.scala:166)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.pickledQuote(ReifyQuotes.scala:181)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transformQuotation(ReifyQuotes.scala:138)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:114)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1267)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:121)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:148)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1273)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:121)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:148)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1287)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:92)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:136)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:118)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:141)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform$$anonfun$2(Trees.scala:1372)
[error] at scala.collection.immutable.List.mapConserve(List.scala:472)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1372)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transformSub(Trees.scala:1376)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1293)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:121)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:148)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:100)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:148)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.traverse$1(TreeMapWithImplicits.scala:53)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transformStats(TreeMapWithImplicits.scala:60)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:112)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:148)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1350)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:105)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:148)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform$$anonfun$2(Trees.scala:1372)
[error] at scala.collection.immutable.List.mapConserve(List.scala:472)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1372)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transformStats(Trees.scala:1370)
[error] at dotty.tools.dotc.ast.Trees$Instance$TreeMap.transform(Trees.scala:1357)
[error] at dotty.tools.dotc.ast.TreeMapWithImplicits.transform(TreeMapWithImplicits.scala:105)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.mapOverTree$1(TreeMapWithStages.scala:85)
[error] at dotty.tools.dotc.transform.TreeMapWithStages.transform(TreeMapWithStages.scala:148)
[error] at dotty.tools.dotc.transform.ReifyQuotes$QuoteReifier.transform(ReifyQuotes.scala:390)
[error] at dotty.tools.dotc.transform.ReifyQuotes$$anon$1.transform(ReifyQuotes.scala:91)
[error] at dotty.tools.dotc.transform.MacroTransform.run(MacroTransform.scala:21)
[error] at dotty.tools.dotc.transform.ReifyQuotes.run(ReifyQuotes.scala:87)
[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.Run.runPhases$4$$anonfun$4(Run.scala:185)
[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:195)
[error] at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:203)
[error] at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
[error] at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:67)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:210)
[error] at dotty.tools.dotc.Run.compileUnits(Run.scala:152)
[error] at dotty.tools.repl.ReplCompiler.runCompilationUnit(ReplCompiler.scala:151)
[error] at dotty.tools.repl.ReplCompiler.compile(ReplCompiler.scala:161)
[error] at dotty.tools.repl.ReplDriver.compile(ReplDriver.scala:234)
[error] at dotty.tools.repl.ReplDriver.interpret(ReplDriver.scala:197)
[error] at dotty.tools.repl.ReplDriver.loop$1(ReplDriver.scala:130)
[error] at dotty.tools.repl.ReplDriver.runUntilQuit$$anonfun$1(ReplDriver.scala:133)
[error] at dotty.tools.repl.ReplDriver.withRedirectedOutput(ReplDriver.scala:152)
[error] at dotty.tools.repl.ReplDriver.runUntilQuit(ReplDriver.scala:133)
[error] at xsbt.ConsoleInterface.run(ConsoleInterface.java:52)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[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:248)
[error] at sbt.internal.inc.AnalyzingCompiler.console(AnalyzingCompiler.scala:210)
[error] at sbt.Console.console0$1(Console.scala:48)
[error] at sbt.Console.$anonfun$apply$2(Console.scala:51)
[error] at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] at sbt.util.InterfaceUtil$$anon$1.get(InterfaceUtil.scala:10)
[error] at sbt.TrapExit$App.run(TrapExit.scala:257)
[error] at java.base/java.lang.Thread.run(Thread.java:834)
Remarks
Tested in REPL with 3.0.0-M3. The problem doesn't occur when compiling code from a file. Surprisingly both variants below do work even in REPL
def foo(expr: Expr[Any])(using Quotes) = expr match
case '{ $x: t } => x
def foo(expr: Expr[Any])(using Quotes) = expr match
case x => '{$x: Any}