[Pkg] The Trunk: Tools-eem.380.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Sep 27 15:58:49 UTC 2011
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.380.mcz
==================== Summary ====================
Name: Tools-eem.380
Author: eem
Time: 27 September 2011, 8:58:20.236 am
UUID: 087978c3-2b74-4746-8458-ec0de273fc01
Ancestors: Tools-eem.379
Use the methodForDecompile hook in CodeHolder>>
decompiledSourceIntoContentsWithTempNames:. This
fixes infinite recursion when decompiling installed wrapper
methods. Needs Kernel-eem.630.
=============== Diff against Tools-eem.379 ===============
Item was changed:
----- Method: CodeHolder>>decompiledSourceIntoContentsWithTempNames: (in category 'message list') -----
decompiledSourceIntoContentsWithTempNames: showTempNames
"Obtain a source string by decompiling the method's code, and place
that source string into my contents.
Also return the string.
Get temps from source file if showTempNames is true."
| tempNames class selector method |
class := self selectedClassOrMetaClass.
selector := self selectedMessageName.
"Was method deleted while in another project?"
method := class compiledMethodAt: selector ifAbsent: [^ ''].
currentCompiledMethod := method.
(showTempNames not
+ or: [method fileIndex > 0 and: [(SourceFiles at: method fileIndex) isNil]])
+ ifTrue:
- or: [method fileIndex > 0
- and: [(SourceFiles at: method fileIndex) isNil]])
- ifTrue: [
"Emergency or no source file -- decompile without temp names "
+ [contents := (class decompilerClass new
+ decompile: selector
+ in: class
+ method: method methodForDecompile) decompileString]
+ ifFalse:
+ [tempNames := (class newCompiler
- contents := (class decompilerClass new
- decompile: selector
- in: class
- method: method) decompileString]
- ifFalse: [tempNames := (class newCompiler
parse: method getSourceFromFile asString
in: class
notifying: nil)
generate: CompiledMethodTrailer defaultMethodTrailer;
schematicTempNamesString.
contents := ((class decompilerClass new withTempNames: tempNames)
+ decompile: selector
+ in: class
+ method: method methodForDecompile) decompileString].
- decompile: selector
- in: class
- method: method) decompileString].
contents := contents asText makeSelectorBoldIn: class.
^ contents copy!
More information about the Packages
mailing list