From 32684d7e9fa8f4b03d6259f6268837331ff70fa4 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Thu, 14 Nov 2024 17:11:44 +0100 Subject: [PATCH] [java-intentions] Create method from usage should skip external type annotation Fixes (finally) IDEA-360115 Create method from List.of results in long jetbrains NotNull annotation (cherry picked from commit 8e1657ad1d3af686e50c048eea1f7c439ec7365b) IJ-CR-149633 GitOrigin-RevId: 1c86e8a1b9b0d5902f095ca7393bef8e2dea66d9 --- .../com/intellij/lang/java/actions/jvmPsiUtil.kt | 3 ++- .../afterNoExternalTypeAnnos.java | 13 +++++++++++++ .../beforeNoExternalTypeAnnos.java | 9 +++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterNoExternalTypeAnnos.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforeNoExternalTypeAnnos.java diff --git a/java/java-impl/src/com/intellij/lang/java/actions/jvmPsiUtil.kt b/java/java-impl/src/com/intellij/lang/java/actions/jvmPsiUtil.kt index ce3af86fabd2..88a0bdad8db1 100644 --- a/java/java-impl/src/com/intellij/lang/java/actions/jvmPsiUtil.kt +++ b/java/java-impl/src/com/intellij/lang/java/actions/jvmPsiUtil.kt @@ -16,6 +16,7 @@ import com.intellij.psi.* import com.intellij.psi.PsiModifier.ModifierConstant import com.intellij.psi.impl.source.PsiClassImpl import com.intellij.psi.impl.source.jsp.jspJava.JspClass +import com.intellij.psi.util.PsiTypesUtil @ModifierConstant internal fun JvmModifier.toPsiModifier(): String = when (this) { @@ -66,7 +67,7 @@ internal fun extractExpectedTypes(project: Project, expectedTypes: ExpectedTypes private fun toExpectedTypeInfo(project: Project, expectedType: ExpectedType, context: PsiElement): ExpectedTypeInfo { if (expectedType is ExpectedJavaType) return expectedType.info val helper = JvmPsiConversionHelper.getInstance(project) - var psiType = helper.convertType(expectedType.theType) + var psiType = PsiTypesUtil.removeExternalAnnotations(helper.convertType(expectedType.theType)) if (expectedType is ExpectedTypeWithNullability) { psiType = when (expectedType.nullability) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterNoExternalTypeAnnos.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterNoExternalTypeAnnos.java new file mode 100644 index 000000000000..20d98485a55b --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/afterNoExternalTypeAnnos.java @@ -0,0 +1,13 @@ +// "Create method 'updatePublicWatchlist'" "true-preview" +import java.util.List; + +class X { + // IDEA-360115 + void test() { + updatePublicWatchlist("name", List.of("/CL:XNYM", "/NG:XNYM", "/6E:XCME", "/GC:XCEC", "/YM:XCBT")); + } + + private void updatePublicWatchlist(String name, List strings) { + + } +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforeNoExternalTypeAnnos.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforeNoExternalTypeAnnos.java new file mode 100644 index 000000000000..6e8d79ab5df4 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createMethodFromUsage/beforeNoExternalTypeAnnos.java @@ -0,0 +1,9 @@ +// "Create method 'updatePublicWatchlist'" "true-preview" +import java.util.List; + +class X { + // IDEA-360115 + void test() { + updatePublicWatchlist("name", List.of("/CL:XNYM", "/NG:XNYM", "/6E:XCME", "/GC:XCEC", "/YM:XCBT")); + } +} \ No newline at end of file