--- 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.
].