根据关于值类的文档,它们可能在多种情况下进行分配:
分配汇总
值类被视为另一种类型。
一个值类被分配给一个数组。
进行运行时类型测试,例如模式匹配。
如果出现这些情况,是否可以说抛出编译错误?
没有任何内置(AFAIK)。
您可以编写一个SBT插件,在compile
任务完成后(使用BCEL、ASM等库)检查.class
文件,如果发现任何值类构造函数调用,则会失败。
或者,你应该能够用编译器插件做同样的事情(不幸的是,我能找到的文档很旧),但有点困难。