Scala Запретить выделение классов значений

Согласно документации по классам значений, они могут быть выделены при ряде обстоятельств:

Сводка распределения

класс значения рассматривается как другой тип.

класс значений присваивается массиву.

делать тесты типов во время выполнения, такие как сопоставление с образцом.

Можно ли в любом случае сказать, сгенерировать ошибку компиляции, если эти обстоятельства возникают?

1 ответ

Решение

Там нет ничего встроенного (AFAIK).

Вы можете написать плагин SBT, который проверяет .class файлы после compile задача завершается (с использованием библиотеки, такой как BCEL, ASM и т. д.) и завершается неудачей, если находит какие-либо вызовы конструктора класса значений.

С другой стороны, вы должны быть в состоянии сделать то же самое с плагином компилятора (к сожалению, документация, которую я смог найти, довольно старая) с немного большей сложностью.

Другие вопросы по тегам