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

2024-01-04

我正在使用 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:1142 https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src/compiler/scala/tools/nsc/symtab/Symbols.scala#L1142
  • 符号.scala:1138 https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src/compiler/scala/tools/nsc/symtab/Symbols.scala#L1138
  • Mixin.scala:1006 https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src/compiler/scala/tools/nsc/transform/Mixin.scala#L1006

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解决 Scala 编译器崩溃问题? 的相关文章

随机推荐

  • 无法创建持久存储协调器

    我收到以下错误 Terminating app due to uncaught exception NSInternalInconsistencyExprojectception reason Managed object store fa
  • 每 X 秒从 ArrayList 更新一次 JLabel - Java

    我有一个简单的Java程序 它读取一个文本文件 用 空格 分割它 显示第一个单词 等待2秒 显示下一个 等等 我想在Spring中执行此操作或其他一些 GUI 关于如何使用 spring 轻松更新单词有什么建议吗 遍历我的列表并以某种方式使
  • C# 中 AVL 树的性能

    我用C 实现了一个AVL树 其插入矩阵如下 Number of Elements Time taken to insert sec 10 0 067 100 0 073 200 0 112 500 0 388 900 1 205 1000
  • 如何通过 Concourse CI 管道发送电子邮件?

    如何设置在 Concourse 中作业完成或失败时发送的电子邮件 您可以使用https github com pivotal cf email resource https github com pivotal cf email resou
  • iPad 版 iOS 8.3 上 UIAlertView 关闭后键盘会弹出

    随着最新的 iOS 8 3 版本的发布 我们的应用程序开始出现奇怪的行为 完成文本字段编辑后 用户可以单击关闭按钮 弹出一个UIAlertView 当用户点击时discard在警报视图中 警报视图和当前视图被忽略 但不知怎的 键盘在视图消失
  • 从静态方法调用 finish()

    我正在使用 Facebook Android SDK 并希望在用户登录并获取用户对象后关闭我的 Activity 在实践中 我存储了其中的一部分 但无论如何我都想关闭该活动 make request to the me API Reques
  • Asp.Net Core 2.0 中的“HttpPostedFileBase”

    我最近正在开发一个调用 API 的 ReactJS 应用程序 使用 NET Core 2 0 开发 我的问题是如何使用HttpPostedFileBase在 NET Core 2 0 API 中 以获取文件内容并将其保存在数据库中 你没有H
  • python实时写入文件

    我有这段 python 代码 它循环遍历文本文件 urls txt 中的 url 列表 然后跟踪所有 url 的重定向 如果 url 包含特定字符串 则会将其写入名为 redirects txt 的文件中 import urllib req
  • 生产中头变量丢失

    我正在运行 Rails 3 1 后面有 PhusionPassenger 和 NGINX 我通过一个简单的 HttpClient OS X 的 GrahpicalHttpClient 发送请求 我的代码需要标头中的令牌和 ID 来验证调用者
  • 在Prepare()方法中找不到高级通配符映射参数

    从文档中 Struts2 的高级通配符映射 http struts apache org release 2 3 x docs wildcard mappings html 高级通配符 从2 1 9 开始可以在action中定义正则表达式
  • Visual Studio Ultimate 2013 安装失败

    我有一台 CLEVO x7200 Intel i7 970 3 20GHz 12Gb RAM 2x512Gb HDD 2xATI Radeon HD6970M 2Gb Crossfire 我有一个非常恼人的问题 我的笔记本电脑运行 Wind
  • 项目文件受版本控制吗?

    我从事一个大型项目 其中除项目文件之外的所有源文件都存储在版本控制中 这是首席开发人员的决定 他的理由是 协调开发人员工作目录之间的差异非常耗时 它允许开发人员独立工作 直到他们的更改稳定为止 相反 开发人员最初会获得其他开发人员的项目文件
  • os.path.dirname(os.path.abspath(__file__)) 和 os.path.dirname(__file__) 之间的区别

    settings pyDjango 项目的文件包含这两行 BASE DIR os path dirname os path dirname os path abspath file PROJECT ROOT os path dirname
  • 检查传递给泛型方法的类型

    如何检查作为泛型方法的类型参数传递的类型是什么 foo
  • 如何修复 NoSuchElementException(将 XPath 表达式与 Selenium 结合使用)

    我正在尝试让 Selenium 导入元掩码 但是 当我使用 XPath 表达式时 html body div 1 div div 3 div div div button 我的控制台返回 selenium common exceptions
  • 如何在简单计算器中将 Console.ReadLine() 转换为 double ? C# 异常问题

    I used double Parse and Convert ToDouble并得到同样的错误 System FormatException 输入字符串的格式不正确 当我在控制台中写入时10 2或任何其他双数 我从教程中学习并一步一步地遵
  • 使用 bash tab-completion 忽略路径条目

    我有两个命令 foo and foo bar where foo是一个符号链接foo bar 我希望能够打字f TAB 假设这是路径上仅有的两个以f 并填写其中一项 即全名and后面的空格 但最终发生的事情是它完成了foo 没有空格 因为f
  • Rust Warp 中的依赖注入

    如何将依赖项注入到 Warp 中的路由处理程序中 一个简单的例子如下 我有一个路由 我想提供在启动时确定的静态值 但过滤器是将值传递到最终处理程序的 如何在不创建全局变量的情况下传递附加数据 这对于依赖注入很有用 pub fn root r
  • 有没有办法禁止在 c 风格变量参数列表中按值使用类?

    意外使用 C 风格无类型变量参数列表中的类是一个常见的错误源 例子 class MyString public char pChars int Length MyString char pChars this gt pChars pChar
  • 如何解决 Scala 编译器崩溃问题?

    我正在使用 Scala 2 9 1 编译一个项目并得到 java lang AssertionError assertion failed at scala Predef assert Predef scala 89 at scala to