ソースコードがない場合、Squeak/Pharoは特別な処理を行います。適切なMethodDictionaryからCompiledMethodを試して逆コンパイルします。
ここで見たことは、Decompilerがいくつかの方法を正しく逆コンパイルできなかったことです。コードなし
、IDEが非機能的であり、そしてあなたが立ち往生している(あなたのコード、デバッグコードを閲覧し、あなたのコードを保存することはできません...)
このファーロ1.1バージョンは非常に古いですし、それに対するサポートはありません。
しかし、興味深いことに、あなたが遭遇したデコンパイラのバグがまだ現在のSqueakのトランクの開発に存在している(4.5)
そして、逆コンパイラのloosyを作る方法は次のとおりです。
< aNumberWithUnits
(self compareUnits: aNumberWithUnits)
ifTrue: [self value: ((aNumberWithUnits value) < (self value) ifTrue: [^true] ifFalse: [^false]).]
ifFalse: [^Error new signal: 'Incompatible unit types.'].
これはかなり型破りなコードでありますメッセージ[self value: ...]
は決して送信されないためです。
この理由は、パラメータが最初に評価され、条件の両方の分岐がifTrue: [^true] ifFalse: [^false]
を返すためです。
初心者だけが調査してテストしなかったダークコーナーを調べたので、ありがとうございます。
あなたはそれのように感じる場合は、あなたが絵からhttp://bugs.squeak.org
に関するレポートを開くことができ、それがきしみ4.xの味のように見えます。正確にはどのバージョンですか?それはバグのように見えるので、おそらくスタックをダンプしてsqueak-devメーリングリストに投稿しなければならない(またはmantisの問題を開く)必要があるでしょう。 –
ニースバグを発見! –