2013-06-16 16 views
9

Qualcuno sa cosa potrebbe causare questo? Non riesco a salvare nulla per la mia classe perché ricevo un'eccezione debug gettato: Collection è vuotoSmalltalk - raccolta è vuoto errore durante il salvataggio

enter image description here


Link fonte: https://dl.dropboxusercontent.com/u/1817765/Pharo%20Crash%20Files.rar

passaggi per ricreare:

  • Avvia Pharo 1.1
  • Seleziona il file .image, senza il file .changes nella stessa directory
  • tenta di selezionare NumberWithUnits>>=
    • Crash
  • tentativo di salvare quasi nulla per NumberWithUnits
    • Crash
+1

Dalla foto, sembra un sapore squittio 4.x.Quale versione esattamente? Sembra un bug, quindi probabilmente dovrai scaricare lo stack e postarlo nella mailing list squeak-dev (o aprire un problema con mantide). –

+1

Bel bug trovare !! –

risposta

5

Squeak/Pharo hanno una gestione speciale in caso di assenza del codice sorgente: tentano di decompilare CompiledMethod da MethodDictionary appropriato.

Quello che hai visto qui è un errore di Decompiler per decompilare correttamente un metodo.

senza codice, l'IDE è non funzionale, e si sono bloccati (non è possibile salvare il codice, sfogliare il codice, debug del codice ...)

Questa versione Pharo 1.1 è molto vecchio e si non otterrà alcun supporto su di esso.

Ma è interessante, il bug di Decompiler che hai incontrato è ancora presente sullo sviluppo tronco Squeak corrente (4.5)
E il metodo che rende il loosy Decompiler è:

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

Questo è un codice piuttosto non convenzionale poiché il messaggio [self value: ...] non verrà mai inviato.
Il motivo è che il parametro verrà valutato per primo e entrambi i rami della condizione restituiranno ifTrue: [^true] ifFalse: [^false].

Dato che hai esplorato un angolo buio che solo i neofiti esplorano, e che non siamo riusciti a testare, direi solo grazie.

Se vi piace di più, è possibile aprire una relazione sulla http://bugs.squeak.org

+1

L'ho segnalato: http://bugs.squeak.org/view.php?id=7771 –

6

Il problema era che non avevo il file .changes corretto associato al mio progetto. Dal momento che il mio compagno di squadra e io stavamo collaborando, questi erano persi nella traduzione. Una volta che ho inserito i file .changes corretti nella directory del mio file .image, tutto ha funzionato.

+0

Buono, ma il Decompilatore è usato per ricostruire il codice sorgente in questo caso, e c'è un secondo problema: non è riuscito. Potresti condividere il codice sorgente che l'ha fatto fallire? –

+0

Aggiunto un collegamento per il download con passaggi di ricreazione alla domanda originale – MrDuk

+1

Ah, grazie, questa versione di Pharo è vecchia, e indagare su questo piccolo problema del Decompilatore sarebbe solo tempo perso sapendo che molte cose stanno accadendo proprio ora nel ramo di sviluppo (3.0) Compilatore, decompilatore, e qualche volta presto l'archiviazione del codice sorgente. Proverò comunque a controllare Squeak. –

Problemi correlati