The Trunk: Tools-fbs.515.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Tools-fbs.515.mcz

commits-2
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.!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Tools-fbs.515.mcz

Chris Muller-3
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,  <[hidden email]> 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.!
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Tools-fbs.515.mcz

Chris Muller-3
> Also, why putting back unused NumberOfRecentSubmissionsToStore var
> into RecentMessages?

RecentMessagesSet.

Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: Tools-fbs.515.mcz

Frank Shearar-3
In reply to this post by Chris Muller-3
On 3 January 2014 16:48, Chris Muller <[hidden email]> wrote:
> 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?

#errorReportOn: uses a bunch of System classes, so doesn't belong in
Kernel. Since #errorReportOn: is something the Debugger uses during
the process of making a bug report mail, and the only other use is
from SmalltalkImage >> #logError:inContext:to:, it seemed reasonable
to push the message into Tools. I could see an argument for System
being its more natural home.

> Also, why putting back unused NumberOfRecentSubmissionsToStore var
> into RecentMessages?

Hm, that wasn't intentional! I wonder how that even got in there. OK,
I'll rip it out (again). Gives me an excuse to fix that ridiculous
typo I made, too.

frank

> On Fri, Jan 3, 2014 at 5:36 AM,  <[hidden email]> 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.!
>>
>>
>