Scala Запретить выделение классов значений
Согласно документации по классам значений, они могут быть выделены при ряде обстоятельств:
Сводка распределения
класс значения рассматривается как другой тип.
класс значений присваивается массиву.
делать тесты типов во время выполнения, такие как сопоставление с образцом.
Можно ли в любом случае сказать, сгенерировать ошибку компиляции, если эти обстоятельства возникают?
1 ответ
Там нет ничего встроенного (AFAIK).
Вы можете написать плагин SBT, который проверяет .class
файлы после compile
задача завершается (с использованием библиотеки, такой как BCEL, ASM и т. д.) и завершается неудачей, если находит какие-либо вызовы конструктора класса значений.
С другой стороны, вы должны быть в состоянии сделать то же самое с плагином компилятора (к сожалению, документация, которую я смог найти, довольно старая) с немного большей сложностью.