#REFACTORING by cg
authorClaus Gittinger <cg@exept.de>
Sun, 01 May 2016 09:43:27 +0200
changeset 3801 58d649c2286a
parent 3799 249e6614cd4b
child 3802 b4831dfc1f7b
#REFACTORING by cg class: Explainer changed: #addTypeOfExpressionNode:forAssignmentTo:to: #addTypesOfInstvar:inClass:fromExistingInstancesTo: #rememberType:in:
Explainer.st
--- 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'!