#BUGFIX by mawalch
authormawalch
Thu, 23 Feb 2017 20:56:05 +0100
changeset 5501 905b5a2216f7
parent 5500 821ec5a9d9c4
child 5502 427cef61298f
#BUGFIX by mawalch class: DoWhatIMeanSupport changed: #addClassesOfExpression:inClass:to: Fix nil DNU.
DoWhatIMeanSupport.st
--- a/DoWhatIMeanSupport.st	Thu Feb 23 16:55:54 2017 +0100
+++ b/DoWhatIMeanSupport.st	Thu Feb 23 20:56:05 2017 +0100
@@ -5596,19 +5596,19 @@
 
     expr isLiteral ifTrue:[
         exprVal := expr value.
-        cls := exprVal class.         
+        cls := exprVal class.
         (exprVal isArray or:[ exprVal isByteArray or:[ exprVal isString ]]) ifTrue:[
             exprVal isImmutable ifTrue:[
                 setOfTypes add:cls mutableClass.
-                ^ setOfTypes.    
+                ^ setOfTypes.
             ]
         ].
-        setOfTypes add:cls. 
-        ^ setOfTypes.    
-    ].
-    
+        setOfTypes add:cls.
+        ^ setOfTypes.
+    ].
+
     expr isBlock ifTrue:[
-        setOfTypes add:Block. 
+        setOfTypes add:Block.
         ^ setOfTypes.
     ].
 
@@ -5627,56 +5627,56 @@
         varName = 'self' ifTrue:[
             instanceOrNil notNil ifTrue:[
                 setOfTypes add:(instanceOrNil class).
-            ] ifFalse:[    
+            ] ifFalse:[
                 setOfTypes add:(classOrNil ? UndefinedObject).
             ].
             ^ setOfTypes
         ].
         varName = 'super' ifTrue:[
-            classOrNil isNil 
+            classOrNil isNil
                 ifTrue:[setOfTypes add:Object]
                 ifFalse:[setOfTypes add:classOrNil superclass].
-            ^ setOfTypes.    
+            ^ setOfTypes.
         ].
         varName = 'thisContext' ifTrue:[
             setOfTypes add:Context.
             ^ setOfTypes
         ].
-        
+
         varScope := expr whoDefines: varName.
         (varScope notNil) ifTrue:[
             varScope isSequence ifTrue:[
                 varScope := varScope parent.
             ].
-            
+
             (varScope isBlock) ifTrue:[
                 self addClassesOfBlockVarForWellknownBlocks:expr inScope:varScope to:setOfTypes.
                 self addClassesFromAssignmentTo:varName in:varScope to:setOfTypes.
                 self addClassesFromMessagesSentTo:expr in:varScope to:setOfTypes.
                 ^ setOfTypes
-            ].    
+            ].
             (varScope isMethod) ifTrue:[
                 self addClassesFromAssignmentTo:varName in:varScope to:setOfTypes.
                 self addClassesFromMessagesSentTo:expr in:varScope to:setOfTypes.
                 ^ setOfTypes
-            ].    
+            ].
         ].
-        
+
         classOrNil notNil ifTrue:[
             "/ inst var
             instVarClass := classOrNil whichClassDefinesInstVar:varName.
             instVarClass notNil ifTrue:[
                 setOfTypes addAll:(self classesOfInstVarNamed:varName inClass:instVarClass).
                 ^ setOfTypes
-            ].    
-        
+            ].
+
             "/ class vars
             classVarClass := classOrNil theNonMetaclass whichClassDefinesClassVar:varName.
             classVarClass notNil ifTrue:[
                 "/ see what is currently there
                 setOfTypes add:(classVarClass classVarAt:varName asSymbol) class.
                 ^ setOfTypes
-            ].    
+            ].
             varName isUppercaseFirst ifTrue:[
                 "/ private class
                 varName knownAsSymbol ifTrue:[
@@ -5684,8 +5684,8 @@
                     cls notNil ifTrue:[
                         setOfTypes add:(cls theMetaclass).
                         ^ setOfTypes
-                    ].    
-                ].    
+                    ].
+                ].
             ].
             "/ pool vars
             poolVarClass := classOrNil theNonMetaclass whichPoolDefinesPoolVar:varName.
@@ -5693,24 +5693,25 @@
                 "/ see what is currently there
                 setOfTypes add:(poolVarClass classVarAt:varName asSymbol) class.
                 ^ setOfTypes
-            ].    
+            ].
         ].
-        
+
         varName isUppercaseFirst ifTrue:[
             sym := varName asSymbolIfInterned.
             sym notNil ifTrue:[
-                ((topNameSpace := classOrNil topNameSpace) notNil 
+                (classOrNil notNil
+                and:[ (topNameSpace := classOrNil topNameSpace) notNil
                 and:[ topNameSpace ~~ Smalltalk
-                and:[ (exprVal := topNameSpace at:sym) notNil ]]) ifTrue:[
+                and:[ (exprVal := topNameSpace at:sym) notNil ]]]) ifTrue:[
                     setOfTypes add:(exprVal class).
-                ] ifFalse:[    
+                ] ifFalse:[
                     exprVal := (Smalltalk at:sym).
                     exprVal notNil ifTrue:[
                         setOfTypes add:(exprVal class).
                     ]
-                ].    
-            ].        
-        ].    
+                ].
+            ].
+        ].
         ^ setOfTypes
     ].
 
@@ -5723,11 +5724,12 @@
     expr isMessage ifTrue:[
         self addClassesOfMessage:expr inClass:classOrNil to:setOfTypes.
         ^ setOfTypes
-    ].    
+    ].
 
     ^ setOfTypes
 
     "Modified (comment): / 19-02-2017 / 14:03:29 / cg"
+    "Modified: / 23-02-2017 / 20:52:43 / mawalch"
 !
 
 addClassesOfInstVarNamed:varName inClass:aClass to:setOfTypes