[squeak-dev] The Trunk: Tools-fbs.515.mcz
Chris Muller
asqueaker at gmail.com
Fri Jan 3 16:48:47 UTC 2014
Some questions.
Moving out the inspect / explore stuff to Tools seems reasonable, but
why ContextPart>>errorReportOn: moved out of Kernel?
Because one of the responsibilities of Kernel is to do reasonable
reporting in case of an error isn't it? Is there any error-handling
left in Kernel?
Also, why putting back unused NumberOfRecentSubmissionsToStore var
into RecentMessages?
On Fri, Jan 3, 2014 at 5:36 AM, <commits at source.squeak.org> wrote:
> Frank Shearar uploaded a new version of Tools to project The Trunk:
> http://source.squeak.org/trunk/Tools-fbs.515.mcz
>
> ==================== Summary ====================
>
> Name: Tools-fbs.515
> Author: fbs
> Time: 3 January 2014, 11:36:39.703 am
> UUID: eb2eb7de-3e2e-bb44-95a0-0f945bb74023
> Ancestors: Tools-tpr.514
>
> Move some Tools functionality out of Kernel to Tools.
>
> =============== Diff against Tools-tpr.514 ===============
>
> Item was added:
> + ----- Method: Behavior>>inspectAllInstances (in category '*Tools-accessing instances and variables') -----
> + inspectAllInstances
> + "Inpsect all instances of the receiver. 1/26/96 sw"
> +
> + | all allSize prefix |
> + all := self allInstances.
> + (allSize := all size) = 0 ifTrue: [^ self inform: 'There are no
> + instances of ', self name].
> + prefix := allSize = 1
> + ifTrue: ['The lone instance']
> + ifFalse: ['The ', allSize printString, ' instances'].
> +
> + all asArray inspectWithLabel: (prefix, ' of ', self name)!
>
> Item was added:
> + ----- Method: Behavior>>inspectSubInstances (in category '*Tools-accessing instances and variables') -----
> + inspectSubInstances
> + "Inspect all instances of the receiver and all its subclasses. CAUTION - don't do this for something as generic as Object!! 1/26/96 sw"
> +
> + | all allSize prefix |
> + all := self allSubInstances.
> + (allSize := all size) = 0 ifTrue: [^ self inform: 'There are no
> + instances of ', self name, '
> + or any of its subclasses'].
> + prefix := allSize = 1
> + ifTrue: ['The lone instance']
> + ifFalse: ['The ', allSize printString, ' instances'].
> +
> + all asArray inspectWithLabel: (prefix, ' of ', self name, ' & its subclasses')!
>
> Item was added:
> + ----- Method: ContextPart>>errorReportOn: (in category '*Tools-debugger access') -----
> + errorReportOn: strm
> + "Write a detailed error report on the stack (above me) on a stream. For both the error file, and emailing a bug report. Suppress any errors while getting printStrings. Limit the length."
> +
> + | cnt aContext startPos |
> + strm print: Date today; space; print: Time now; cr.
> + strm cr.
> + strm nextPutAll: 'VM: ';
> + nextPutAll: Smalltalk platformName asString;
> + nextPutAll: ' - ';
> + nextPutAll: Smalltalk asString;
> + cr.
> + strm nextPutAll: 'Image: ';
> + nextPutAll: SystemVersion current version asString;
> + nextPutAll: ' [';
> + nextPutAll: Smalltalk lastUpdateString asString;
> + nextPutAll: ']';
> + cr.
> + strm cr.
> + SecurityManager default printStateOn: strm.
> +
> + "Note: The following is an open-coded version of ContextPart>>stackOfSize: since this method may be called during a low space condition and we might run out of space for allocating the full stack."
> + cnt := 0. startPos := strm position.
> + aContext := self.
> + [aContext notNil and: [(cnt := cnt + 1) < 20]] whileTrue:
> + [aContext printDetails: strm. "variable values"
> + strm cr.
> + aContext := aContext sender].
> +
> + strm cr; nextPutAll: '--- The full stack ---'; cr.
> + aContext := self.
> + cnt := 0.
> + [aContext == nil] whileFalse:
> + [cnt := cnt + 1.
> + cnt = 20 ifTrue: [strm nextPutAll: ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -'; cr].
> + strm print: aContext; cr. "just class>>selector"
> +
> + "exit early if too long..."
> + strm position > (startPos+ self class maxLengthForASingleDebugLogReport) ifTrue: [strm nextPutAll: '...etc...'. ^ self]. cnt > self class maxStackDepthForASingleDebugLogReport ifTrue: [strm nextPutAll: '-- and more not shown --'. ^ self].
> + aContext := aContext sender].
> + !
>
> Item was added:
> + ----- Method: Object>>explore (in category '*Tools-Explorer') -----
> + explore
> + ^ToolSet explore: self!
>
> Item was added:
> + ----- Method: Object>>inspectWithLabel: (in category '*Tools-inspecting') -----
> + inspectWithLabel: aLabel
> + "Create and schedule an Inspector in which the user can examine the receiver's variables."
> + ^ToolSet inspect: self label: aLabel!
>
> Item was added:
> + ----- Method: Object>>notifyWithLabel: (in category '*Tools-error handling') -----
> + notifyWithLabel: aString
> + "Create and schedule a Notifier with aString as the window label as well as the contents of the window, in order to request confirmation before a process can proceed."
> +
> + ToolSet
> + debugContext: thisContext
> + label: aString
> + contents: aString
> +
> + "nil notifyWithLabel: 'let us see if this works'"!
>
> Item was changed:
> MessageSet subclass: #RecentMessageSet
> instanceVariableNames: ''
> + classVariableNames: 'NumberOfRecentSubmissionsToStore'
> - classVariableNames: ''
> poolDictionaries: ''
> category: 'Tools-Browser'!
>
> !RecentMessageSet commentStamp: 'sw 8/1/2002 17:40' prior: 0!
> RecentMessageSet is a message set that shows the most recently-submitted methods, in chronological order.!
>
>
More information about the Squeak-dev
mailing list
|