class: Parser
comment/format in: #messagesPossiblySent
changed: #rememberSelectorUsed:receiver:args:
better heuristics
--- a/Parser.st Mon Mar 03 20:50:33 2014 +0100
+++ b/Parser.st Wed Mar 05 14:04:28 2014 +0100
@@ -10090,7 +10090,8 @@
messagesPossiblySent
"return a collection with possible message selectors (valid after parsing).
- Includes things known or possibly used with #perform or in specs."
+ Includes things known or possibly used with #perform: or in specs.
+ The returned collection is filled by heuristics, not sharp, exact"
^ (messagesPossiblySent ? #()) collect:[:each | each asSymbol]
!
@@ -10505,23 +10506,38 @@
!
rememberSelectorUsed:selectorArg receiver:receiverNode args:args
- |selPerformed sel|
+ "TODO: the heuristics below could be made more
+ flexible by annotating methods which do a perform somehow,
+ and then asking implementors of selectorArg..."
+
+ |selPerformed sel arg1|
sel := selectorArg asSymbol.
self rememberSelectorUsed:sel receiver:receiverNode.
(
- #( 'perform:'
- 'pushEvent:'
- 'pushUserEvent:'
- 'enqueueMessage:'
- )
+ #( 'perform:'
+ 'pushEvent:'
+ 'pushUserEvent:'
+ 'enqueueMessage:'
+ "/ new: knowing that symbol responds to value:
+ 'do:'
+ 'select:'
+ 'collect:'
+ 'reject:'
+ 'detect:'
+ 'map:'
+ 'findFirst:'
+ 'contains:'
+ 'flatDo:'
+ 'flatDetect:'
+ )
contains:[:prefix | sel startsWith:prefix]) ifTrue:[
- args first isConstant ifTrue:[
- (selPerformed := args first value) isSymbol ifTrue:[
- self rememberSelectorPossiblyUsed:selPerformed
- ]
- ]
+ (arg1 := args first) isConstant ifTrue:[
+ (selPerformed := arg1 value) isSymbol ifTrue:[
+ self rememberSelectorPossiblyUsed:selPerformed
+ ]
+ ]
].
"Modified (format): / 30-07-2013 / 15:48:37 / cg"
@@ -11802,11 +11818,11 @@
!Parser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.811 2014-03-03 19:50:33 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.812 2014-03-05 13:04:28 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.811 2014-03-03 19:50:33 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libcomp/Parser.st,v 1.812 2014-03-05 13:04:28 cg Exp $'
!
version_SVN