Я собираю небольшую библиотеку сериализации для Scala на Android (Parcelable). Но я продолжаю бороться с разрешением классов типов, связанных с Coproduct, которые, похоже, терпят неудачу в зависимости от имен файлов (?).
Я впервые столкнулся с проблемой, когда писал тесты. Существует простой файл Animal.scala
, содержащий запечатанную иерархию признаков. Тесты компилируются нормально, и все работает, как задумано, но как только я изменяю имя файла, например, на ZAnimal.scala
, набор тестов не компилируется, потому что экземпляры класса типа Coproduct больше не могут быть разрешены.
Эта проблема характерна только для классов типов Coproduct, классы типов, связанные с классом case, не нарушаются.
К сожалению, это также влияет на проекты, которые зависят от библиотеки, в которой АТД в .widget
не разрешаются. Перемещение их в .aaa
устраняет проблему.
Боюсь, это может быть вызвано базовым кодом макроса и тем, что компилятору не удается достаточно быстро обнаружить определенные типы (возможно, это связано с scalamacros/paradise#14?). Но я бы определенно предпочел, чтобы это была ошибка в коде моей библиотеки.
Изменить: я собрал небольшой пример проекта, который более точно иллюстрирует проблему.