From 5f0630e50c3619728017185b4243e8e4075d4353 Mon Sep 17 00:00:00 2001 From: Alexandr Suhinin Date: Wed, 1 Jul 2020 10:02:27 +0300 Subject: [PATCH] IDEA-244926: dont pass implicit static fields as static parameters GitOrigin-RevId: 74272ab0afe9315626c5aae33c58f5448e5d2ce8 --- .../extractMethod/newImpl/CodeFragmentAnalyzer.kt | 2 +- .../extractMethodNew/NotPassedStaticField2.java | 7 +++++++ .../extractMethodNew/NotPassedStaticField2_after.java | 11 +++++++++++ .../java/refactoring/ExtractMethodNewTest.java | 4 ++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2.java create mode 100644 java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/newImpl/CodeFragmentAnalyzer.kt b/java/java-impl/src/com/intellij/refactoring/extractMethod/newImpl/CodeFragmentAnalyzer.kt index 574fe144548a..4678af83243d 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/newImpl/CodeFragmentAnalyzer.kt +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/newImpl/CodeFragmentAnalyzer.kt @@ -128,7 +128,7 @@ class CodeFragmentAnalyzer(val elements: List) { } } elements.forEach { it.accept(visitor) } - return usedFields.distinct().filterNot { usage -> usage.field.modifierList?.hasExplicitModifier(PsiModifier.STATIC) == true } + return usedFields.distinct().filterNot { usage -> usage.field.modifierList?.hasModifierProperty(PsiModifier.STATIC) == true } } private fun lastGotoPointFrom(instructionOffset: Int): Int { diff --git a/java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2.java b/java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2.java new file mode 100644 index 000000000000..b3a9585ab81f --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2.java @@ -0,0 +1,7 @@ +interface Test { + int implicitStatic = 42; + + default void test(){ + System.out.println(implicitStatic); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2_after.java b/java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2_after.java new file mode 100644 index 000000000000..834a93e55601 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodNew/NotPassedStaticField2_after.java @@ -0,0 +1,11 @@ +interface Test { + int implicitStatic = 42; + + default void test(){ + newMethod(); + } + + private static void newMethod() { + System.out.println(implicitStatic); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java index 9897b27d9c26..6600fc62d7c2 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/ExtractMethodNewTest.java @@ -257,6 +257,10 @@ public class ExtractMethodNewTest extends LightJavaCodeInsightTestCase { doTestPassFieldsAsParams(); } + public void testNotPassedStaticField2() throws Exception { + doTestPassFieldsAsParams(); + } + public void testExtractAssignmentExpression() throws Exception { try { doTest();