From 5b638f51b079f2a3a850f1174c249a3f3e9ca243 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Mon, 5 Sep 2016 17:40:28 +0300 Subject: [PATCH] Down-shift to plain search if reference in unknown language encountered --- .../kotlin/idea/search/searchUtil.kt | 19 ++++++ .../ExpressionsOfTypeProcessor.kt | 60 ++++++++++++------- .../handlers/KotlinFindMemberUsagesHandler.kt | 20 +------ .../kotlin/conventions/components/SAM.log | 7 +-- .../components/callableReferences.log | 10 ++-- .../componentFunForGenericType1.log | 2 +- .../componentFunForGenericType2.log | 2 +- .../conventions/components/dataClass.log | 18 +++--- .../components/dataClassComponentByRef.log | 2 +- .../components/dataClassInsideDataClass.log | 12 ++-- .../components/extensionComponentFun.log | 6 +- .../kotlin/conventions/components/for.log | 2 +- .../kotlin/conventions/components/isAndAs.log | 2 +- .../kotlin/conventions/components/lambdas.log | 24 ++++---- .../components/mayTypeAffectAncestors.log | 10 ++-- .../components/memberComponentFun.log | 6 +- .../conventions/components/operators.log | 8 +-- .../components/recursiveDataClass1.log | 4 +- .../components/recursiveDataClass2.log | 10 ++-- .../findUsages/kotlin/conventions/get.log | 2 +- .../findUsages/kotlin/conventions/inc.log | 4 +- .../findUsages/kotlin/conventions/invoke.log | 2 +- .../findUsages/kotlin/conventions/plus.log | 28 ++++----- .../kotlin/conventions/plusAssign.log | 4 +- .../findUsages/kotlin/conventions/set.log | 4 +- .../kotlin/conventions/unaryMinus.log | 2 +- 26 files changed, 143 insertions(+), 127 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/searchUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/searchUtil.kt index 0142f17d822..d4dd8ae6480 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/searchUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/searchUtil.kt @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.idea.search +import com.intellij.openapi.fileTypes.FileType +import com.intellij.openapi.fileTypes.FileTypeRegistry import com.intellij.openapi.project.Project import com.intellij.psi.PsiElement import com.intellij.psi.PsiFile @@ -65,6 +67,23 @@ fun SearchScope.restrictToKotlinSources(): SearchScope { } } +fun SearchScope.excludeKotlinSources(): SearchScope = excludeFileTypes(KotlinFileType.INSTANCE) + +fun SearchScope.excludeFileTypes(vararg fileTypes: FileType): SearchScope { + if (this is GlobalSearchScope) { + val includedFileTypes = FileTypeRegistry.getInstance().registeredFileTypes.filter { it !in fileTypes }.toTypedArray() + return GlobalSearchScope.getScopeRestrictedByFileTypes(this, *includedFileTypes) + } + else { + this as LocalSearchScope + val filteredElements = scope.filter { it.containingFile.fileType !in fileTypes } + return if (filteredElements.isNotEmpty()) + LocalSearchScope(filteredElements.toTypedArray()) + else + GlobalSearchScope.EMPTY_SCOPE + } +} + // Copied from SearchParameters.getEffectiveSearchScope() fun ReferencesSearch.SearchParameters.effectiveSearchScope(element: PsiElement): SearchScope { if (element == elementToSearch) return effectiveSearchScope diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt index 5c4d2ec2397..5696ddf0c1f 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt @@ -17,8 +17,8 @@ package org.jetbrains.kotlin.idea.search.usagesSearch import com.intellij.ide.highlighter.JavaFileType +import com.intellij.ide.highlighter.XmlFileType import com.intellij.lang.java.JavaLanguage -import com.intellij.lang.xml.XMLLanguage import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.project.Project import com.intellij.openapi.roots.ProjectRootManager @@ -36,12 +36,14 @@ import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.diagnostics.DiagnosticUtils +import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference +import org.jetbrains.kotlin.idea.search.excludeFileTypes import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters import org.jetbrains.kotlin.idea.search.restrictToKotlinSources @@ -179,7 +181,8 @@ class ExpressionsOfTypeProcessor( data class ProcessClassUsagesTask(val classToSearch: PsiClass) : Task { override fun perform() { testLog?.add("Searched references to ${logPresentation(classToSearch)}") - searchReferences(classToSearch, GlobalSearchScope.allScope(project)) { reference -> + val scope = GlobalSearchScope.allScope(project).excludeFileTypes(XmlFileType.INSTANCE) // ignore usages in XML - they don't affect us + searchReferences(classToSearch, scope) { reference -> if (processClassUsage(reference)) return@searchReferences true if (mode != Mode.ALWAYS_SMART) { @@ -200,21 +203,26 @@ class ExpressionsOfTypeProcessor( addTask(ProcessClassUsagesTask(classToSearch)) } - private fun addCallableDeclarationToProcess(declaration: PsiElement, processMethod: (PsiReference) -> Unit) { + private fun addCallableDeclarationToProcess(declaration: PsiElement, processMethod: (PsiReference) -> Boolean) { if (declaration.isOperatorExpensiveToSearch()) { // cancel all tasks and use plain search downShiftToPlainSearch() return } - data class ProcessCallableUsagesTask(val declaration: PsiElement, val processMethod: (PsiReference) -> Unit) : Task { + data class ProcessCallableUsagesTask(val declaration: PsiElement, val processMethod: (PsiReference) -> Boolean) : Task { override fun perform() { // we don't need to search usages of declarations in Java because Java doesn't have implicitly typed declarations so such usages cannot affect Kotlin code - //TODO: what about Scala and other JVM-languages? - val scope = GlobalSearchScope.projectScope(project).restrictToKotlinSources() - testLog?.add("Searched references to ${logPresentation(declaration)} in Kotlin files") + val scope = GlobalSearchScope.projectScope(project).excludeFileTypes(JavaFileType.INSTANCE, XmlFileType.INSTANCE) + testLog?.add("Searched references to ${logPresentation(declaration)} in non-Java files") val searchParameters = KotlinReferencesSearchParameters( declaration, scope, kotlinOptions = KotlinReferencesSearchOptions(searchNamedArguments = false)) - searchReferences(searchParameters) { reference -> processMethod(reference); true } + searchReferences(searchParameters) { reference -> + val processed = processMethod(reference) + if (!processed) { // we don't know how to handle this reference and down-shift to plain search + downShiftToPlainSearch() + } + processed + } } } addTask(ProcessCallableUsagesTask(declaration, processMethod)) @@ -226,30 +234,42 @@ class ExpressionsOfTypeProcessor( /** * Process reference to declaration whose type is our class (or our class used anywhere inside that type) */ - private fun processReferenceToCallableOfOurType(reference: PsiReference) { - if (reference is KtDestructuringDeclarationReference) { - // declaration usage in form of destructuring declaration entry - addCallableDeclarationToProcess(reference.element, HAS_OUR_TYPE) - } - else { - (reference.element as? KtReferenceExpression)?.let { processSuspiciousExpression(it) } + private fun processReferenceToCallableOfOurType(reference: PsiReference): Boolean { + when (reference.element.language) { + KotlinLanguage.INSTANCE -> { + if (reference is KtDestructuringDeclarationReference) { + // declaration usage in form of destructuring declaration entry + addCallableDeclarationToProcess(reference.element, HAS_OUR_TYPE) + } + else { + (reference.element as? KtReferenceExpression)?.let { processSuspiciousExpression(it) } + } + return true + } + + else -> return false // reference in unknown language - we don't know how to handle it } } /** * Process reference to declaration which has parameter of functional type with our class used inside */ - private fun processLambdasByCallableReference(reference: PsiReference) { + private fun processLambdasByCallableReference(reference: PsiReference): Boolean { (reference.element as? KtReferenceExpression)?.let { processLambdasForCallableReference(it) } + return true } private fun addSamInterfaceToProcess(psiClass: PsiClass) { data class ProcessSamInterfaceTask(val psiClass: PsiClass) : Task { override fun perform() { - //TODO: what about other JVM languages? - val scope = GlobalSearchScope.getScopeRestrictedByFileTypes(GlobalSearchScope.projectScope(project), JavaFileType.INSTANCE) - testLog?.add("Searched references to ${logPresentation(psiClass)} in java files") + val scope = GlobalSearchScope.projectScope(project).excludeFileTypes(KotlinFileType.INSTANCE, XmlFileType.INSTANCE) + testLog?.add("Searched references to ${logPresentation(psiClass)} in non-Kotlin files") searchReferences(psiClass, scope) { reference -> + if (reference.element.language != JavaFileType.INSTANCE) { // reference in some JVM language can be method parameter (but we don't know) + downShiftToPlainSearch() + return@searchReferences false + } + // check if the reference is method parameter type val parameter = ((reference as? PsiJavaCodeReferenceElement)?.parent as? PsiTypeElement)?.parent as? PsiParameter val method = parameter?.declarationScope as? PsiMethod @@ -273,8 +293,6 @@ class ExpressionsOfTypeProcessor( JavaLanguage.INSTANCE -> processClassUsageInJava(element) - XMLLanguage.INSTANCE -> true // ignore usages in XML - they don't affect us - else -> false // we don't know anything about usages in other languages - so we downgrade to slow algorithm in this case } } diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt index ae6d44cbf93..a8c38cb8441 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/KotlinFindMemberUsagesHandler.kt @@ -22,11 +22,8 @@ import com.intellij.find.findUsages.AbstractFindUsagesDialog import com.intellij.find.findUsages.FindUsagesOptions import com.intellij.find.impl.FindManagerImpl import com.intellij.openapi.actionSystem.DataContext -import com.intellij.openapi.fileTypes.FileTypeManager import com.intellij.psi.PsiElement import com.intellij.psi.PsiReference -import com.intellij.psi.search.GlobalSearchScope -import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.SearchScope import com.intellij.psi.search.searches.MethodReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch @@ -35,7 +32,6 @@ import com.intellij.util.* import org.jetbrains.kotlin.asJava.toLightMethods import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ParameterDescriptor -import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.findUsages.KotlinCallableFindUsagesOptions import org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory @@ -45,6 +41,7 @@ import org.jetbrains.kotlin.idea.findUsages.dialogs.KotlinFindFunctionUsagesDial import org.jetbrains.kotlin.idea.findUsages.dialogs.KotlinFindPropertyUsagesDialog import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.searchOverriders +import org.jetbrains.kotlin.idea.search.excludeKotlinSources import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReadWriteAccessDetector import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters @@ -175,21 +172,6 @@ abstract class KotlinFindMemberUsagesHandler return true } - - private fun SearchScope.excludeKotlinSources(): SearchScope { - if (this is GlobalSearchScope) { - val fileTypes = FileTypeManager.getInstance().registeredFileTypes.filter { it != KotlinFileType.INSTANCE }.toTypedArray() - return GlobalSearchScope.getScopeRestrictedByFileTypes(this, *fileTypes) - } - else { - this as LocalSearchScope - val filteredElements = scope.filter { it.containingFile !is KtFile } - return if (filteredElements.isNotEmpty()) - LocalSearchScope(filteredElements.toTypedArray()) - else - GlobalSearchScope.EMPTY_SCOPE - } - } } protected abstract fun createKotlinReferencesSearchOptions(options: FindUsagesOptions): KotlinReferencesSearchOptions diff --git a/idea/testData/findUsages/kotlin/conventions/components/SAM.log b/idea/testData/findUsages/kotlin/conventions/components/SAM.log index 30b37a8c15d..94471e9546e 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/SAM.log +++ b/idea/testData/findUsages/kotlin/conventions/components/SAM.log @@ -1,7 +1,4 @@ Resolved java class to descriptor: JavaSAM -Searched references to JavaClass.takeSAM(JavaSAM sam) in Kotlin files -Searched references to JavaSAM in java files +Searched references to JavaSAM in non-Kotlin files Searched references to pack.A -Used plain search of parameter a of A(val a: Int, val b: String) in LocalSearchScope: - CLASS:A - { val (x, y) = it } +Used plain search of parameter a of A(val a: Int, val b: String) in whole search scope \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/conventions/components/callableReferences.log b/idea/testData/findUsages/kotlin/conventions/components/callableReferences.log index e04ed79f9fa..e6e9261d787 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/callableReferences.log +++ b/idea/testData/findUsages/kotlin/conventions/components/callableReferences.log @@ -15,10 +15,10 @@ Resolved (a2, b2) Resolved (a3, b3) Resolved (a4, b4) Searched references to A -Searched references to X.f2() in Kotlin files -Searched references to constructor in Kotlin files -Searched references to f1() in Kotlin files -Searched references to fun2 in Kotlin files -Searched references to fun3 in Kotlin files +Searched references to X.f2() in non-Java files +Searched references to constructor in non-Java files +Searched references to f1() in non-Java files +Searched references to fun2 in non-Java files +Searched references to fun3 in non-Java files Used plain search of parameter a of A(val a: Int, val b: Int) in LocalSearchScope: CLASS:A diff --git a/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType1.log b/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType1.log index 86156c9aa45..422271329e2 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType1.log +++ b/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType1.log @@ -3,7 +3,7 @@ Checked type of x Checked type of y Resolved (x, y) Searched references to X -Searched references to f() in Kotlin files +Searched references to f() in non-Java files Used plain search of component1() in LocalSearchScope: CLASS:X FUN:component1 diff --git a/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType2.log b/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType2.log index c23845e6668..fefaa8808e4 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType2.log +++ b/idea/testData/findUsages/kotlin/conventions/components/componentFunForGenericType2.log @@ -4,7 +4,7 @@ Checked type of x1 Checked type of y1 Resolved (x1, y1) Searched references to X -Searched references to f() in Kotlin files +Searched references to f() in non-Java files Used plain search of component1() in LocalSearchScope: CLASS:X FUN:component1 diff --git a/idea/testData/findUsages/kotlin/conventions/components/dataClass.log b/idea/testData/findUsages/kotlin/conventions/components/dataClass.log index 406d82fdc57..55d7938758f 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/dataClass.log +++ b/idea/testData/findUsages/kotlin/conventions/components/dataClass.log @@ -36,21 +36,21 @@ Resolved (x3, y3) Resolved (x3, y3, z3) Resolved (x4, y4, z4) Resolved (x5, y5, z5) -Searched references to JavaClass.getA() in Kotlin files +Searched references to JavaClass.getA() in non-Java files Searched references to JavaClass2 Searched references to JavaClass3 Searched references to JavaClass4.NestedPrivate Searched references to JavaClass4.NestedPublic -Searched references to JavaClass4.getNested() in Kotlin files -Searched references to a in Kotlin files -Searched references to f() in Kotlin files -Searched references to g() in Kotlin files -Searched references to h() in Kotlin files -Searched references to listOfA() in Kotlin files +Searched references to JavaClass4.getNested() in non-Java files +Searched references to a in non-Java files +Searched references to f() in non-Java files +Searched references to g() in non-Java files +Searched references to h() in non-Java files +Searched references to listOfA() in non-Java files Searched references to pack.A Searched references to pack.X -Searched references to parameter p1 of test2(p1: JavaClass2, p2: JavaClass3) in Kotlin files -Searched references to parameter p2 of test2(p1: JavaClass2, p2: JavaClass3) in Kotlin files +Searched references to parameter p1 of test2(p1: JavaClass2, p2: JavaClass3) in non-Java files +Searched references to parameter p2 of test2(p1: JavaClass2, p2: JavaClass3) in non-Java files Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope: CLASS:A CLASS:X diff --git a/idea/testData/findUsages/kotlin/conventions/components/dataClassComponentByRef.log b/idea/testData/findUsages/kotlin/conventions/components/dataClassComponentByRef.log index 50fb5bab4c7..ed12c2c83f4 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/dataClassComponentByRef.log +++ b/idea/testData/findUsages/kotlin/conventions/components/dataClassComponentByRef.log @@ -4,6 +4,6 @@ Checked type of y Checked type of z Resolved (x, y, z) Searched references to A -Searched references to a in Kotlin files +Searched references to a in non-Java files Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope: CLASS:A \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/conventions/components/dataClassInsideDataClass.log b/idea/testData/findUsages/kotlin/conventions/components/dataClassInsideDataClass.log index 7f013a696fb..519fb90bdc5 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/dataClassInsideDataClass.log +++ b/idea/testData/findUsages/kotlin/conventions/components/dataClassInsideDataClass.log @@ -15,12 +15,12 @@ Resolved (x1, y1, z1) Searched references to A Searched references to B Searched references to C -Searched references to C.component1() in Kotlin files -Searched references to a in Kotlin files -Searched references to a1 in Kotlin files -Searched references to parameter a of B(val a: A, val n: Int) in Kotlin files -Searched references to parameter b of f(b: B, c: C) in Kotlin files -Searched references to parameter c of f(b: B, c: C) in Kotlin files +Searched references to C.component1() in non-Java files +Searched references to a in non-Java files +Searched references to a1 in non-Java files +Searched references to parameter a of B(val a: A, val n: Int) in non-Java files +Searched references to parameter b of f(b: B, c: C) in non-Java files +Searched references to parameter c of f(b: B, c: C) in non-Java files Used plain search of C.component1() in LocalSearchScope: CLASS:C Used plain search of parameter a of B(val a: A, val n: Int) in LocalSearchScope: diff --git a/idea/testData/findUsages/kotlin/conventions/components/extensionComponentFun.log b/idea/testData/findUsages/kotlin/conventions/components/extensionComponentFun.log index 78ffc0fecbf..08f4e4a3936 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/extensionComponentFun.log +++ b/idea/testData/findUsages/kotlin/conventions/components/extensionComponentFun.log @@ -12,9 +12,9 @@ Searched references to X Searched references to Y Searched references to Z1 Searched references to Z2 -Searched references to f() in Kotlin files -Searched references to parameter z1 of g(z1: Z1, z2: Z2) in Kotlin files -Searched references to parameter z2 of g(z1: Z1, z2: Z2) in Kotlin files +Searched references to f() in non-Java files +Searched references to parameter z1 of g(z1: Z1, z2: Z2) in non-Java files +Searched references to parameter z2 of g(z1: Z1, z2: Z2) in non-Java files Used plain search of component2() in LocalSearchScope: CLASS:X CLASS:Y diff --git a/idea/testData/findUsages/kotlin/conventions/components/for.log b/idea/testData/findUsages/kotlin/conventions/components/for.log index 79743842db3..e69848c47ad 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/for.log +++ b/idea/testData/findUsages/kotlin/conventions/components/for.log @@ -7,6 +7,6 @@ Checked type of z Resolved (x, y) Resolved (x, y, z) Searched references to A -Searched references to parameter a of FOR in Kotlin files +Searched references to parameter a of FOR in non-Java files Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope: CLASS:A \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/conventions/components/isAndAs.log b/idea/testData/findUsages/kotlin/conventions/components/isAndAs.log index ad462ffb706..461cb40e3e0 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/isAndAs.log +++ b/idea/testData/findUsages/kotlin/conventions/components/isAndAs.log @@ -6,7 +6,7 @@ Checked type of y1 Resolved (x, y) Resolved (x1, y1) Searched references to A -Searched references to list in Kotlin files +Searched references to list in non-Java files Used plain search of parameter x of A(val x: Int, val y: Int) in LocalSearchScope: CLASS:A FUN:x diff --git a/idea/testData/findUsages/kotlin/conventions/components/lambdas.log b/idea/testData/findUsages/kotlin/conventions/components/lambdas.log index 1b55c6d9a7d..668622562b2 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/lambdas.log +++ b/idea/testData/findUsages/kotlin/conventions/components/lambdas.log @@ -1,16 +1,16 @@ Searched references to A -Searched references to parameter p of foo(p: A) in Kotlin files -Searched references to parameter p of takeExtFun(p: A.() -> Unit) in Kotlin files -Searched references to parameter p of takeFun1(p: (A) -> Unit) in Kotlin files -Searched references to parameter p of takeFun2(p: ((A?, Int) -> Unit)?) in Kotlin files -Searched references to parameter p of takeFun3(p: (List) -> Unit) in Kotlin files -Searched references to parameter p of takeFuns(p: MutableList<(A) -> Unit>) in Kotlin files -Searched references to takeExtFun(p: A.() -> Unit) in Kotlin files -Searched references to takeFun1(p: (A) -> Unit) in Kotlin files -Searched references to takeFun2(p: ((A?, Int) -> Unit)?) in Kotlin files -Searched references to takeFun3(p: (List) -> Unit) in Kotlin files -Searched references to takeFuns(p: MutableList<(A) -> Unit>) in Kotlin files -Searched references to v in Kotlin files +Searched references to parameter p of foo(p: A) in non-Java files +Searched references to parameter p of takeExtFun(p: A.() -> Unit) in non-Java files +Searched references to parameter p of takeFun1(p: (A) -> Unit) in non-Java files +Searched references to parameter p of takeFun2(p: ((A?, Int) -> Unit)?) in non-Java files +Searched references to parameter p of takeFun3(p: (List) -> Unit) in non-Java files +Searched references to parameter p of takeFuns(p: MutableList<(A) -> Unit>) in non-Java files +Searched references to takeExtFun(p: A.() -> Unit) in non-Java files +Searched references to takeFun1(p: (A) -> Unit) in non-Java files +Searched references to takeFun2(p: ((A?, Int) -> Unit)?) in non-Java files +Searched references to takeFun3(p: (List) -> Unit) in non-Java files +Searched references to takeFuns(p: MutableList<(A) -> Unit>) in non-Java files +Searched references to v in non-Java files Used plain search of parameter a of A(val a: Int, val b: Int) in LocalSearchScope: CLASS:A { a, n -> val (x, y) = a!! } diff --git a/idea/testData/findUsages/kotlin/conventions/components/mayTypeAffectAncestors.log b/idea/testData/findUsages/kotlin/conventions/components/mayTypeAffectAncestors.log index f51c0f1d9fe..9fb54f4de13 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/mayTypeAffectAncestors.log +++ b/idea/testData/findUsages/kotlin/conventions/components/mayTypeAffectAncestors.log @@ -3,11 +3,11 @@ Checked type of y1 Checked type of y1(a: A) Resolved (x1, y1) Searched references to A -Searched references to parameter a of condition(a: A) in Kotlin files -Searched references to parameter a of x(a: A, b: Boolean, list: List) in Kotlin files -Searched references to parameter a of y1(a: A) in Kotlin files -Searched references to parameter a of y2(a: A) in Kotlin files -Searched references to parameter a of y3(a: A) in Kotlin files +Searched references to parameter a of condition(a: A) in non-Java files +Searched references to parameter a of x(a: A, b: Boolean, list: List) in non-Java files +Searched references to parameter a of y1(a: A) in non-Java files +Searched references to parameter a of y2(a: A) in non-Java files +Searched references to parameter a of y3(a: A) in non-Java files Used plain search of parameter n of A(val n: Int, val s: String) in LocalSearchScope: CLASS:A { val (x2, y2) = this } \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/conventions/components/memberComponentFun.log b/idea/testData/findUsages/kotlin/conventions/components/memberComponentFun.log index 961875f0a7e..ec8c76bfd2b 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/memberComponentFun.log +++ b/idea/testData/findUsages/kotlin/conventions/components/memberComponentFun.log @@ -13,9 +13,9 @@ Resolved (x2, y2) Searched references to X Searched references to Y Searched references to Z -Searched references to f() in Kotlin files -Searched references to g() in Kotlin files -Searched references to h() in Kotlin files +Searched references to f() in non-Java files +Searched references to g() in non-Java files +Searched references to h() in non-Java files Used plain search of X.component1() in LocalSearchScope: CLASS:X CLASS:Y diff --git a/idea/testData/findUsages/kotlin/conventions/components/operators.log b/idea/testData/findUsages/kotlin/conventions/components/operators.log index 959003a94da..1c9e42f39b1 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/operators.log +++ b/idea/testData/findUsages/kotlin/conventions/components/operators.log @@ -8,10 +8,10 @@ Resolved (x, y) Resolved b1 + b2 Searched references to A Searched references to B -Searched references to parameter b1 of f(b1: B, b2: B) in Kotlin files -Searched references to parameter b2 of f(b1: B, b2: B) in Kotlin files -Searched references to parameter other of plus(other: B) in Kotlin files -Searched references to plus(other: B) in Kotlin files +Searched references to parameter b1 of f(b1: B, b2: B) in non-Java files +Searched references to parameter b2 of f(b1: B, b2: B) in non-Java files +Searched references to parameter other of plus(other: B) in non-Java files +Searched references to plus(other: B) in non-Java files Used plain search of parameter x of A(val x: Int, val y: Int) in LocalSearchScope: CLASS:A Used plain search of plus(other: B) in LocalSearchScope: diff --git a/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass1.log b/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass1.log index 39d8933db13..0d219885289 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass1.log +++ b/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass1.log @@ -8,7 +8,7 @@ Resolved (a1, n1) Resolved (a2, n2) Resolved (a2, n2) Searched references to A -Searched references to parameter a of A(val a: A?, val n: Int) in Kotlin files -Searched references to parameter a of f(a: A) in Kotlin files +Searched references to parameter a of A(val a: A?, val n: Int) in non-Java files +Searched references to parameter a of f(a: A) in non-Java files Used plain search of parameter a of A(val a: A?, val n: Int) in LocalSearchScope: CLASS:A diff --git a/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass2.log b/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass2.log index 2f8c2e1685b..2c2f3dc1544 100644 --- a/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass2.log +++ b/idea/testData/findUsages/kotlin/conventions/components/recursiveDataClass2.log @@ -6,11 +6,11 @@ Resolved (a1, s) Resolved (b, n) Searched references to A Searched references to B -Searched references to a1 in Kotlin files -Searched references to b in Kotlin files -Searched references to parameter a of B(val a: A?, val s: String) in Kotlin files -Searched references to parameter a of f(a: A) in Kotlin files -Searched references to parameter b of A(val b: B, val n: Int) in Kotlin files +Searched references to a1 in non-Java files +Searched references to b in non-Java files +Searched references to parameter a of B(val a: A?, val s: String) in non-Java files +Searched references to parameter a of f(a: A) in non-Java files +Searched references to parameter b of A(val b: B, val n: Int) in non-Java files Used plain search of parameter a of B(val a: A?, val s: String) in LocalSearchScope: CLASS:B Used plain search of parameter b of A(val b: B, val n: Int) in LocalSearchScope: diff --git a/idea/testData/findUsages/kotlin/conventions/get.log b/idea/testData/findUsages/kotlin/conventions/get.log index c57d4c1e152..cf8b295bf37 100644 --- a/idea/testData/findUsages/kotlin/conventions/get.log +++ b/idea/testData/findUsages/kotlin/conventions/get.log @@ -1,6 +1,6 @@ Checked type of b Resolved B(1)[2] Searched references to B -Searched references to b in Kotlin files +Searched references to b in non-Java files Used plain search of B.get(i: Int) in LocalSearchScope: CLASS:B diff --git a/idea/testData/findUsages/kotlin/conventions/inc.log b/idea/testData/findUsages/kotlin/conventions/inc.log index 37cccde3289..2001b877ab9 100644 --- a/idea/testData/findUsages/kotlin/conventions/inc.log +++ b/idea/testData/findUsages/kotlin/conventions/inc.log @@ -2,7 +2,7 @@ Checked type of a Resolved ++a Resolved a++ Searched references to A -Searched references to A.inc() in Kotlin files -Searched references to a in Kotlin files +Searched references to A.inc() in non-Java files +Searched references to a in non-Java files Used plain search of A.inc() in LocalSearchScope: CLASS:A diff --git a/idea/testData/findUsages/kotlin/conventions/invoke.log b/idea/testData/findUsages/kotlin/conventions/invoke.log index e5e73090a9c..39494f034be 100644 --- a/idea/testData/findUsages/kotlin/conventions/invoke.log +++ b/idea/testData/findUsages/kotlin/conventions/invoke.log @@ -3,6 +3,6 @@ Resolved f(1) Resolved f(2) Resolved f(2)(2) Searched references to B -Searched references to f() in Kotlin files +Searched references to f() in non-Java files Used plain search of B.invoke(i: Int) in LocalSearchScope: CLASS:B \ No newline at end of file diff --git a/idea/testData/findUsages/kotlin/conventions/plus.log b/idea/testData/findUsages/kotlin/conventions/plus.log index debea08c340..18a42bf45c5 100644 --- a/idea/testData/findUsages/kotlin/conventions/plus.log +++ b/idea/testData/findUsages/kotlin/conventions/plus.log @@ -19,20 +19,20 @@ Resolved a1 + 1 Resolved a1 + 1 Searched references to A Searched references to A -Searched references to A.plus(a: A) in Kotlin files -Searched references to A.plus(a: A) in Kotlin files -Searched references to A.plus(m: Int) in Kotlin files -Searched references to A.plus(m: Int) in Kotlin files -Searched references to a in Kotlin files -Searched references to a in Kotlin files -Searched references to a1 in Kotlin files -Searched references to a1 in Kotlin files -Searched references to a2 in Kotlin files -Searched references to a2 in Kotlin files -Searched references to parameter a of A.plus(a: A) in Kotlin files -Searched references to parameter a of A.plus(a: A) in Kotlin files -Searched references to parameter array of test(array: Array) in Kotlin files -Searched references to parameter array of test(array: Array) in Kotlin files +Searched references to A.plus(a: A) in non-Java files +Searched references to A.plus(a: A) in non-Java files +Searched references to A.plus(m: Int) in non-Java files +Searched references to A.plus(m: Int) in non-Java files +Searched references to a in non-Java files +Searched references to a in non-Java files +Searched references to a1 in non-Java files +Searched references to a1 in non-Java files +Searched references to a2 in non-Java files +Searched references to a2 in non-Java files +Searched references to parameter a of A.plus(a: A) in non-Java files +Searched references to parameter a of A.plus(a: A) in non-Java files +Searched references to parameter array of test(array: Array) in non-Java files +Searched references to parameter array of test(array: Array) in non-Java files Used plain search of A.plus(a: A) in LocalSearchScope: CLASS:A Used plain search of A.plus(m: Int) in LocalSearchScope: diff --git a/idea/testData/findUsages/kotlin/conventions/plusAssign.log b/idea/testData/findUsages/kotlin/conventions/plusAssign.log index 54783b8a46b..2cc368955ff 100644 --- a/idea/testData/findUsages/kotlin/conventions/plusAssign.log +++ b/idea/testData/findUsages/kotlin/conventions/plusAssign.log @@ -2,7 +2,7 @@ Checked type of a Resolved a += 1 Resolved a += A(1) Searched references to A -Searched references to a in Kotlin files -Searched references to parameter a of A.plusAssign(a: A) in Kotlin files +Searched references to a in non-Java files +Searched references to parameter a of A.plusAssign(a: A) in non-Java files Used plain search of A.plusAssign(m: Int) in LocalSearchScope: CLASS:A diff --git a/idea/testData/findUsages/kotlin/conventions/set.log b/idea/testData/findUsages/kotlin/conventions/set.log index 45c22fca335..c2556a241e8 100644 --- a/idea/testData/findUsages/kotlin/conventions/set.log +++ b/idea/testData/findUsages/kotlin/conventions/set.log @@ -2,7 +2,7 @@ Checked type of a Resolved a[1] Resolved a[2] Searched references to B -Searched references to a in Kotlin files -Searched references to parameter a of B.set(i: Int, a: B) in Kotlin files +Searched references to a in non-Java files +Searched references to parameter a of B.set(i: Int, a: B) in non-Java files Used plain search of B.set(i: Int, a: B) in LocalSearchScope: CLASS:B diff --git a/idea/testData/findUsages/kotlin/conventions/unaryMinus.log b/idea/testData/findUsages/kotlin/conventions/unaryMinus.log index 2232721144e..578898efb74 100644 --- a/idea/testData/findUsages/kotlin/conventions/unaryMinus.log +++ b/idea/testData/findUsages/kotlin/conventions/unaryMinus.log @@ -1,5 +1,5 @@ Resolved -A(1) Searched references to A -Searched references to A.unaryMinus() in Kotlin files +Searched references to A.unaryMinus() in non-Java files Used plain search of A.unaryMinus() in LocalSearchScope: CLASS:A