Commit 3430c6e7 authored by Anna Kozlova's avatar Anna Kozlova
Browse files

disable parameter can be local for overridden methods (IDEA-159001)

parent b11d12a7
Branches unavailable Tags unavailable
No related merge requests found
Showing with 36 additions and 34 deletions
+36 -34
......@@ -6,6 +6,7 @@ import com.intellij.codeInspection.*;
import com.intellij.psi.*;
import com.intellij.psi.controlFlow.*;
import com.intellij.psi.search.searches.SuperMethodsSearch;
import com.siyeh.ig.psiutils.MethodUtils;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
......@@ -92,7 +93,7 @@ public class ParameterCanBeLocalInspectionBase extends AbstractBaseJavaLocalInsp
public ProblemDescriptor[] checkMethod(@NotNull PsiMethod method, @NotNull InspectionManager manager, boolean isOnTheFly) {
final Collection<PsiParameter> parameters = filterFinal(method.getParameterList().getParameters());
final PsiCodeBlock body = method.getBody();
if (body == null || parameters.isEmpty() || isOverrides(method)) {
if (body == null || parameters.isEmpty() || isOverrides(method) || MethodUtils.isOverridden(method)) {
return ProblemDescriptor.EMPTY_ARRAY;
}
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
public Temp() {
for (int i = 0; i < 10; i++) {
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
public boolean flag;
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
/**
*/
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
void test() {
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
void foo() {
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
void foo(int k) {
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
public Temp(int <caret>p) {
for (int i = 0; i < 10; i++) {
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
public boolean flag;
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
/**
* @param x
......
// "Convert to local" "false"
class A {
void foo(int <caret>i) {
i = 3;
System.out.println("i = " + i);
}
}
class B extends A {
@Override
void foo(int i) {
System.out.println("i = " + i); // becomes uncompilable
}
}
\ No newline at end of file
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
void test(int <caret>p) {
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
void foo(int <caret>x) {
......
// "Convert to local variable" "true"
// "Convert to local" "true"
class Temp {
void foo(int <caret>x, int k) {
......
......@@ -17,14 +17,9 @@
package com.intellij.java.codeInspection;
import com.intellij.JavaTestUtil;
import com.intellij.codeInsight.daemon.quickFix.ActionHint;
import com.intellij.codeInsight.daemon.quickFix.LightQuickFixParameterizedTestCase;
import com.intellij.codeInspection.InspectionManager;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.codeInspection.LocalInspectionTool;
import com.intellij.codeInspection.varScopeCanBeNarrowed.ParameterCanBeLocalInspection;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
......@@ -35,24 +30,16 @@ public class ConvertParameterToLocalVariableTest extends LightQuickFixParameteri
return JavaTestUtil.getJavaTestDataPath() + "/inspection";
}
public void test() {
doAllTests();
}
@NotNull
@Override
protected void doAction(@NotNull final ActionHint actionHint, final String testFullPath, final String testName) {
final LocalQuickFix fix = new ParameterCanBeLocalInspection.ConvertParameterToLocalQuickFix();
final int offset = getEditor().getCaretModel().getOffset();
final PsiElement psiElement = getFile().findElementAt(offset);
assert psiElement != null;
final InspectionManager manager = InspectionManager.getInstance(getProject());
final ProblemDescriptor descriptor = manager.createProblemDescriptor(psiElement, "", fix, ProblemHighlightType.LIKE_UNUSED_SYMBOL, true);
fix.applyFix(getProject(), descriptor);
final String expectedFilePath = getBasePath() + "/after" + testName;
checkResultByFile("In file :" + expectedFilePath, expectedFilePath, false);
protected LocalInspectionTool[] configureLocalInspectionTools() {
return new LocalInspectionTool[]{new ParameterCanBeLocalInspection()};
}
public void test() {
doAllTests();
}
@Override
@NonNls
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment