--- a/SystemBrowser.st Thu Dec 20 15:15:31 2007 +0100
+++ b/SystemBrowser.st Mon Jan 07 14:31:26 2008 +0100
@@ -2536,47 +2536,12 @@
browseForSymbol:aSymbol in:aSetOfClasses title:title warnIfNone:doWarn
"launch a browser for all methods referencing aSymbol"
- |browser searchBlock sym|
-
- (aSymbol includesMatchCharacters) ifTrue:[
- "a matchString"
- searchBlock := [:c :m :s |
- (m literalsDetect:[:aLiteral|
- (aLiteral isMemberOf:Symbol)
- and:[aSymbol match:aLiteral]
- ] ifNone:nil) notNil
- ].
- ] ifFalse:[
- "
- can do a faster search
- "
- sym := aSymbol asSymbolIfInterned.
- sym isNil ifTrue:[
- self showNoneFound:title.
- ^ nil
- ].
-
- searchBlock := [:c :m :s |
- (m literalsDetect:[:aLiteral|
- (sym == aLiteral)
- ] ifNone:nil) notNil
- ].
- ].
- doWarn ifFalse:[
- WarningSignal ignoreIn:[
- browser := self browseMethodsIn:aSetOfClasses where:searchBlock title:title.
- ]
- ] ifTrue:[
- browser := self browseMethodsIn:aSetOfClasses where:searchBlock title:title.
- ].
- browser notNil ifTrue:[
- browser autoSearch:aSymbol
- ].
- ^ browser
-
- "Modified: 24.6.1996 / 14:39:07 / stefan"
- "Modified: 30.6.1996 / 16:45:25 / cg"
- "Created: 10.7.1996 / 10:36:36 / cg"
+ ^ self
+ browseForSymbol:aSymbol
+ in:aSetOfClasses
+ title:title
+ warnIfNone:doWarn
+ searchFor:aSymbol
!
browseForSymbol:aSymbol in:aSetOfClasses title:title warnIfNone:doWarn searchFor:searchString
@@ -3349,6 +3314,7 @@
"
SystemBrowser browseSendersOf:#+
+ UserPreferences current systemBrowserClass browseSendersOf:#+
"
"Modified: / 10.7.1996 / 10:26:15 / cg"
@@ -3523,25 +3489,49 @@
!
filterToSearchRefsTo:varName classVars:classVars access:accessType
+ "return a searchblock for variable references (obsolete)"
+
+ ^ self
+ filterToSearchRefsTo:varName
+ instVars:(classVars not)
+ classVars:classVars
+ globals:false
+ access:accessType
+!
+
+filterToSearchRefsTo:varName classVars:classVars modificationsOnly:modsOnly
+ "return a searchblock for variable references"
+
+ ^ self
+ filterToSearchRefsTo:varName
+ classVars:classVars
+ access:(modsOnly ifTrue:#write ifFalse:#readWrite)
+!
+
+filterToSearchRefsTo:varName instVars:doInstVars classVars:doClassVars globals:doGlobals access:accessType
"return a searchblock for variable references"
|searchBlock|
searchBlock := [:c :m :s |
- |src result parser vars needMatch|
+ |src result parser vars instVars classVars globals needMatch|
needMatch := varName includesMatchCharacters.
+ result := false.
+
src := m source.
- src isNil ifTrue:[
- result := false
- ] ifFalse:[
+ src notNil ifTrue:[
needMatch ifFalse:[
"
before doing a slow parse, quickly scan the
methods source for the variables name ...
"
- result := (src findString:varName) ~~ 0.
+ (varName includes:$:) ifTrue:[
+ result := (src findString:(varName copyFrom:(varName lastIndexOf:$:)+1)) ~~ 0.
+ ] ifFalse:[
+ result := (src findString:varName) ~~ 0.
+ ].
] ifTrue:[
result := true.
].
@@ -3554,97 +3544,46 @@
ignoreWarnings:true.
(parser notNil and:[parser ~~ #Error]) ifTrue:[
- classVars ifFalse:[
+ vars := Set new.
+ doInstVars ifTrue:[
accessType == #read ifTrue:[
- vars := parser readInstVars
+ instVars := parser readInstVars
] ifFalse:[
accessType == #write ifTrue:[
- vars := parser modifiedInstVars
+ instVars := parser modifiedInstVars
] ifFalse:[
- vars := parser usedInstVars
+ instVars := parser usedInstVars
]
].
- ] ifTrue:[
+ vars addAll:instVars.
+ ].
+ doClassVars ifTrue:[
accessType == #read ifTrue:[
- vars := parser readClassVars
+ classVars := parser readClassVars
] ifFalse:[
accessType == #write ifTrue:[
- vars := parser modifiedClassVars
+ classVars := parser modifiedClassVars
] ifFalse:[
- vars := parser usedClassVars
+ classVars := parser usedClassVars
]
].
+ vars addAll:classVars.
+ ].
+ doGlobals ifTrue:[
+ accessType == #read ifTrue:[
+ globals := parser readGlobals
+ ] ifFalse:[
+ accessType == #write ifTrue:[
+ globals := parser modifiedGlobals
+ ] ifFalse:[
+ globals := parser usedGlobals
+ ]
+ ].
+ vars addAll:globals.
].
vars size > 0 ifTrue:[
needMatch ifTrue:[
- vars do:[:cv |
- (varName match:cv) ifTrue:[result := true]
- ]
- ] ifFalse:[
- result := vars includes:varName
- ]
- ]
- ].
- ].
- ].
- Processor yield.
- result
- ].
- ^ searchBlock
-
- "Modified: 19.6.1997 / 18:27:57 / cg"
-!
-
-filterToSearchRefsTo:varName classVars:classVars modificationsOnly:modsOnly
- "return a searchblock for variable references"
-
- |searchBlock|
-
- searchBlock := [:c :m :s |
- |src result parser vars needMatch|
-
- needMatch := varName includesMatchCharacters.
-
- src := m source.
- src isNil ifTrue:[
- result := false
- ] ifFalse:[
- needMatch ifFalse:[
- "
- before doing a slow parse, quickly scan the
- methods source for the variables name ...
- "
- result := (src findString:varName) ~~ 0.
- ] ifTrue:[
- result := true.
- ].
- result ifTrue:[
- result := false.
- parser := Parser
- parseMethod:src
- in:c
- ignoreErrors:true
- ignoreWarnings:true.
-
- (parser notNil and:[parser ~~ #Error]) ifTrue:[
- classVars ifFalse:[
- modsOnly ifTrue:[
- vars := parser modifiedInstVars
- ] ifFalse:[
- vars := parser usedInstVars
- ].
- ] ifTrue:[
- modsOnly ifTrue:[
- vars := parser modifiedClassVars
- ] ifFalse:[
- vars := parser usedClassVars
- ].
- ].
- vars size > 0 ifTrue:[
- needMatch ifTrue:[
- vars do:[:cv |
- (varName match:cv) ifTrue:[result := true]
- ]
+ result := vars contains:[:cv | (varName match:cv)]
] ifFalse:[
result := vars includes:varName
]
@@ -5427,7 +5366,7 @@
!SystemBrowser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/SystemBrowser.st,v 1.246 2007-09-20 14:10:09 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/SystemBrowser.st,v 1.247 2008-01-07 13:31:26 cg Exp $'
! !
SystemBrowser initialize!