19 "{ Package: 'stx:goodies/smallsense' }" |
19 "{ Package: 'stx:goodies/smallsense' }" |
20 |
20 |
21 "{ NameSpace: SmallSense }" |
21 "{ NameSpace: SmallSense }" |
22 |
22 |
23 SimpleDialog subclass:#CriticsWindow |
23 SimpleDialog subclass:#CriticsWindow |
24 instanceVariableNames:'ruleHolder ruleRationaleAndFixesHTMLHolder rationalView fixer |
24 instanceVariableNames:'ruleHolder ruleRationaleAndFixesHTMLHolder rationalView fixer |
25 entered codeView closeOnLeave' |
25 entered codeView closeOnLeave' |
26 classVariableNames:'' |
26 classVariableNames:'' |
27 poolDictionaries:'' |
27 poolDictionaries:'' |
28 category:'SmallSense-Core-Interface' |
28 category:'SmallSense-Core-Interface' |
29 ! |
29 ! |
30 |
30 |
31 !CriticsWindow class methodsFor:'documentation'! |
31 !CriticsWindow class methodsFor:'documentation'! |
32 |
32 |
33 copyright |
33 copyright |
295 "set the 'ruleHolder' value holder (automatically generated)" |
295 "set the 'ruleHolder' value holder (automatically generated)" |
296 |
296 |
297 |oldValue newValue| |
297 |oldValue newValue| |
298 |
298 |
299 ruleHolder notNil ifTrue:[ |
299 ruleHolder notNil ifTrue:[ |
300 oldValue := ruleHolder value. |
300 oldValue := ruleHolder value. |
301 ruleHolder removeDependent:self. |
301 ruleHolder removeDependent:self. |
302 ]. |
302 ]. |
303 ruleHolder := something. |
303 ruleHolder := something. |
304 ruleHolder notNil ifTrue:[ |
304 ruleHolder notNil ifTrue:[ |
305 ruleHolder addDependent:self. |
305 ruleHolder addDependent:self. |
306 ]. |
306 ]. |
307 newValue := ruleHolder value. |
307 newValue := ruleHolder value. |
308 oldValue ~~ newValue ifTrue:[ |
308 oldValue ~~ newValue ifTrue:[ |
309 self update:#value with:newValue from:ruleHolder. |
309 self update:#value with:newValue from:ruleHolder. |
310 ]. |
310 ]. |
311 ! |
311 ! |
312 |
312 |
313 ruleNameAspect |
313 ruleNameAspect |
314 |
314 |
400 previousRuleClass := nil. |
400 previousRuleClass := nil. |
401 collectedFixes := OrderedCollection new. |
401 collectedFixes := OrderedCollection new. |
402 |
402 |
403 flattenedRules |
403 flattenedRules |
404 do:[:eachRule | |
404 do:[:eachRule | |
405 |fixes| |
405 |fixesForMe editedMethod editedClass editedSelector| |
406 |
406 |
407 eachRule class == previousRuleClass ifFalse:[ |
407 eachRule class == previousRuleClass ifFalse:[ |
408 collectedFixes notEmpty ifTrue:[ |
408 collectedFixes notEmpty ifTrue:[ |
409 putCollectedFixes value. |
409 putCollectedFixes value. |
410 collectedFixes := OrderedCollection new |
410 collectedFixes := OrderedCollection new |
423 "/ BUG: because rules/transformations remember their result, |
423 "/ BUG: because rules/transformations remember their result, |
424 "/ after a run over a project, there might be changes for many many different classes |
424 "/ after a run over a project, there might be changes for many many different classes |
425 "/ in the rule's changes list. |
425 "/ in the rule's changes list. |
426 "/ therefore, the fixer selects only those changes which affect the current method. |
426 "/ therefore, the fixer selects only those changes which affect the current method. |
427 self breakPoint:#cg. |
427 self breakPoint:#cg. |
428 eachRule fixes: fixer. |
428 |
429 fixes := fixer fixesForRule: eachRule. |
429 "/ was |
430 fixes notEmptyOrNil ifTrue:[ |
430 "/ eachRule fixes: fixer |
431 collectedFixes addAll:fixes. |
431 "/ changed to: |
|
432 editedMethod := codeView editedMethod. |
|
433 editedMethod notNil ifTrue:[ |
|
434 editedClass := editedMethod mclass. |
|
435 editedSelector := editedMethod selector. |
|
436 (editedClass isNil or:[editedSelector isNil]) ifTrue:[ |
|
437 Dialog information:'Method is outdated'. |
|
438 ^ self |
|
439 ]. |
|
440 ] ifFalse:[ |
|
441 self halt. |
|
442 ]. |
|
443 eachRule |
|
444 addFixesForClass:editedClass |
|
445 selector:editedSelector |
|
446 to:fixer. |
|
447 |
|
448 fixesForMe := fixer fixesForRule: eachRule. |
|
449 fixesForMe notEmptyOrNil ifTrue:[ |
|
450 collectedFixes addAll:fixesForMe. |
432 ]. |
451 ]. |
433 previousRuleClass := eachRule class. |
452 previousRuleClass := eachRule class. |
434 ]. |
453 ]. |
435 |
454 |
436 collectedFixes notEmpty ifTrue:[ |
455 collectedFixes notEmpty ifTrue:[ |