From 86a9f47f6cc12a0f731d6d71fd83428a3cc05ebf Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 20 Oct 2014 13:17:32 +0400 Subject: [PATCH] Fixed KT-6056 Smart completion does not filter out inaccessible declarations #KT-6056 --- .../jet/plugin/completion/CompletionSession.kt | 2 +- .../completion/smart/InaccessibleDeclarations.kt | 16 ++++++++++++++++ .../JvmSmartCompletionTestGenerated.java | 6 ++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 idea/testData/completion/smart/InaccessibleDeclarations.kt diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index 063177fa5e7..d691cb871c8 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -209,7 +209,7 @@ class SmartCompletionSession(configuration: CompletionSessionConfiguration, para val filter = result.declarationFilter if (filter != null) { TipsManager.getReferenceVariants(jetReference.expression, bindingContext!!) - .forEach { collector.addElements(filter(it)) } + .forEach { if (isVisibleDescriptor(it)) collector.addElements(filter(it)) } flushToResultSet() diff --git a/idea/testData/completion/smart/InaccessibleDeclarations.kt b/idea/testData/completion/smart/InaccessibleDeclarations.kt new file mode 100644 index 00000000000..361a425f1bf --- /dev/null +++ b/idea/testData/completion/smart/InaccessibleDeclarations.kt @@ -0,0 +1,16 @@ +class A { + public val publicVal: Int = 1 + protected val protectedVal: Int = 2 + private val privateVal: Int = 3 + + public fun publicFun(): Int = 4 + private fun privateFun() = 5 +} + +val p: Int = A().p + +// EXIST: publicVal +// ABSENT: protectedVal +// ABSENT: privateVal +// EXIST: publicFun +// ABSENT: privateFun diff --git a/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java b/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java index 3142d578259..0afd8356d02 100644 --- a/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/completion/JvmSmartCompletionTestGenerated.java @@ -342,6 +342,12 @@ public class JvmSmartCompletionTestGenerated extends AbstractJvmSmartCompletionT doTest(fileName); } + @TestMetadata("InaccessibleDeclarations.kt") + public void testInaccessibleDeclarations() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/InaccessibleDeclarations.kt"); + doTest(fileName); + } + @TestMetadata("InfixCall.kt") public void testInfixCall() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/completion/smart/InfixCall.kt");