gpt4 book ai didi

scala - 如何解决 Scala 编译器崩溃问题?

转载 作者:行者123 更新时间:2023-12-01 11:03:48 25 4
gpt4 key购买 nike

我正在使用 Scala 2.9.1 编译一个项目并获得

java.lang.AssertionError: assertion failed
at scala.Predef$.assert(Predef.scala:89)
at scala.tools.nsc.symtab.Symbols$Symbol.accessed(Symbols.scala:1142)
at scala.tools.nsc.symtab.Symbols$Symbol.accessed(Symbols.scala:1138)
at scala.tools.nsc.transform.Mixin$MixinTransformer$$anonfun$buildFieldPositions$1$1.apply(Mixin.scala:1006)

我想这是一个错误,但我真的没有时间修复它或等待其他人修复它,所以我想改变我正在做的任何事情,这样我就不会遇到错误.

但我遇到了困难,因为我不知道我的代码的哪一部分导致了问题。有什么策略可以用来隔离问题吗?

为了方便调查人员,这里是源代码的链接:

最佳答案

具体来说,我没有解决过 Scala 编译器崩溃问题,但我解决过其他编译器崩溃问题。您要做的是尝试缩小导致问题的范围。在大多数项目中,最简单的方法是通过注释进行二分查找。也就是说,注释掉大约一半的代码,看看错误是否仍然存在。如果不是,请取消注释那一半并注释另一半,看看错误是否仍然发生。然后,假设这有效并且您发现它发生在哪一半,通过评论将其分成两半。重复这个过程,直到你找到最小的代码段,你可以找到它仍然会破坏东西。 (显然,由于代码依赖性,您可能并不总是能够做到一半,但至少可以找到将其分解成大块的方法)。

当你到达那里时,通过检查,你可能会发现该代码中存在错误,因为根据我的经验,编译器崩溃更可能是由格式不正确的代码引起的,这些代码的格式不正确编译器作者没想到。例如,我自己为工作编写的类似 intellisense 的 Java 模块会在 foo(super).bar 上崩溃,因为我从来没有想过有人不会在 super 后面加上句号或开括号,但它可以由于语法的设计方式而导致通过解析器。当您编写 var x:int : 10; 而不是 var x:int = 10; 时,Adobe 的 Actionscript 编译器会崩溃(他们现在可能已经修复了这个问题,但它会我上次使用它时崩溃了)。因此,如果您确实在代码中发现错误,请修复它。如果不是,请尝试重写该代码以使其有所不同。希望您能够找到不会导致编译器崩溃的版本。

关于scala - 如何解决 Scala 编译器崩溃问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8108127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com