[Pharo-project] Issue 3763 in pharo: assert failure during Decompiler>>popIntoTemporaryVariable:

pharo at googlecode.com pharo at googlecode.com
Sat Feb 26 19:00:29 CET 2011


Comment #3 on issue 3763 by da... at teleport.com: assert failure during  
Decompiler>>popIntoTemporaryVariable:
http://code.google.com/p/pharo/issues/detail?id=3763

If I change the source to the following, I can bypass the MethodContext bug  
and get a debugger on the source of the problem:

resolveToLoadableSpecs: required map: packageMap

	| reqd allReqd map spec newReqd |
	reqd := required copy.
	allReqd := Set new.
	map := self packages map.
	[ reqd isEmpty ] whileFalse: [
		newReqd := Set new.
		reqd do: [:req |
			(self resolveToLoadableSpec: req forMap: map packages: packageMap)
				do: [:loadableSpec |
					newReqd addAll: loadableSpec requires.
					newReqd addAll: loadableSpec includes ]].
		allReqd addAll: reqd.
		newReqd removeAllFoundIn: allReqd.
		reqd := newReqd ].
	packageMap keys do: [:pkgName |
		(spec := (packageMap at: pkgName) resolveToLoadableSpec) == nil
			ifTrue: [ packageMap removeKey: pkgName ]
			ifFalse: [ packageMap at: pkgName put: (packageMap at: pkgName)  
resolveToLoadableSpec ]]

The trick is to move the declaration of the two temps spec and newReqd out  
of the blocks and into the top level ... I suspect that newReqd was the bad  
boy ...





More information about the Pharo-project mailing list