2013-06-16 17 views
9

Czy ktoś wie, co by to spowodowało? Nie mogę zapisać coś do mojej klasy, bo dostać się wyjątek debugowanie rzucony: Kolekcja jest pustySmalltalk - kolekcja jest pustym błędem podczas zapisywania

enter image description here


Link do źródła: https://dl.dropboxusercontent.com/u/1817765/Pharo%20Crash%20Files.rar

Kroki do odtworzenia:

  • Uruchom Pharo 1.1
  • Wybierz plik .image, bez plik w tym samym katalogu .changes
  • Próba wybrać NumberWithUnits>>=
    • gniewu
  • próba ratowania prawie cokolwiek NumberWithUnits
    • Wypadek
+1

z obrazka, to wygląda jak smak pisk 4.x.Która dokładnie wersja? Wygląda jak błąd, więc prawdopodobnie będziesz musiał zrzucić stos i opublikować go na liście dyskusyjnej squeak-dev (lub otworzyć problem modliszki). –

+1

Ładne znalezisko błędów !! –

Odpowiedz

5

Squeak/Pharo mają specjalną obsługę w przypadku nieobecnego kodu źródłowego: próbują dekompilować CompiledMethod z odpowiedniego MethodDictionary.

To, co tu zobaczyłeś, to błąd dekompilatora, który właściwie dekompiluje jakąś metodę.

Bez kodu IDE nie jest funkcjonalny i utkniesz (nie można zapisać kod, przeglądanie kodu, debugowania kodu ...)

Ta wersja Pharo 1.1 jest bardzo stary i ty nie otrzyma na to żadnego wsparcia.

Ale co ciekawe, bug Decompiler, które napotkał jest nadal obecny na obecnym rozwoju Zapiszczeć bagażnika (4.5)
A metoda, która sprawia, że ​​loosy Decompiler jest:

< aNumberWithUnits 
    (self compareUnits: aNumberWithUnits) 
     ifTrue: [self value: ((aNumberWithUnits value) < (self value) ifTrue: [^true] ifFalse: [^false]).] 
     ifFalse: [^Error new signal: 'Incompatible unit types.']. 

Jest to kod raczej niekonwencjonalny ponieważ wiadomość [self value: ...] nigdy nie zostanie wysłana.
Powód jest taki, że parametr zostanie najpierw oceniony, a obie gałęzie warunku zwrócą ifTrue: [^true] ifFalse: [^false].

Odkąd odkryłeś jakiś ciemny zakątek, który dopiero odkrywają nowicjusze i nie udało nam się przetestować, po prostu dziękuję.

Jeśli masz ochotę, możesz otworzyć raport o http://bugs.squeak.org

+1

Zgłosiłem to: http://bugs.squeak.org/view.php?id=7771 –

6

Problem polegał na tym, że nie miałem prawidłowego pliku .changes powiązanego z moim projektem. Ponieważ mój kolega z drużyny i ja współpracowaliśmy, te zostały utracone w tłumaczeniu. Po umieszczeniu poprawnych plików .changes w katalogu mojego pliku .image wszystko się ułożyło.

+0

Dobrze, ale Decompiler jest używany do rekonstrukcji kodu źródłowego w tym przypadku, i jest drugi problem: nie udało się. Czy możesz udostępnić kod źródłowy, który spowodował awarię? –

+0

Dodano łącze pobierania z krokami rekreacyjnymi do pierwotnego pytania – MrDuk

+1

Ach, dzięki, ta wersja Pharo jest stara, a zbadanie tego małego problemu z Decompileriem byłoby po prostu zmarnowanym czasem wiedząc, że wiele rzeczy dzieje się właśnie teraz w gałęzi rozwojowej (3.0) właśnie o Kompilator, Dekompilator, a czasem także przechowywanie kodu źródłowego. Spróbuję jednak sprawdzić Pisk. –

Powiązane problemy