Skip to content

Commit a865f58

Browse files
committed
Fix for tsantalis#866
1 parent 40a7530 commit a865f58

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/main/java/org/refactoringminer/astDiff/matchers/vanilla/MissingIdenticalNonAmbiguousSubtrees.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class MissingIdenticalNonAmbiguousSubtrees extends GreedySubtreeMatcher i
2121
private static final int DEFAULT_MIN_PRIORITY = 1;
2222
protected int minPriority = DEFAULT_MIN_PRIORITY;
2323
protected final Predicate<Mapping> acceptance;
24+
public final int tooAmbiguousThreshold = 5;
2425

2526
public MissingIdenticalNonAmbiguousSubtrees(Predicate<Mapping> acceptance) {
2627
this.acceptance = acceptance;
@@ -91,7 +92,18 @@ public void filterMappings(MultiMappingStore multiMappings) {
9192
mappings.addMappingRecursively(src,dst);
9293
isMappingUnique = true;
9394
}
94-
95+
}
96+
if (!isMappingUnique){
97+
Set<Tree> dsts = multiMappings.getDsts(src);
98+
boolean tooAmbiguous = false;
99+
if (dsts.size() > 5) {
100+
Tree anyDst = dsts.stream().findAny().get();
101+
Set<Tree> srcs = multiMappings.getSrcs(anyDst);
102+
if (srcs.size() > tooAmbiguousThreshold) {
103+
tooAmbiguous = true;
104+
}
105+
}
106+
if (tooAmbiguous) continue;
95107
}
96108
if (!tinyTrees(src,multiMappings,minPriority) && !(ignored.contains(src) || isMappingUnique))
97109
{

0 commit comments

Comments
 (0)