Scala 3.4.0中export TrieMap.clear为何触发尾递归优化不适用错误?
Scala 3.4.0导出TrieMap.clear编译错误分析
错误信息
编译时触发错误提示:
尾递归优化不适用,方法clear不包含递归调用
错误原因
这是Scala 3.4.0版本的编译器bug。当使用export语句导出TrieMap.clear这类标准库方法时,编译器错误地对该方法执行尾递归优化校验——但TrieMap.clear本身并非递归方法,完全不需要尾递归优化,从而触发了误判报错。
解决方案
- 手动实现转发方法替代
export:
class A { val m = new scala.collection.concurrent.TrieMap[Int, Int]() def clear(): Unit = m.clear() }
- 升级至Scala 3.4.1及以上版本,官方已在后续版本修复了该bug。
内容的提问来源于stack exchange,提问作者Nikolay Smirnov
相关产品推荐
相关产品推荐

