From 04fd4ef9de539dbe4b69b67320f3cb90fe9d4343 Mon Sep 17 00:00:00 2001 From: Alexander Podkhalyuzin Date: Fri, 6 Jul 2018 16:31:52 +0300 Subject: [PATCH] Do not stop recursive visitor with return #KT-23627 Fixed --- idea/idea-completion/testData/handlers/basic/KT23627.kt | 7 +++++++ .../testData/handlers/basic/KT23627.kt.after | 7 +++++++ .../test/handlers/BasicCompletionHandlerTestGenerated.java | 6 ++++++ .../org/jetbrains/kotlin/idea/core/ShortenReferences.kt | 7 ++++++- .../core/script/KotlinScriptDependenciesClassFinder.kt | 2 ++ 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 idea/idea-completion/testData/handlers/basic/KT23627.kt create mode 100644 idea/idea-completion/testData/handlers/basic/KT23627.kt.after diff --git a/idea/idea-completion/testData/handlers/basic/KT23627.kt b/idea/idea-completion/testData/handlers/basic/KT23627.kt new file mode 100644 index 00000000000..590b339aced --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/KT23627.kt @@ -0,0 +1,7 @@ +fun foo() = "".run { + this.apply { + printl + } +} +//ELEMENT: println +//TAIL_TEXT: "() (kotlin.io)" diff --git a/idea/idea-completion/testData/handlers/basic/KT23627.kt.after b/idea/idea-completion/testData/handlers/basic/KT23627.kt.after new file mode 100644 index 00000000000..adfc5fa6cc9 --- /dev/null +++ b/idea/idea-completion/testData/handlers/basic/KT23627.kt.after @@ -0,0 +1,7 @@ +fun foo() = "".run { + this.apply { + println() + } +} +//ELEMENT: println +//TAIL_TEXT: "() (kotlin.io)" diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java index 0edb68b6ce6..bd4f1f942f9 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/BasicCompletionHandlerTestGenerated.java @@ -114,6 +114,12 @@ public class BasicCompletionHandlerTestGenerated extends AbstractBasicCompletion runTest("idea/idea-completion/testData/handlers/basic/KT14130.kt"); } + @TestMetadata("KT23627.kt") + public void testKT23627() throws Exception { + runTest("idea/idea-completion/testData/handlers/basic/KT23627.kt"); + } + + @TestMetadata("NestedTypeArg.kt") public void testNestedTypeArg() throws Exception { runTest("idea/idea-completion/testData/handlers/basic/NestedTypeArg.kt"); diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ShortenReferences.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ShortenReferences.kt index 95b5ecf1fd1..4d4ab0cd8e4 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ShortenReferences.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/ShortenReferences.kt @@ -430,7 +430,12 @@ class ShortenReferences(val options: (KtElement) -> Options = { Options.DEFAULT override val collectElementsVisitor = object : MyVisitor(elementFilter) { override fun visitDotQualifiedExpression(expression: KtDotQualifiedExpression) { - if (expression.receiverExpression is KtThisExpression && !options.removeThis) return + if (expression.receiverExpression is KtThisExpression && !options.removeThis) { + val filterResult = elementFilter(expression) + if (filterResult == FilterResult.SKIP) return + expression.selectorExpression?.acceptChildren(this) + return + } super.visitDotQualifiedExpression(expression) } } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptDependenciesClassFinder.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptDependenciesClassFinder.kt index 0077a23d8b1..86618fa5f42 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptDependenciesClassFinder.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptDependenciesClassFinder.kt @@ -31,6 +31,8 @@ import org.jetbrains.kotlin.idea.caches.project.ScriptModuleSearchScope import org.jetbrains.kotlin.load.java.AbstractJavaClassFinder import org.jetbrains.kotlin.resolve.jvm.KotlinSafeClassFinder + + class KotlinScriptDependenciesClassFinder(project: Project, private val scriptDependenciesManager: ScriptDependenciesManager ) : NonClasspathClassFinder(project), KotlinSafeClassFinder {