Parameter Info: Do not render nullability annotations
#KT-23408 Fixed
This commit is contained in:
@@ -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")
|
||||
|
||||
|
||||
+8
-3
@@ -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<TArgumentList : KtElement,
|
||||
return buildString {
|
||||
if (named) append("[")
|
||||
|
||||
parameter.annotations.getAllAnnotations().forEach {
|
||||
it.annotation.fqName?.let { append("@${it.shortName().asString()} ") }
|
||||
}
|
||||
parameter
|
||||
.annotations
|
||||
.getAllAnnotations()
|
||||
.filterNot { it.annotation.fqName in NULLABILITY_ANNOTATIONS }
|
||||
.forEach {
|
||||
it.annotation.fqName?.let { append("@${it.shortName().asString()} ") }
|
||||
}
|
||||
|
||||
if (parameter.varargElementType != null) {
|
||||
append("vararg ")
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import org.jetbrains.annotations.Nullable
|
||||
import org.jetbrains.annotations.NotNull
|
||||
|
||||
class J {
|
||||
static void foo(@Nullable String s1, @NotNull String s2, String s3) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
fun test() {
|
||||
J.foo(<caret>"1", "2", "3")
|
||||
}
|
||||
|
||||
/*
|
||||
Text: (<highlight>s1: String?</highlight>, s2: String, s3: String!), Disabled: false, Strikeout: false, Green: true
|
||||
*/
|
||||
@@ -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
|
||||
|
||||
+6
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user