class: Parser
authorClaus Gittinger <cg@exept.de>
Wed, 05 Mar 2014 14:04:28 +0100
changeset 3399 cc86deb41376
parent 3398 430f7332b92f
child 3400 d8fc074a046c
class: Parser comment/format in: #messagesPossiblySent changed: #rememberSelectorUsed:receiver:args: better heuristics
Parser.st
--- 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