mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: Detect trivial duplicates containing 'break' and 'continue' (IDEA-182195)
This commit is contained in:
+4
-1
@@ -267,6 +267,9 @@ public class DuplicatesFinder {
|
||||
if (returnValue == null) {
|
||||
returnValue = myReturnValue;
|
||||
}
|
||||
if (returnValue instanceof GotoReturnValue) {
|
||||
return false;
|
||||
}
|
||||
if (returnValue instanceof VariableReturnValue) {
|
||||
final ReturnValue value = match.getOutputVariableValue(((VariableReturnValue)returnValue).getVariable());
|
||||
if (value != null) {
|
||||
@@ -284,7 +287,7 @@ public class DuplicatesFinder {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (AnalysisCanceledException e) {
|
||||
catch (AnalysisCanceledException ignored) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
public class InferredNotNullInReturnStatementDuplicate {
|
||||
void foo(java.util.List l) {
|
||||
for (Object o : l) {
|
||||
<selection>
|
||||
if (o == null) continue;
|
||||
Object x = bar(o);</selection>
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
|
||||
void bar(java.util.List l) {
|
||||
for (Object o : l) {
|
||||
if (o == null) continue;
|
||||
Object x = bar(o);
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
|
||||
private String bar(Object o) {return "";}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class InferredNotNullInReturnStatementDuplicate {
|
||||
void foo(java.util.List l) {
|
||||
for (Object o : l) {
|
||||
|
||||
Object x = newMethod(o);
|
||||
if (x == null) continue;
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Object newMethod(Object o) {
|
||||
if (o == null) return null;
|
||||
Object x = bar(o);
|
||||
return x;
|
||||
}
|
||||
|
||||
void bar(java.util.List l) {
|
||||
for (Object o : l) {
|
||||
Object x = newMethod(o);
|
||||
if (x == null) continue;
|
||||
System.out.println(x);
|
||||
}
|
||||
}
|
||||
|
||||
private String bar(Object o) {return "";}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import java.util.List;
|
||||
|
||||
public class NullableCheckBreakDuplicate {
|
||||
List<Pojo> things;
|
||||
|
||||
void foo() {
|
||||
while (true) {
|
||||
<selection>
|
||||
Pojo x = things.get(0);
|
||||
|
||||
if (x.it > 0) break;
|
||||
things.remove(x);</selection>
|
||||
System.out.println(x.it);
|
||||
}
|
||||
}
|
||||
|
||||
void baz() {
|
||||
while (true) {
|
||||
Pojo x = things.get(0);
|
||||
|
||||
if (x.it > 0) break;
|
||||
things.remove(x);
|
||||
System.out.println(x.it);
|
||||
}
|
||||
}
|
||||
|
||||
static class Pojo {
|
||||
double it;
|
||||
Pojo(double w) { it = w; }
|
||||
}
|
||||
}
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class NullableCheckBreakDuplicate {
|
||||
List<Pojo> things;
|
||||
|
||||
void foo() {
|
||||
while (true) {
|
||||
|
||||
Pojo x = newMethod();
|
||||
if (x == null) break;
|
||||
System.out.println(x.it);
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private Pojo newMethod() {
|
||||
Pojo x = things.get(0);
|
||||
|
||||
if (x.it > 0) return null;
|
||||
things.remove(x);
|
||||
return x;
|
||||
}
|
||||
|
||||
void baz() {
|
||||
while (true) {
|
||||
Pojo x = newMethod();
|
||||
if (x == null) break;
|
||||
System.out.println(x.it);
|
||||
}
|
||||
}
|
||||
|
||||
static class Pojo {
|
||||
double it;
|
||||
Pojo(double w) { it = w; }
|
||||
}
|
||||
}
|
||||
@@ -1161,6 +1161,15 @@ public class ExtractMethodTest extends LightCodeInsightTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testInferredNotNullInReturnStatementDuplicate() throws Exception {
|
||||
doDuplicatesTest();
|
||||
}
|
||||
|
||||
public void testNullableCheckBreakDuplicate() throws Exception {
|
||||
doDuplicatesTest();
|
||||
}
|
||||
|
||||
|
||||
private void doTestDisabledParam() throws PrepareFailedException {
|
||||
final CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject());
|
||||
settings.ELSE_ON_NEW_LINE = true;
|
||||
|
||||
Reference in New Issue
Block a user