From 941612674c860d3e2cce6638ad9bc44827457569 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Thu, 4 Jul 2024 20:44:51 +0200 Subject: [PATCH] Java: need to check if resolve is valid, otherwise there is no conflict (IJ-CR-138369) GitOrigin-RevId: 2f895cdc66ded3ec8fb4c59843c1969e95f1c2d1 --- .../ConvertToInstanceMethodProcessor.java | 4 ++-- .../NoConflictingMembers2.java | 10 ++++++++++ .../NoConflictingMembers2.java.after | 12 ++++++++++++ .../ConvertToInstance8MethodTest.java | 1 + 4 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java create mode 100644 java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java.after diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java b/java/java-impl-refactorings/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java index 575a95201e00..c5bebdb80bec 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java @@ -396,8 +396,8 @@ public final class ConvertToInstanceMethodProcessor extends BaseRefactoringProce final PsiExpression qualifier = copy.getMethodExpression().getQualifierExpression(); if (qualifier != null) { qualifier.delete(); - PsiMethod method = copy.resolveMethod(); - if (methodCall.resolveMethod() == method || method == null) { + JavaResolveResult resolveResult = copy.resolveMethodGenerics(); + if (methodCall.resolveMethod() == resolveResult.getElement() || !resolveResult.isValidResult()) { return null; } return createQualifiedThisExpression(); diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java b/java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java new file mode 100644 index 000000000000..c9b94a5155fe --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java @@ -0,0 +1,10 @@ +class Test { + int i; + void run(int i) {} +} +class Other { + static void run(Test test) { + System.out.println(test.i); + test.run(test.i); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java.after b/java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java.after new file mode 100644 index 000000000000..55b4ad57385b --- /dev/null +++ b/java/java-tests/testData/refactoring/convertToInstance8Method/NoConflictingMembers2.java.after @@ -0,0 +1,12 @@ +class Test { + int i; + + void run() { + System.out.println(i); + run(i); + } + + void run(int i) {} +} +class Other { +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java index 169607bee09f..cee76891fd13 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/convertToInstanceMethod/ConvertToInstance8MethodTest.java @@ -13,6 +13,7 @@ public class ConvertToInstance8MethodTest extends ConvertToInstanceMethodTest { public void testConflictingMembers() { doTest(0); } public void testNoConflictingMembers() { doTest(0); } + public void testNoConflictingMembers2() { doTest(0); } public void testThisInsteadOfNoQualifier() { doTest(0);