Skip to content

Commit 1076d54

Browse files
committed
Remove enumConstantDiff corresponding to the eliminated refactoring tsantalis#986
1 parent 29eaccc commit 1076d54

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/main/java/gr/uom/java/xmi/diff/UMLModelDiff.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3593,9 +3593,11 @@ public List<Refactoring> getRefactorings() throws RefactoringMinerTimedOutExcept
35933593
if(!conflictingRefactorings.isEmpty()) {
35943594
Set<AbstractCodeMapping> conflictingReferences = new LinkedHashSet<>();
35953595
Set<Replacement> conflictingReplacements = new LinkedHashSet<>();
3596+
ReferenceBasedRefactoring conflictingRefactoring = null;
35963597
for(Refactoring r : conflictingRefactorings) {
35973598
if(r instanceof ReferenceBasedRefactoring) {
3598-
Set<AbstractCodeMapping> references = ((ReferenceBasedRefactoring)r).getReferences();
3599+
conflictingRefactoring = (ReferenceBasedRefactoring)r;
3600+
Set<AbstractCodeMapping> references = conflictingRefactoring.getReferences();
35993601
conflictingReferences.addAll(references);
36003602
for(AbstractCodeMapping mapping : references) {
36013603
conflictingReplacements.addAll(mapping.getReplacements());
@@ -3615,9 +3617,27 @@ public List<Refactoring> getRefactorings() throws RefactoringMinerTimedOutExcept
36153617
}
36163618
if(references.size() > conflictingReferences.size()) {
36173619
refactorings.removeAll(conflictingRefactorings);
3620+
if(conflictingRefactoring != null && conflictingRefactoring instanceof RenameAttributeRefactoring) {
3621+
UMLAttribute removed = ((RenameAttributeRefactoring)conflictingRefactoring).getOriginalAttribute();
3622+
UMLAttribute added = ((RenameAttributeRefactoring)conflictingRefactoring).getRenamedAttribute();
3623+
for(UMLEnumConstantDiff d : new ArrayList<>(diff.getEnumConstantDiffList())) {
3624+
if(d.getRemovedEnumConstant().equals(removed) && d.getAddedEnumConstant().equals(added)) {
3625+
diff.getEnumConstantDiffList().remove(d);
3626+
}
3627+
}
3628+
}
36183629
}
36193630
else if(references.size() == conflictingReferences.size() && replacements.size() < conflictingReplacements.size()) {
36203631
refactorings.removeAll(conflictingRefactorings);
3632+
if(conflictingRefactoring != null && conflictingRefactoring instanceof RenameAttributeRefactoring) {
3633+
UMLAttribute removed = ((RenameAttributeRefactoring)conflictingRefactoring).getOriginalAttribute();
3634+
UMLAttribute added = ((RenameAttributeRefactoring)conflictingRefactoring).getRenamedAttribute();
3635+
for(UMLEnumConstantDiff d : new ArrayList<>(diff.getEnumConstantDiffList())) {
3636+
if(d.getRemovedEnumConstant().equals(removed) && d.getAddedEnumConstant().equals(added)) {
3637+
diff.getEnumConstantDiffList().remove(d);
3638+
}
3639+
}
3640+
}
36213641
}
36223642
}
36233643
refactorings.addAll(enumConstantDiffRefactorings);

0 commit comments

Comments
 (0)