有谁知道会导致什么?我无法将任何内容保存到我的班级,因为我收到了调试异常:Collection为空

链接到源:https: //dl.dropboxusercontent.com/u/1817765/Pharo%20Crash%20Files.rar
重新创建的步骤:
.image文件,而不该.changes在同一个目录下的文件NumberWithUnits>>=
NumberWithUnits
问题是我没有.changes与我的项目相关联的正确文件.自从我和我的队友合作以来,这些都在翻译中丢失了.一旦我将正确的.changes文件放在我的.image文件目录中,一切都解决了.
如果没有源代码,Squeak/Pharo会有特殊处理:他们尝试从适当的MethodDictionary中反编译CompiledMethod.
你在这里看到的是Decompiler无法正确反编译某些方法.
如果没有代码,IDE将无法运行,您将陷入困境(无法保存代码,浏览代码,调试代码......)
这个Pharo 1.1版本很老了,你不会得到任何支持.
但有趣的是,您遇到的Decompiler的错误仍然存在于当前的Squeak主干开发中(4.5)
并且使Decompiler松散的方法是:
< aNumberWithUnits
(self compareUnits: aNumberWithUnits)
ifTrue: [self value: ((aNumberWithUnits value) < (self value) ifTrue: [^true] ifFalse: [^false]).]
ifFalse: [^Error new signal: 'Incompatible unit types.'].
Run Code Online (Sandbox Code Playgroud)
这是一个非常规的代码,因为[self value: ...]永远不会发送消息.
原因是首先评估参数,并且条件的两个分支都将返回ifTrue: [^true] ifFalse: [^false].
既然你探索了一些只有新手才能探索的黑暗角落,并且我们未能测试,我只想说谢谢.
如果您愿意,可以在http://bugs.squeak.org上打开报告