From d2d87a71f30ef8115cc84c8ece92ef6165d5b08a Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Mon, 2 Dec 2024 17:22:58 +0100 Subject: [PATCH] [java-intentions] IDEA-363734 "Make Xxx impelent Yyy" quick fix inserts @NotNull (cherry picked from commit 4e9a3f94cf1aedadd0b2c4699e168ccb3be0e405) IJ-CR-150708 GitOrigin-RevId: ced9d4595e513387ebf996bf8dd0894877ef0f3e --- .../daemon/impl/quickfix/ExtendsListFix.java | 3 ++- .../quickFix/changeParameterClass/after1.java | 1 + .../quickFix/changeParameterClass/after6.java | 1 + .../changeParameterClass/afterNotNullReturn.java | 11 +++++++++++ .../afterNotNullReturnNested.java | 11 +++++++++++ .../changeParameterClass/afterReturnTypeChanged.java | 1 + .../quickFix/changeParameterClass/afterWildcard.java | 1 + .../changeParameterClass/beforeNotNullReturn.java | 11 +++++++++++ .../beforeNotNullReturnNested.java | 11 +++++++++++ .../quickFix/changeParameterClass/preview1.java | 1 + .../quickFix/changeParameterClass/preview6.java | 1 + .../previewReturnTypeChanged.java | 1 + .../changeParameterClass/previewWildcard.java | 1 + .../impl/quickfix/ChangeParameterClassTest.java | 9 ++++++--- 14 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturn.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturnNested.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturn.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturnNested.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java index 1146ac3cafd0..35bfb3fb9a03 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ExtendsListFix.java @@ -153,7 +153,8 @@ public class ExtendsListFix extends LocalQuickFixAndIntentionActionOnPsiElement else { anchor = referenceElements[position - 1]; } - PsiJavaCodeReferenceElement classReferenceElement = JavaPsiFacade.getElementFactory(project).createReferenceElementByType(myTypeToExtendFrom); + PsiJavaCodeReferenceElement classReferenceElement = JavaPsiFacade.getElementFactory(project) + .createReferenceElementByType(myTypeToExtendFrom.annotate(TypeAnnotationProvider.EMPTY)); PsiElement element; if (anchor == null) { if (referenceElements.length == 0) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after1.java index b0caae1b899a..b20d5c8fa776 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after1.java @@ -4,6 +4,7 @@ class a implements Runnable { f(this); } + @Override public void run() { } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after6.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after6.java index 812852ca2649..11a35b9453a5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after6.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/after6.java @@ -4,6 +4,7 @@ class a implements b { r.g(this); } + @Override public void g(b t) { } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturn.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturn.java new file mode 100644 index 000000000000..42726facdb3c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturn.java @@ -0,0 +1,11 @@ +// "Make 'A' implement 'J'" "true-preview" +import org.jetbrains.annotations.NotNull; + +interface J {} +interface I {} + +class A implements I, J { + public @NotNull J foo() { + return this; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturnNested.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturnNested.java new file mode 100644 index 000000000000..2ebc3c45fe36 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterNotNullReturnNested.java @@ -0,0 +1,11 @@ +// "Make 'A' implement 'J'" "true-preview" +import org.jetbrains.annotations.NotNull; + +interface J {} +interface I {} + +class A implements I, J<@NotNull String> { + public @NotNull J<@NotNull String> foo() { + return this; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterReturnTypeChanged.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterReturnTypeChanged.java index e2728e04882c..68af21e535c6 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterReturnTypeChanged.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterReturnTypeChanged.java @@ -11,6 +11,7 @@ class FooBar extends Foo { } static class Bar implements Runnable { + @Override public void run() { } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterWildcard.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterWildcard.java index 0b3f5cb93d46..3d25adb13982 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterWildcard.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/afterWildcard.java @@ -4,6 +4,7 @@ interface b { } class a implements b { + @Override public void f(Integer integer) { } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturn.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturn.java new file mode 100644 index 000000000000..13c218a49b5c --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturn.java @@ -0,0 +1,11 @@ +// "Make 'A' implement 'J'" "true-preview" +import org.jetbrains.annotations.NotNull; + +interface J {} +interface I {} + +class A implements I { + public @NotNull J foo() { + return this; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturnNested.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturnNested.java new file mode 100644 index 000000000000..2727ea20f607 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/beforeNotNullReturnNested.java @@ -0,0 +1,11 @@ +// "Make 'A' implement 'J'" "true-preview" +import org.jetbrains.annotations.NotNull; + +interface J {} +interface I {} + +class A implements I { + public @NotNull J<@NotNull String> foo() { + return this; + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview1.java index 02e4593cd6c8..79cfa5af2fe9 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview1.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview1.java @@ -4,6 +4,7 @@ class a implements Runnable { f(this); } + @Override public void run() { } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview6.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview6.java index 11a3fe110a06..1f0582cd9a0c 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview6.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/preview6.java @@ -4,6 +4,7 @@ class a implements b { r.g(this); } + @Override public void g(b t) { } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewReturnTypeChanged.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewReturnTypeChanged.java index df1221f90c05..d081fe806ff3 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewReturnTypeChanged.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewReturnTypeChanged.java @@ -11,6 +11,7 @@ class FooBar extends Foo { } static class Bar implements Runnable { + @Override public void run() { } diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewWildcard.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewWildcard.java index 45b20bfaf590..e2f008c91353 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewWildcard.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeParameterClass/previewWildcard.java @@ -4,6 +4,7 @@ interface b { } class a implements b { + @Override public void f(Integer integer) { } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeParameterClassTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeParameterClassTest.java index d2c8764f14b2..efcfebbe46e5 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeParameterClassTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/impl/quickfix/ChangeParameterClassTest.java @@ -2,7 +2,10 @@ package com.intellij.codeInsight.daemon.impl.quickfix; import com.intellij.codeInsight.daemon.quickFix.LightQuickFixParameterizedTestCase; -import com.intellij.pom.java.LanguageLevel; +import com.intellij.testFramework.LightProjectDescriptor; +import org.jetbrains.annotations.NotNull; + +import static com.intellij.testFramework.fixtures.LightJavaCodeInsightFixtureTestCase.JAVA_21; public class ChangeParameterClassTest extends LightQuickFixParameterizedTestCase { @@ -12,8 +15,8 @@ public class ChangeParameterClassTest extends LightQuickFixParameterizedTestCase } @Override - protected LanguageLevel getLanguageLevel() { - return LanguageLevel.JDK_1_5; + protected @NotNull LightProjectDescriptor getProjectDescriptor() { + return JAVA_21; } }