mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
Java: Don't count overlapping fragments as duplicates (IDEA-180824)
This commit is contained in:
@@ -193,7 +193,7 @@ public class DuplicatesFinder {
|
||||
ArrayList<PsiElement> candidates = new ArrayList<>();
|
||||
for (final PsiElement element : myPattern) {
|
||||
if (sibling == null) return null;
|
||||
if (!canBeEquivalent(element, sibling)) return null;
|
||||
if (!canBeEquivalent(element, sibling) || sibling != candidate && isSelf(sibling)) return null;
|
||||
candidates.add(sibling);
|
||||
sibling = PsiTreeUtil.skipSiblingsForward(sibling, PsiWhiteSpace.class, PsiComment.class, PsiEmptyStatement.class);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
public class OverlappingDuplicate {
|
||||
private void build(String fieldName, StringBuilder builder) {
|
||||
builder.append("");
|
||||
builder.append(fieldName);
|
||||
builder.append("");
|
||||
<selection>
|
||||
builder.append("a");
|
||||
builder.append("b");
|
||||
builder.append("c");
|
||||
builder.append("d");</selection>
|
||||
builder.append("");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
public class OverlappingDuplicate {
|
||||
private void build(String fieldName, StringBuilder builder) {
|
||||
builder.append("");
|
||||
builder.append(fieldName);
|
||||
builder.append("");
|
||||
|
||||
newMethod(builder);
|
||||
builder.append("");
|
||||
}
|
||||
|
||||
private void newMethod(StringBuilder builder) {
|
||||
builder.append("a");
|
||||
builder.append("b");
|
||||
builder.append("c");
|
||||
builder.append("d");
|
||||
}
|
||||
}
|
||||
@@ -856,6 +856,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase {
|
||||
doDuplicatesTest();
|
||||
}
|
||||
|
||||
public void testOverlappingDuplicate() throws Exception {
|
||||
doDuplicatesTest();
|
||||
}
|
||||
|
||||
public void testSuggestChangeSignatureWithChangedParameterName() throws Exception {
|
||||
configureByFile(BASE_PATH + getTestName(false) + ".java");
|
||||
boolean success = performExtractMethod(true, true, getEditor(), getFile(), getProject(), false, null, false, "p");
|
||||
|
||||
Reference in New Issue
Block a user