Closed as not planned
Closed as not planned
Description
Compiler version
3.3.0, main (8c311a0)
Minimized code
macro.scala
object Macro {
import scala.quoted.*
def subtypesImpl[A: Type](using quotes: Quotes): Expr[String] = {
import quotes.reflect.*
TypeRepr.of[A].typeSymbol.children // causes the error
'{""}
}
inline def subtypes[A]: String = ${ subtypesImpl[A] }
}
test.scala
class Test {
def test(): Unit = {
scala.compiletime.testing.typeCheckErrors("Macro.subtypes[fixture.Shape]")
}
}
package fixture {
sealed trait Shape
case class Circle(center: Int, rad: Double) extends Shape
object Inner {
case class Circle2(center: Int, rad: Double) extends Shape
}
}
Output
-- Error: test.scala:14:15 ------------------------------------------------------
14 | case class Circle2(center: Int, rad: Double) extends Shape
| ^
|children of trait Shape were already queried before class Circle2 was discovered.
|As a remedy, you could move class Circle2 on the same nesting level as trait Shape.
Expectation
Code should compile, as it does when either the code inside typeCheckErrors is extracted outside of that method.
Original minimization by @MateuszKubuszok with usage context: here