--- a/SmallSense__SmalltalkInferencer.st Sat Oct 26 17:53:10 2013 +0100
+++ b/SmallSense__SmalltalkInferencer.st Sat Oct 26 18:04:50 2013 +0100
@@ -285,6 +285,42 @@
self process: tree in: cls info: (Manager instance infoForClass: cls)
"Created: / 26-11-2011 / 13:48:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+process: tree in: cls info: clsInfo
+
+ | i c |
+
+ class := cls.
+ classInfo := clsInfo.
+
+ "Fill types with cached data..."
+
+ c := class.
+ i := classInfo.
+ [ c notNil and:[i notNil] ] whileTrue:[
+ c instVarNames do:[:nm|
+ types at: nm put: (i infoForInstvar: nm)
+ ].
+ c := c superclass.
+ i := i superclassInfo.
+ ].
+
+ self visit:tree.
+
+
+ "Now, infer variable types based on collected sends"
+ sends keysAndValuesDo:[:varName :sentSelectors|
+ | classes |
+
+ classes := self rootsUnderstanding: sentSelectors.
+ (types includesKey: varName) ifTrue:[
+ (types at: varName) addClasses: classes.
+ ].
+ ].
+
+ "Created: / 27-11-2011 / 16:22:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified (format): / 26-10-2013 / 13:58:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!SmalltalkInferencer::Phase1 methodsFor:'visiting'!