#BUGFIX by stefan
authorStefan Vogel <sv@exept.de>
Fri, 24 Feb 2017 18:13:35 +0100
changeset 5502 427cef61298f
parent 5501 905b5a2216f7
child 5503 5cbf5c6569c4
#BUGFIX by stefan class: DoWhatIMeanSupport changed: #addClassesOfExpression:inClass:to: fix DNU
DoWhatIMeanSupport.st
--- a/DoWhatIMeanSupport.st	Thu Feb 23 20:56:05 2017 +0100
+++ b/DoWhatIMeanSupport.st	Fri Feb 24 18:13:35 2017 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 2002 by eXept Software AG
 	      All Rights Reserved
@@ -2451,7 +2453,7 @@
 "/
 "/    info := best storeString.
 "/    implClass notNil ifTrue:[
-"/        info := implClass name , ' » ' , info.
+"/        info := implClass name , ' » ' , info.
 "/    ].
 "/    self information:info.
 "/].
@@ -5023,7 +5025,7 @@
 "/
 "/    info := best storeString.
 "/    implClass notNil ifTrue:[
-"/        info := implClass name , ' » ' , info.
+"/        info := implClass name , ' » ' , info.
 "/    ].
 "/    self information:info.
 
@@ -5596,19 +5598,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 +5629,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 +5686,8 @@
                     cls notNil ifTrue:[
                         setOfTypes add:(cls theMetaclass).
                         ^ setOfTypes
-                    ].
-                ].
+                    ].    
+                ].    
             ].
             "/ pool vars
             poolVarClass := classOrNil theNonMetaclass whichPoolDefinesPoolVar:varName.
@@ -5693,25 +5695,21 @@
                 "/ see what is currently there
                 setOfTypes add:(poolVarClass classVarAt:varName asSymbol) class.
                 ^ setOfTypes
-            ].
+            ].    
         ].
-
+        
         varName isUppercaseFirst ifTrue:[
             sym := varName asSymbolIfInterned.
             sym notNil ifTrue:[
-                (classOrNil notNil
-                and:[ (topNameSpace := classOrNil topNameSpace) notNil
-                and:[ topNameSpace ~~ Smalltalk
-                and:[ (exprVal := topNameSpace at:sym) notNil ]]]) ifTrue:[
+                (classOrNil isNil or:[(topNameSpace := classOrNil topNameSpace) isNil]) ifTrue:[
+                    topNameSpace := Smalltalk.
+                ].
+                exprVal := topNameSpace at:sym.
+                exprVal notNil ifTrue:[
                     setOfTypes add:(exprVal class).
-                ] ifFalse:[
-                    exprVal := (Smalltalk at:sym).
-                    exprVal notNil ifTrue:[
-                        setOfTypes add:(exprVal class).
-                    ]
                 ].
-            ].
-        ].
+            ].        
+        ].    
         ^ setOfTypes
     ].
 
@@ -5724,12 +5722,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"
+    "Modified: / 24-02-2017 / 14:41:00 / stefan"
 !
 
 addClassesOfInstVarNamed:varName inClass:aClass to:setOfTypes