From c1d8ba9c2b8ed9899532de85c037d7c32e3f6b39 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 5 Apr 2018 20:17:22 +0300 Subject: [PATCH] Parameter Info: Do not render nullability annotations #KT-23408 Fixed --- .../jetbrains/kotlin/load/java/JvmAnnotationNames.kt | 2 ++ .../KotlinFunctionParameterInfoHandler.kt | 11 ++++++++--- .../parameterInfo/functionCall/Nullability.extra.java | 8 ++++++++ .../parameterInfo/functionCall/Nullability.kt | 7 +++++++ .../idea/parameterInfo/AbstractParameterInfoTest.kt | 9 +++++++++ .../parameterInfo/ParameterInfoTestGenerated.java | 6 ++++++ 6 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 idea/testData/parameterInfo/functionCall/Nullability.extra.java create mode 100644 idea/testData/parameterInfo/functionCall/Nullability.kt diff --git a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.kt b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.kt index 2e2b60d8729..c644a8989b5 100644 --- a/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.kt +++ b/core/descriptors.jvm/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.kt @@ -48,6 +48,8 @@ val NOT_NULL_ANNOTATIONS = listOf( FqName("io.reactivex.annotations.NonNull") ) +val NULLABILITY_ANNOTATIONS = NULLABLE_ANNOTATIONS + JAVAX_NONNULL_ANNOTATION + NOT_NULL_ANNOTATIONS + val COMPATQUAL_NULLABLE_ANNOTATION = FqName("org.checkerframework.checker.nullness.compatqual.NullableDecl") val COMPATQUAL_NONNULL_ANNOTATION = FqName("org.checkerframework.checker.nullness.compatqual.NonNullDecl") diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt index 05b2f08beab..cb2d94f91a4 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.idea.core.resolveCandidates import org.jetbrains.kotlin.idea.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.util.ShadowedDeclarationsFilter import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.load.java.NULLABILITY_ANNOTATIONS import org.jetbrains.kotlin.load.java.sam.SamAdapterDescriptor import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.allChildren @@ -254,9 +255,13 @@ abstract class KotlinParameterInfoWithCallHandlerBase"1", "2", "3") +} + +/* +Text: (s1: String?, s2: String, s3: String!), Disabled: false, Strikeout: false, Green: true +*/ \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt index 63e58e38f91..e4277897593 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/AbstractParameterInfoTest.kt @@ -18,11 +18,13 @@ package org.jetbrains.kotlin.idea.parameterInfo import com.intellij.codeInsight.hint.ShowParameterInfoContext import com.intellij.codeInsight.hint.ShowParameterInfoHandler +import com.intellij.openapi.util.io.FileUtil import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiElement import com.intellij.psi.PsiWhiteSpace import com.intellij.testFramework.LightProjectDescriptor import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase +import com.intellij.util.PathUtil import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.test.SdkAndMockLibraryProjectDescriptor import org.jetbrains.kotlin.idea.test.PluginTestCaseBase @@ -33,6 +35,7 @@ import org.jetbrains.kotlin.psi.psiUtil.allChildren import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Assert +import java.io.File abstract class AbstractParameterInfoTest : LightCodeInsightFixtureTestCase() { override fun getProjectDescriptor(): LightProjectDescriptor { @@ -50,6 +53,12 @@ abstract class AbstractParameterInfoTest : LightCodeInsightFixtureTestCase() { } protected fun doTest(fileName: String) { + val prefix = FileUtil.getNameWithoutExtension(PathUtil.getFileName(fileName)) + val mainFile = File(FileUtil.toSystemDependentName(fileName)) + mainFile.parentFile + .listFiles { dir, name -> name.startsWith("$prefix.") } + .forEach { myFixture.configureByFile(FileUtil.toSystemIndependentName(it.path)) } + myFixture.configureByFile(fileName) val file = myFixture.file as KtFile diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java index 9db0bf4f414..00bed147003 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java @@ -231,6 +231,12 @@ public class ParameterInfoTestGenerated extends AbstractParameterInfoTest { doTest(fileName); } + @TestMetadata("Nullability.kt") + public void testNullability() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/parameterInfo/functionCall/Nullability.kt"); + doTest(fileName); + } + @TestMetadata("NullableTypeCall.kt") public void testNullableTypeCall() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/parameterInfo/functionCall/NullableTypeCall.kt");