Skip to content

Commit

Permalink
Merge pull request #14940 from Ducasse/2023-10-09-CleanRemoveShared
Browse files Browse the repository at this point in the history
- Continue to migrate RBCondition to RBNewAbstractCondition subclasses
  • Loading branch information
jecisc committed Oct 9, 2023
2 parents 65aee81 + ea45593 commit 25b5a75
Show file tree
Hide file tree
Showing 9 changed files with 140 additions and 72 deletions.
32 changes: 32 additions & 0 deletions src/Refactoring-Core/RBClassCondition.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
Class {
#name : 'RBClassCondition',
#superclass : 'RBClassNameCondition',
#instVars : [
'aClass'
],
#category : 'Refactoring-Core-Conditions',
#package : 'Refactoring-Core',
#tag : 'Conditions'
}

{ #category : 'instance creation' }
RBClassCondition class >> class: anRBClass [
^ self new
class: anRBClass;
yourself
]

{ #category : 'accessing' }
RBClassCondition >> class: aRBClass [
aClass := aRBClass
]

{ #category : 'accessing' }
RBClassCondition >> classNamed: aString [
aClass := model classNamed: aString
]

{ #category : 'accessing' }
RBClassCondition >> model: aModel [
model := aModel
]
31 changes: 31 additions & 0 deletions src/Refactoring-Core/RBClassNameCondition.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
Class {
#name : 'RBClassNameCondition',
#superclass : 'RBNewAbstractCondition',
#instVars : [
'violators',
'model',
'className'
],
#category : 'Refactoring-Core-Conditions',
#package : 'Refactoring-Core',
#tag : 'Conditions'
}

{ #category : 'instance creation' }
RBClassNameCondition class >> classNamed: aString inModel: aModel [

^ self new
model: aModel;
classNamed: aString;
yourself
]

{ #category : 'accessing' }
RBClassNameCondition >> classNamed: aString [
className := aString
]

{ #category : 'accessing' }
RBClassNameCondition >> model: aModel [
model := aModel
]
35 changes: 35 additions & 0 deletions src/Refactoring-Core/RBDefinesSharedVariableCondition.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Class {
#name : 'RBDefinesSharedVariableCondition',
#superclass : 'RBClassCondition',
#instVars : [
'sharedVariables'
],
#category : 'Refactoring-Core-Conditions',
#package : 'Refactoring-Core',
#tag : 'Conditions'
}

{ #category : 'instance creation' }
RBDefinesSharedVariableCondition class >> class: aRBClass sharedVariables: aCollection [
^ self new class: aRBClass; sharedVariables: aCollection ; yourself
]

{ #category : 'instance creation' }
RBDefinesSharedVariableCondition class >> classNamed: aString inModel: aRBNamespace sharedVariables: aCollection [

^ (self classNamed: aString inModel: aRBNamespace)
sharedVariables: aCollection;
yourself
]

{ #category : 'accessing' }
RBDefinesSharedVariableCondition >> check [

violators := sharedVariables reject: [ :shared | aClass definesClassVariable: shared ].
^ violators isEmpty
]

{ #category : 'accessing' }
RBDefinesSharedVariableCondition >> sharedVariables: aCollection [
sharedVariables := aCollection
]
19 changes: 19 additions & 0 deletions src/Refactoring-Core/RBIsClassDefined.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Class {
#name : 'RBIsClassDefined',
#superclass : 'RBClassNameCondition',
#category : 'Refactoring-Core-Conditions',
#package : 'Refactoring-Core',
#tag : 'Conditions'
}

{ #category : 'checking' }
RBIsClassDefined >> check [

^ (model classNamed: className) isNotNil
]

{ #category : 'accessing' }
RBIsClassDefined >> violators [

^ { className }
]
17 changes: 17 additions & 0 deletions src/Refactoring-Core/RBIsNotAMetaclass.class.st
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
Class {
#name : 'RBIsNotAMetaclass',
#superclass : 'RBClassCondition',
#category : 'Refactoring-Core-Conditions',
#package : 'Refactoring-Core',
#tag : 'Conditions'
}

{ #category : 'checking' }
RBIsNotAMetaclass >> check [
^ aClass isMeta not
]

{ #category : 'checking' }
RBIsNotAMetaclass >> violators [
^ { aClass }
]
2 changes: 1 addition & 1 deletion src/Refactoring-Core/RBNewNegationCondition.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ RBNewNegationCondition >> errorString [

{ #category : 'accessing' }
RBNewNegationCondition >> violators [

"This is probably wrong because of the negation"
^ condition violators
]
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ RBRemoveSharedVariableRefactoring class >> remove: variable from: class [
{ #category : 'preconditions' }
RBRemoveSharedVariableRefactoring >> applicabilityPreconditions [

^ ( RBCondition isMetaclass: class ) not
& ( RBCondition definesClassVariable: variableName in: class )
^ ( RBIsNotAMetaclass class: class )
& ( RBDefinesSharedVariableCondition class: class sharedVariables: {variableName} )

]

Expand Down
68 changes: 0 additions & 68 deletions src/Refactoring-Core/RBRemoveSharedVariableRefactoring2.class.st

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,9 @@ RBUpFrontPreconditionCheckingCompositeRefactoring >> breakingChangePreconditions

refactorings ifEmpty: [ ^ self ].
refactorings size = 1 ifTrue: [ ^ refactorings first breakingChangePreconditions ].
^ refactorings inject: RBTrueCondition new into: [ :sum :each | sum & each applicabilityPreconditions ]
^ refactorings allButFirst
inject: refactorings first breakingChangePreconditions
into: [ :sum :each | sum & each applicabilityPreconditions ]
]

{ #category : 'preconditions' }
Expand Down

0 comments on commit 25b5a75

Please sign in to comment.