как использовать макрос сериализации / десериализации формата воспроизведения для вложенных объектов case - PullRequest
1 голос
/ 07 января 2020

Таким образом, у меня есть запечатанная черта, такая как:

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 (до уровня базового пакета), жалоба уйдет.

Просто интересно, является ли это недосмотром в макросе (где не удается найти вложенные подклассы), или я делаю здесь что-то неправильное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...