mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
method may be void: don't warn for implicit reads
This commit is contained in:
+4
-1
@@ -21,7 +21,9 @@ import com.intellij.codeInspection.*;
|
||||
import com.intellij.codeInspection.reference.*;
|
||||
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -55,6 +57,7 @@ public class UnusedReturnValue extends GlobalJavaBatchInspectionTool{
|
||||
|
||||
final boolean isNative = psiMethod.hasModifierProperty(PsiModifier.NATIVE);
|
||||
if (refMethod.isExternalOverride() && !isNative) return null;
|
||||
if (RefUtil.isImplicitRead(psiMethod)) return null;
|
||||
return new ProblemDescriptor[]{createProblemDescriptor(psiMethod, manager, processor, isNative)};
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -19,6 +19,7 @@ import com.intellij.codeInsight.daemon.impl.UnusedSymbolUtil;
|
||||
import com.intellij.codeInspection.BaseJavaLocalInspectionTool;
|
||||
import com.intellij.codeInspection.InspectionManager;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.reference.RefUtil;
|
||||
import com.intellij.openapi.progress.EmptyProgressIndicator;
|
||||
import com.intellij.patterns.PsiJavaPatterns;
|
||||
import com.intellij.psi.*;
|
||||
@@ -57,7 +58,8 @@ public class UnusedReturnValueLocalInspection extends BaseJavaLocalInspectionToo
|
||||
PsiType.VOID.equals(method.getReturnType()) ||
|
||||
myGlobal.IGNORE_BUILDER_PATTERN && PropertyUtil.isSimplePropertySetter(method) ||
|
||||
method.hasModifierProperty(PsiModifier.NATIVE) ||
|
||||
MethodUtils.hasSuper(method)) return null;
|
||||
MethodUtils.hasSuper(method) ||
|
||||
RefUtil.isImplicitRead(method)) return null;
|
||||
|
||||
final boolean[] atLeastOneUsageExists = new boolean[]{false};
|
||||
if (UnusedSymbolUtil.processUsages(manager.getProject(), method.getContainingFile(), method, new EmptyProgressIndicator(), null, u -> {
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
class Test {
|
||||
public String <caret>implicitRead() {
|
||||
return "";
|
||||
}
|
||||
|
||||
{
|
||||
implicitRead();
|
||||
}
|
||||
}
|
||||
+27
@@ -16,7 +16,12 @@
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.JavaTestUtil;
|
||||
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
|
||||
import com.intellij.codeInspection.unusedReturnValue.UnusedReturnValue;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.testFramework.PlatformTestUtil;
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
|
||||
/**
|
||||
@@ -27,11 +32,33 @@ public class UnusedReturnValueQuickFixTest extends LightCodeInsightFixtureTestCa
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
super.setUp();
|
||||
PlatformTestUtil.registerExtension(Extensions.getRootArea(), ImplicitUsageProvider.EP_NAME, new ImplicitUsageProvider() {
|
||||
@Override
|
||||
public boolean isImplicitUsage(PsiElement element) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isImplicitRead(PsiElement element) {
|
||||
return element instanceof PsiMethod && ((PsiMethod)element).getName().equals("implicitRead");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isImplicitWrite(PsiElement element) {
|
||||
return false;
|
||||
}
|
||||
}, getTestRootDisposable());
|
||||
|
||||
myFixture.enableInspections(new UnusedReturnValue());
|
||||
}
|
||||
|
||||
public void testSideEffects() { doTest(); }
|
||||
public void testRedundantReturn() { doTest(); }
|
||||
public void testNoChangeForImplicitRead() {
|
||||
final String name = getTestName(false);
|
||||
myFixture.configureByFile(name + ".java");
|
||||
assertEmpty(myFixture.filterAvailableIntentions(InspectionsBundle.message("inspection.unused.return.value.make.void.quickfix")));
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
final String name = getTestName(false);
|
||||
|
||||
Reference in New Issue
Block a user