#REFACTORING by cg
class: Explainer
changed:
#addTypeOfExpressionNode:forAssignmentTo:to:
#addTypesOfInstvar:inClass:fromExistingInstancesTo:
#rememberType:in:
--- a/Explainer.st Sun May 01 03:35:55 2016 +0000
+++ b/Explainer.st Sun May 01 09:43:27 2016 +0200
@@ -1676,10 +1676,9 @@
"/ only look for wellknown types on the right side.
expr isConstant ifTrue:[
val := expr evaluate.
+ valClass := val class.
val isImmutable ifTrue:[
- valClass := val class mutableClass
- ] ifFalse:[
- valClass := val class
+ valClass := [ valClass mutableClass ] on:Error do:[ valClass ].
].
self rememberType:valClass in:setOfTypes.
^ self.
@@ -1734,6 +1733,7 @@
].
"Created: / 30-04-2016 / 15:28:59 / cg"
+ "Modified: / 30-04-2016 / 20:17:35 / cg"
!
addTypesAssignedToInstvar:instVarName inClass:aClass method:aMethod to:setOfTypes
@@ -1801,13 +1801,17 @@
instIndex := aClass instVarIndexFor:instVarName.
aClass allSubInstancesDo:[:i |
- |varClass|
+ |val varClass|
- varClass := (i instVarAt:instIndex) class.
- self rememberType:varClass in:setOfTypes.
+ val := (i instVarAt:instIndex).
+ val notNil ifTrue:[
+ varClass := val class.
+ self rememberType:varClass in:setOfTypes.
+ ].
].
"Created: / 30-04-2016 / 14:56:11 / cg"
+ "Modified: / 30-04-2016 / 20:05:03 / cg"
!
compressSetOfTypes:setOfTypes
@@ -1856,10 +1860,10 @@
!
rememberType:aClass in:setOfTypes
-aClass == UndefinedObject ifTrue:[self halt].
setOfTypes add:aClass
"Created: / 30-04-2016 / 15:35:44 / cg"
+ "Modified: / 30-04-2016 / 20:05:09 / cg"
! !
!Explainer class methodsFor:'documentation'!