SmallSense__CriticsWindow.st
branchcvs_MAIN
changeset 968 4cd706e4706e
parent 961 69bd32d11520
child 988 75d5f2c16454
--- a/SmallSense__CriticsWindow.st	Tue May 17 00:04:51 2016 +0200
+++ b/SmallSense__CriticsWindow.st	Tue May 17 00:05:38 2016 +0200
@@ -21,11 +21,11 @@
 "{ NameSpace: SmallSense }"
 
 SimpleDialog subclass:#CriticsWindow
-	instanceVariableNames:'ruleHolder ruleRationaleAndFixesHTMLHolder rationalView fixer
-		entered codeView closeOnLeave'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'SmallSense-Core-Interface'
+        instanceVariableNames:'ruleHolder ruleRationaleAndFixesHTMLHolder rationalView fixer
+                entered codeView closeOnLeave'
+        classVariableNames:''
+        poolDictionaries:''
+        category:'SmallSense-Core-Interface'
 !
 
 !CriticsWindow class methodsFor:'documentation'!
@@ -297,16 +297,16 @@
     |oldValue newValue|
 
     ruleHolder notNil ifTrue:[
-	oldValue := ruleHolder value.
-	ruleHolder removeDependent:self.
+        oldValue := ruleHolder value.
+        ruleHolder removeDependent:self.
     ].
     ruleHolder := something.
     ruleHolder notNil ifTrue:[
-	ruleHolder addDependent:self.
+        ruleHolder addDependent:self.
     ].
     newValue := ruleHolder value.
     oldValue ~~ newValue ifTrue:[
-	self update:#value with:newValue from:ruleHolder.
+        self update:#value with:newValue from:ruleHolder.
     ].
 !
 
@@ -402,7 +402,7 @@
 
     flattenedRules 
         do:[:eachRule |
-            |fixes|
+            |fixesForMe editedMethod editedClass editedSelector|
             
             eachRule class == previousRuleClass ifFalse:[
                 collectedFixes notEmpty ifTrue:[
@@ -425,10 +425,29 @@
             "/ in the rule's changes list.
             "/ therefore, the fixer selects only those changes which affect the current method.
             self breakPoint:#cg.
-            eachRule fixes: fixer.
-            fixes := fixer fixesForRule: eachRule.
-            fixes notEmptyOrNil ifTrue:[
-                collectedFixes addAll:fixes.
+
+            "/ was 
+            "/  eachRule fixes: fixer
+            "/ changed to:
+            editedMethod := codeView editedMethod.
+            editedMethod notNil ifTrue:[
+                editedClass := editedMethod mclass.
+                editedSelector := editedMethod selector.
+                (editedClass isNil or:[editedSelector isNil]) ifTrue:[
+                    Dialog information:'Method is outdated'.
+                    ^ self
+                ].    
+            ] ifFalse:[
+                self halt.
+            ].    
+            eachRule 
+                addFixesForClass:editedClass
+                selector:editedSelector
+                to:fixer.
+
+            fixesForMe := fixer fixesForRule: eachRule.
+            fixesForMe notEmptyOrNil ifTrue:[
+                collectedFixes addAll:fixesForMe.
             ].
             previousRuleClass := eachRule class.
         ].