The Trunk: System-mt.1078.mcz

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

The Trunk: System-mt.1078.mcz

commits-2
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1078.mcz

==================== Summary ====================

Name: System-mt.1078
Author: mt
Time: 2 August 2019, 2:36:47.057946 pm
UUID: 7e1a1567-d617-dd42-aa20-a69264d0fea4
Ancestors: System-mt.1077

Adds missing returns of (constructed) tool windows to system navigation's browse*-calls. Many were already there. Note that there is the non-browse-interface in system navigation to just execute and return queries such as #allCallsOn: vs. #browseAllCallsOn:.

=============== Diff against System-mt.1077 ===============

Item was changed:
  ----- Method: SystemNavigation>>browseAllCallsOn: (in category 'browse') -----
  browseAllCallsOn: aLiteral
  "Create and schedule a message browser on each method that refers to aLiteral."
  "self default browseAllCallsOn: #open:label:."
 
+ ^ self headingAndAutoselectForLiteral: aLiteral do: [ :label :autoSelect |
- self headingAndAutoselectForLiteral: aLiteral do: [ :label :autoSelect |
  self
  browseMessageList: [ self allCallsOn: aLiteral ]
  name: label
  autoSelect: autoSelect]!

Item was changed:
  ----- Method: SystemNavigation>>browseAllCallsOn:and:localToPackage: (in category 'browse') -----
  browseAllCallsOn: literal1 and: literal2 localToPackage: packageNameOrInfo
  "Create and schedule a message browser on each method in the given package that refers to both literal1 and literal2."
  "self default browseAllCallsOn: #open:label: localToPackage: 'Tools'."
 
+ ^ self headingAndAutoselectForLiteral: literal1 do: [ :label :autoSelect |
- self headingAndAutoselectForLiteral: literal1 do: [ :label :autoSelect |
  self
  browseMessageList: [
  self
  allCallsOn: literal1
  and: literal2
  localToPackage: packageNameOrInfo ]
  name: label, ' local to package ', (self packageInfoFor: packageNameOrInfo) name
  autoSelect: autoSelect ]!

Item was changed:
  ----- Method: SystemNavigation>>browseAllCallsOn:localTo: (in category 'browse') -----
  browseAllCallsOn: aLiteral localTo: aBehavior
  "Create and schedule a message browser on each method in or below the given class that refers to aLiteral."
  "self default browseAllCallsOn: #open:label: localTo: CodeHolder"
 
  aBehavior ifNil: [ ^self inform: 'No behavior selected.' ].
+ ^ self headingAndAutoselectForLiteral: aLiteral do: [ :label :autoSelect |
- self headingAndAutoselectForLiteral: aLiteral do: [ :label :autoSelect |
  self
  browseMessageList:  [ self allCallsOn: aLiteral from: aBehavior ]
  name: label, ' local to ', aBehavior name
  autoSelect: autoSelect ]!

Item was changed:
  ----- Method: SystemNavigation>>browseAllCallsOn:localToPackage: (in category 'browse') -----
  browseAllCallsOn: aLiteral localToPackage: packageNameOrInfo
  "Create and schedule a message browser on each method in the given package that refers to aLiteral."
  "self default browseAllCallsOn: #open:label: localToPackage: 'Tools'."
 
+ ^ self headingAndAutoselectForLiteral: aLiteral do: [ :label :autoSelect |
- self headingAndAutoselectForLiteral: aLiteral do: [ :label :autoSelect |
  self
  browseMessageList: [
  self
  allCallsOn: aLiteral
  localToPackage: packageNameOrInfo ]
  name: label, ' local to package ', (self packageInfoFor: packageNameOrInfo) name
  autoSelect: autoSelect ]!

Item was changed:
  ----- Method: SystemNavigation>>browseAllCallsOnClass: (in category 'browse') -----
  browseAllCallsOnClass: aBehaviorOrBinding
  "Create and schedule a message browser on each method that refers to aBehavior."
  "self default browseAllCallsOnClass: Array"
 
  | behaviorName |
  behaviorName := aBehaviorOrBinding isBehavior
  ifTrue: [aBehaviorOrBinding theNonMetaClass name]
  ifFalse: [aBehaviorOrBinding key].
+ ^ self
- self
  browseMessageList: [ self allCallsOnClass: aBehaviorOrBinding ]
  name: 'Users of ', behaviorName
  autoSelect: behaviorName!

Item was changed:
  ----- Method: SystemNavigation>>browseAllImplementorsOf:localToPackage: (in category 'browse') -----
  browseAllImplementorsOf: selector localToPackage: packageNameOrInfo
  "Create and schedule a message browser on each method in the given package
  that implements the message whose selector is the argument, selector. For example,
  SystemNavigation new browseAllImplementorsOf: #at:put: localToPackage: 'Collections'."
 
+ ^ self browseMessageList: (self
- self browseMessageList: (self
  allImplementorsOf: selector
  localToPackage: packageNameOrInfo)
  name: 'Implementors of ' , selector,
  ' local to package ', (self packageInfoFor: packageNameOrInfo) name!

Item was changed:
  ----- Method: SystemNavigation>>browseAllImplementorsOfList: (in category 'browse') -----
  browseAllImplementorsOfList: selectorList
  "Create and schedule a message browser on each method that implements
  the message whose selector is in the argument selectorList. For example,
  Smalltalk browseAllImplementorsOf: #(at:put: size).
  1/16/96 sw: defer to the titled version"
 
+ ^ self browseAllImplementorsOfList: selectorList title: 'Implementors of all'!
- self browseAllImplementorsOfList: selectorList title: 'Implementors of all'!

Item was changed:
  ----- Method: SystemNavigation>>browseAllObjectReferencesTo:except:ifNone: (in category 'browse') -----
  browseAllObjectReferencesTo: anObject except: objectsToExclude ifNone: aBlock
  "Bring up a list inspector on the objects that point to anObject.
  If there are none, then evaluate aBlock on anObject.  "
 
  | aList shortName |
  aList := Utilities pointersTo: anObject except: objectsToExclude.
  aList size > 0 ifFalse: [^aBlock value: anObject].
  shortName := (anObject name ifNil: [anObject printString]) contractTo: 20.
+ ^ aList inspectWithLabel: 'Objects pointing to ' , shortName!
- aList inspectWithLabel: 'Objects pointing to ' , shortName!

Item was changed:
  ----- Method: SystemNavigation>>browseAllReferencesToPool:from: (in category 'browse') -----
  browseAllReferencesToPool: poolOrName from: aClass
  "Open a message list on all messages referencing the given pool"
  | pool list |
  (poolOrName isString)
  ifTrue:[pool := Smalltalk at: poolOrName asSymbol]
  ifFalse:[pool := poolOrName].
  list := self allReferencesToPool: pool from: aClass.
+ ^ self
- self
  browseMessageList: list
+ name: 'users of ', poolOrName name!
- name: 'users of ', poolOrName name.
- ^list!

Item was changed:
  ----- Method: SystemNavigation>>browseAllUnSentMessages (in category 'browse') -----
  browseAllUnSentMessages
  "Create and schedule a message browser on each method whose message is  not sent in any method in the system."
  "self new browseAllUnSentMessages"
 
+ ^ self browseAllImplementorsOfList: self allUnSentMessages title: 'Messages implemented but not sent'!
- self browseAllImplementorsOfList: self allUnSentMessages title: 'Messages implemented but not sent'
- !

Item was changed:
  ----- Method: SystemNavigation>>browseAllUnimplementedCalls (in category 'browse') -----
  browseAllUnimplementedCalls
  "Create and schedule a message browser on each method that includes a
  message that is not implemented in any object in the system."
 
+ ^self browseMessageList: self allUnimplementedCalls name: 'Unimplemented calls'!
- ^self   browseMessageList: self allUnimplementedCalls name: 'Unimplemented calls'!

Item was changed:
  ----- Method: SystemNavigation>>browseClass: (in category 'browse') -----
  browseClass: aBehavior
  | targetClass |
  targetClass := aBehavior isMeta
  ifTrue: [aBehavior theNonMetaClass]
  ifFalse: [aBehavior ].
+ ^ ToolSet browse: targetClass selector: nil!
- ToolSet browse: targetClass selector: nil!

Item was changed:
  ----- Method: SystemNavigation>>browseClassesWithNamesContaining:caseSensitive: (in category 'browse') -----
  browseClassesWithNamesContaining: aString caseSensitive: caseSensitive
  "SystemNavigation default browseClassesWithNamesContaining: 'eMorph' caseSensitive: true "
  "Launch a class-list list browser on all classes whose names containg aString as a substring."
 
  | suffix aList |
  suffix := caseSensitive
  ifTrue: [' (case-sensitive)']
  ifFalse: [' (use shift for case-sensitive)'].
  aList := OrderedCollection new.
  Cursor wait
  showWhile: [Smalltalk
  allClassesDo: [:class | (class name includesSubstring: aString caseSensitive: caseSensitive)
  ifTrue: [aList add: class name]]].
+ ^ ToolSet openClassListBrowser: aList asSet sorted title: 'Classes whose names contain ' , aString , suffix!
- aList size > 0
- ifTrue: [ToolSet openClassListBrowser: aList asSet sorted title: 'Classes whose names contain ' , aString , suffix]!

Item was changed:
  ----- Method: SystemNavigation>>browseHierarchy: (in category 'browse') -----
  browseHierarchy: aBehavior
  | targetClass |
  targetClass := aBehavior isMeta
  ifTrue: [aBehavior theNonMetaClass]
  ifFalse: [aBehavior ].
+ ^ ToolSet browseHierarchy: targetClass selector: nil!
- ToolSet browseHierarchy: targetClass selector: nil.!

Item was changed:
  ----- Method: SystemNavigation>>browseMethodsWhoseNamesContain: (in category 'browse') -----
  browseMethodsWhoseNamesContain: aString
  "Launch a tool which shows all methods whose names contain the given string; case-insensitive.
  · 1/16/1996 sw, at the dawn of Squeak: this was the classic implementation that provided the underpinning for the 'method names containing it' (cmd-shift-W) feature that has always been in Squeak -- the feature that later inspired the MethodFinder (aka SelectorBrowser).
  · sw 7/27/2001: Switched to showing a MessageNames tool rather than a message-list browser, if in Morphic."
 
+ ^ Smalltalk isMorphic
+ ifTrue: [ToolSet browseMessageNames: aString]
+ ifFalse: [
+ self
+ browseAllImplementorsOfList: (Symbol selectorsContaining: aString)
+ title: 'Methods whose names contain ''', aString, '''']!
- | aList |
- Smalltalk isMorphic
- ifFalse:
- [aList := Symbol selectorsContaining: aString.
- aList size > 0 ifTrue:
- [self browseAllImplementorsOfList: aList title: 'Methods whose names contain ''', aString, '''']]
-
- ifTrue:
- [ToolSet browseMessageNames: aString]
- !

Item was changed:
  ----- Method: SystemNavigation>>browseMethodsWithLiteral: (in category 'browse') -----
  browseMethodsWithLiteral: aString
  "Launch a browser on all methods that contain string literals with aString as a substring. Make the search case-sensitive or insensitive as dictated by the caseSensitive boolean parameter"
 
+ ^ self browseAllSelect:
- self browseAllSelect:
  [:method |
  method hasLiteralSuchThat: [:lit |
  (lit isString and: [lit isSymbol not]) and:
  [lit = aString]]]
  name:  'Methods with string ', aString printString
+ autoSelect: aString!
- autoSelect: aString.
- !

Item was changed:
  ----- Method: SystemNavigation>>browseMethodsWithString:matchCase: (in category 'browse') -----
  browseMethodsWithString: aString matchCase: caseSensitive
  "Launch a browser on all methods that contain string literals with aString as a substring. Make the search case-sensitive or insensitive as dictated by the caseSensitive boolean parameter"
 
+ ^ self
- self
  browseMessageList: (self allMethodsWithString: aString matchCase: caseSensitive)
  name:  'Methods with string ', aString printString, (caseSensitive ifTrue: [' (case-sensitive)'] ifFalse: [' (case-insensitive)'])
  autoSelect: aString!

Item was changed:
  ----- Method: SystemNavigation>>browseMyChanges (in category 'browse') -----
  browseMyChanges
  "Browse only the changes (in the changes file) by the current author."
 
  "SystemNavigation default browseMyChanges"
 
+ ^ self browseAllSelect: [ :method |
- self browseAllSelect: [ :method |
         method fileIndex > 1 "only look at changes file"
                 and: [ method timeStamp beginsWith: Utilities authorInitials ]]!

Item was changed:
  ----- Method: SystemNavigation>>browseObsoleteMethodReferences (in category 'browse') -----
  browseObsoleteMethodReferences
  "Open a browser on all referenced behaviors that are obsolete"
 
  "SystemNavigation default browseObsoleteMethodReferences"
 
  | list |
  list := self obsoleteMethodReferences.
+ ^ self
- self
  browseMessageList: list
  name: 'Method referencing obsoletes'
  autoSelect: nil!

Item was changed:
  ----- Method: SystemNavigation>>browseObsoleteReferences (in category 'browse') -----
  browseObsoleteReferences  
  "self new browseObsoleteReferences"
 
  | references |
  references := OrderedCollection new.
  (LookupKey allSubInstances select:
  [:x | ((x value isKindOf: Behavior) and: ['AnOb*' match: x value name]) or:
  ['AnOb*' match: x value class name]])
  do: [:x | references addAll: (self allCallsOn: x)].
+ ^ self  
- self  
  browseMessageList: references
  name: 'References to Obsolete Classes'!

Item was changed:
  ----- Method: SystemNavigation>>browseUncommentedMethodsWithInitials: (in category 'browse') -----
  browseUncommentedMethodsWithInitials: targetInitials
  "Browse uncommented methods whose initials (in the time-stamp, as logged to disk) match the given initials.  Present them in chronological order.  CAUTION: It will take several seconds for this to complete."
  "Time millisecondsToRun: [SystemNavigation default browseUncommentedMethodsWithInitials: 'jm']"
 
+ ^ self
- self
  browseMessageList: [ self allUncommentedMethodsWithInitials: targetInitials ]
  name: 'Uncommented methods with initials ', targetInitials
  autoSelect: nil!