#FEATURE by cg
class: Explainer
changed: #addTypeOfExpressionNode:forAssignmentTo:to:
--- a/Explainer.st Tue May 03 13:22:02 2016 +0200
+++ b/Explainer.st Tue May 03 14:59:46 2016 +0200
@@ -14,10 +14,10 @@
"{ NameSpace: Smalltalk }"
Parser subclass:#Explainer
- instanceVariableNames:''
- classVariableNames:''
- poolDictionaries:''
- category:'System-Compiler'
+ instanceVariableNames:''
+ classVariableNames:''
+ poolDictionaries:''
+ category:'System-Compiler'
!
!Explainer class methodsFor:'documentation'!
@@ -1754,17 +1754,19 @@
expr isMessage ifTrue:[
msgSelector := expr selector.
msgReceiver := expr receiver.
-
+
msgSelector == #? ifTrue:[
self addTypeOfExpressionNode:(expr arg1) forAssignmentTo:varName to:setOfTypes.
^ self
].
"/ really really only low hanging fruit...
- ( #(+ - * /) includes:msgSelector ) ifTrue:[
+ "/ ignore / here, because of filename
+ ( #(+ - *) includes:msgSelector ) ifTrue:[
"/ ignore foo := foo OP expr
"/ ignore foo := expr OP foo
(msgReceiver isVariable and:[msgReceiver name = varName]) ifFalse:[
(expr arg1 isVariable and:[expr arg1 name = varName]) ifFalse:[
+
self rememberType:Number in:setOfTypes.
]
].