Closed
Description
Compiler version
Compiles in 3.3.3
.
Compilation fails in 3.4.0
.
Minimized code
File: meta/src/examples/select/Wrapper.scala
package examples.select
import scala.language.dynamics
import scala.quoted.*
case class Wrapper[A](inner: A) extends Dynamic:
transparent inline def selectDynamic(inline name: String) =
${selectDynamicImpl('inner, 'name)}
def selectDynamicImpl[A:Type](inner: Expr[A], name: Expr[String])(using quotes: Quotes): Expr[Any] =
import quotes.reflect.*
Select.unique(inner.asTerm, name.valueOrAbort).asExpr
File: meta/src/examples/select/Dynamic0.scala
package examples.select
import scala.language.dynamics
import examples.select.Wrapper
object Dynamic0:
@main
def runTimeError =
val w = Wrapper(Option(1))
println(w.isEmpty)
end Dynamic0
Output
[error] -- Error: /home/hmf/VSCodeProjects/sploty/meta/src/examples/select/Dynamic0.scala:100:14
[error] 100 | println(w.isEmpty)
[error] | ^^^^^^^^^
[error] |Failed to evaluate macro.
[error] | Caused by class java.lang.ClassNotFoundException: examples.select.Wrapper$package$
[error] | java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:592)
[error] | java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
[error] | dotty.tools.dotc.quoted.Interpreter.loadClass(Interpreter.scala:214)
[error] | dotty.tools.dotc.quoted.Interpreter.loadModule(Interpreter.scala:199)
[error] | dotty.tools.dotc.quoted.Interpreter.interpretedStaticMethodCall(Interpreter.scala:167)
[error] | dotty.tools.dotc.quoted.Interpreter.interpretTree(Interpreter.scala:80)
[error] | dotty.tools.dotc.transform.Splicer$SpliceInterpreter.interpretTree(Splicer.scala:266)
[error] | dotty.tools.dotc.quoted.Interpreter.interpretTree$$anonfun$2(Interpreter.scala:99)
[error] |
Expectation
Expected this to compile without changes.
Note: I find it strange that the compiler complains about a examples.select.Wrapper$package$
and not a examples.select.Wrapper
class.