[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