Таким образом, у меня есть запечатанная черта, такая как:
sealed trait Foo {
override def toString: String = {
...
}
}
и сопутствующий объект, такой как:
object Foo {
case object Bar extends Foo {}
case object Bat extends Foo {}
case object Bah extends Foo {}
def parse(s: String): Foo = {
...
}
implicit val format: Format[Foo] = Json.format[Foo]
def apply(f: String): Foo = parse(f)
def unapply(f: Foo): String = f.toString
}
Я ожидал, что макрос будет работать, так как он встречает все требования, указанные здесь:
https://www.playframework.com/documentation/2.8.x/ScalaJsonAutomated#Requirements
Однако я получаю ошибку времени компиляции, которая утверждает, что для Foo нет подклассов (даже если есть Bar, Bat и бах).
Если я переместлю Бар, Бита и Баха за пределы Foo (до уровня базового пакета), жалоба уйдет.
Просто интересно, является ли это недосмотром в макросе (где не удается найти вложенные подклассы), или я делаю здесь что-то неправильное?