Comment #3 on issue 3763 by [email protected]: 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 ...