expecty
expecty copied to clipboard
[Scala 3] Bad macro expansion of FQNs that contain packages :
This code
@main
package foo
import com.eed3si9n.expecty.Expecty.assert
@main
def runBad() : Unit = {
assert(cats.data.Chain(1, 2, 3).size == 3)
}
package cats {
package data {
object Chain {
def apply[A](a: A*) : List[A] = List(a*)
}
}
}
leads to the following runtime error :
[error] (run-main-12) java.lang.NoClassDefFoundError: foo/cats
[error] java.lang.NoClassDefFoundError: foo/cats
[error] at foo.runGood.main(Main.scala:10)
[error] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error] at java.lang.reflect.Method.invoke(Method.java:498)
[error] Caused by: java.lang.ClassNotFoundException: foo.cats
[error] at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
However this is fine :
assert {
import cats.data.Chain
Chain(1, 2, 3).size == 3
}