From 33b75087560ff3b8fb3add698eaa3c6c99372a64 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Thu, 11 Jan 2018 13:22:48 +0100 Subject: [PATCH] same param: ignore native methods in on-the-fly mode (IDEA-184738) --- .../SameParameterValueInspectionBase.java | 12 ++++-------- .../sameParameterValue/nativeMethod/expected.xml | 3 +++ .../sameParameterValue/nativeMethod/src/Test.java | 9 +++++++++ .../codeInspection/SameParameterValueLocalTest.java | 4 ++++ 4 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 java/java-tests/testData/inspection/sameParameterValue/nativeMethod/expected.xml create mode 100644 java/java-tests/testData/inspection/sameParameterValue/nativeMethod/src/Test.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/sameParameterValue/SameParameterValueInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/sameParameterValue/SameParameterValueInspectionBase.java index f47aa2c2afb0..22b1fbe9e694 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/sameParameterValue/SameParameterValueInspectionBase.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/sameParameterValue/SameParameterValueInspectionBase.java @@ -9,7 +9,6 @@ import com.intellij.codeInspection.deadCode.UnusedDeclarationInspectionBase; import com.intellij.codeInspection.reference.*; import com.intellij.openapi.progress.EmptyProgressIndicator; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.profile.codeInspection.InspectionProjectProfileManager; import com.intellij.psi.*; import com.intellij.util.ObjectUtils; import com.intellij.util.VisibilityUtil; @@ -164,17 +163,14 @@ public class SameParameterValueInspectionBase extends GlobalJavaBatchInspectionT boolean isOnTheFly, @NotNull LocalInspectionToolSession session) { return new JavaElementVisitor() { - private final UnusedDeclarationInspectionBase myDeadCodeTool; - - { - InspectionProfile profile = InspectionProjectProfileManager.getInstance(holder.getProject()).getCurrentProfile(); - UnusedDeclarationInspectionBase deadCodeTool = (UnusedDeclarationInspectionBase)profile.getUnwrappedTool(UnusedDeclarationInspectionBase.SHORT_NAME, holder.getFile()); - myDeadCodeTool = deadCodeTool == null ? new UnusedDeclarationInspectionBase() : deadCodeTool; - } + private final UnusedDeclarationInspectionBase myDeadCodeTool = UnusedDeclarationInspectionBase.findUnusedDeclarationInspection(holder.getFile()); @Override public void visitMethod(PsiMethod method) { if (method.isConstructor() || VisibilityUtil.compare(VisibilityUtil.getVisibilityModifier(method.getModifierList()), highestModifier) < 0) return; + + if (method.hasModifierProperty(PsiModifier.NATIVE)) return; + PsiParameter[] parameters = method.getParameterList().getParameters(); if (parameters.length == 0) return; diff --git a/java/java-tests/testData/inspection/sameParameterValue/nativeMethod/expected.xml b/java/java-tests/testData/inspection/sameParameterValue/nativeMethod/expected.xml new file mode 100644 index 000000000000..ec272abeaa3a --- /dev/null +++ b/java/java-tests/testData/inspection/sameParameterValue/nativeMethod/expected.xml @@ -0,0 +1,3 @@ + + + diff --git a/java/java-tests/testData/inspection/sameParameterValue/nativeMethod/src/Test.java b/java/java-tests/testData/inspection/sameParameterValue/nativeMethod/src/Test.java new file mode 100644 index 000000000000..8707a7dd04d5 --- /dev/null +++ b/java/java-tests/testData/inspection/sameParameterValue/nativeMethod/src/Test.java @@ -0,0 +1,9 @@ + +public class Test { + static native int getNativeValue(int x); + + public static void main(String[] args) { + int value = getNativeValue(1); + System.out.println(value); + } +} diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/SameParameterValueLocalTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/SameParameterValueLocalTest.java index 850db8677e46..a0e4afcee489 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/SameParameterValueLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/SameParameterValueLocalTest.java @@ -67,4 +67,8 @@ public class SameParameterValueLocalTest extends InspectionTestCase { public void testVarargs() { doTest(getGlobalTestDir(), myTool); } + + public void testNativeMethod() { + doTest(getGlobalTestDir(), myTool); + } }