From 6e9c0a0fda6b1ee819068d0678a3dd0d7a6685cf Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 14 Jun 2017 19:59:20 +0300 Subject: [PATCH] Move test logging processing in find usages to single place --- .../ExpressionsOfTypeProcessor.kt | 22 +++++++++++-------- .../operators/OperatorReferenceSearcher.kt | 4 ++-- 2 files changed, 15 insertions(+), 11 deletions(-) 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 5fa7ac3fc03..1686ca25b44 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 @@ -85,6 +85,10 @@ class ExpressionsOfTypeProcessor( @TestOnly var testLog: MutableList? = null + inline fun testLog(s: () -> String) { + testLog?.add(s()) + } + val LOG = Logger.getInstance(ExpressionsOfTypeProcessor::class.java) fun logPresentation(element: PsiElement): String? { @@ -183,7 +187,7 @@ class ExpressionsOfTypeProcessor( private fun downShiftToPlainSearch(reference: PsiReference) { val message = getFallbackDiagnosticsMessage(reference) LOG.info("ExpressionsOfTypeProcessor: " + message) - testLog?.add("Downgrade to plain text search: $message") + testLog { "Downgrade to plain text search: $message" } tasks.clear() scopesToUsePlainSearch.clear() @@ -216,7 +220,7 @@ class ExpressionsOfTypeProcessor( private fun addClassToProcess(classToSearch: PsiClass) { data class ProcessClassUsagesTask(val classToSearch: PsiClass) : Task { override fun perform() { - testLog?.add("Searched references to ${logPresentation(classToSearch)}") + testLog { "Searched references to ${logPresentation(classToSearch)}" } val scope = GlobalSearchScope.allScope(project).excludeFileTypes(XmlFileType.INSTANCE) // ignore usages in XML - they don't affect us searchReferences(classToSearch, scope) { reference -> val element = reference.element @@ -347,7 +351,7 @@ class ExpressionsOfTypeProcessor( for (klass in classes) { val request = klass.name + "." + declarationName - testLog?.add("Searched references to static ${member.name} in non-Java files by request $request") + testLog { "Searched references to static ${member.name} in non-Java files by request $request" } searchRequestCollector.searchWord( request, classUseScope(klass).intersectWith(memberScope), UsageSearchContext.IN_CODE, true, member, resultProcessor) @@ -356,7 +360,7 @@ class ExpressionsOfTypeProcessor( if (qualifiedName != null) { val importAllUnderRequest = qualifiedName + ".*" - testLog?.add("Searched references to static ${member.name} in non-Java files by request $importAllUnderRequest") + testLog { "Searched references to static ${member.name} in non-Java files by request $importAllUnderRequest" } searchRequestCollector.searchWord( importAllUnderRequest, classUseScope(klass).intersectWith(memberScope), UsageSearchContext.IN_CODE, true, member, resultProcessor) @@ -397,10 +401,10 @@ class ExpressionsOfTypeProcessor( data class ProcessCallableUsagesTask(val declaration: PsiElement, val processor: ReferenceProcessor, val scope: SearchScope) : Task { override fun perform() { if (scope is LocalSearchScope) { - testLog?.add("Searched imported static member $declaration in ${scope.scope.toList()}") + testLog { "Searched imported static member $declaration in ${scope.scope.toList()}" } } else { - testLog?.add("Searched references to ${logPresentation(declaration)} in non-Java files") + testLog { "Searched references to ${logPresentation(declaration)} in non-Java files" } } val searchParameters = KotlinReferencesSearchParameters( @@ -464,7 +468,7 @@ class ExpressionsOfTypeProcessor( data class ProcessSamInterfaceTask(val psiClass: PsiClass) : Task { override fun perform() { val scope = GlobalSearchScope.projectScope(project).excludeFileTypes(KotlinFileType.INSTANCE, XmlFileType.INSTANCE) - testLog?.add("Searched references to ${logPresentation(psiClass)} in non-Kotlin files") + testLog { "Searched references to ${logPresentation(psiClass)} in non-Kotlin files" } searchReferences(psiClass, scope) { reference -> if (reference.element.language != JavaLanguage.INSTANCE) { // reference in some JVM language can be method parameter (but we don't know) downShiftToPlainSearch(reference) @@ -765,7 +769,7 @@ class ExpressionsOfTypeProcessor( if (method.hasModifierProperty(PsiModifier.ABSTRACT)) { val psiClass = method.containingClass if (psiClass != null) { - testLog?.add("Resolved java class to descriptor: ${psiClass.qualifiedName}") + testLog { "Resolved java class to descriptor: ${psiClass.qualifiedName}" } val resolutionFacade = KotlinCacheService.getInstance(project).getResolutionFacadeByFile(psiClass.containingFile, JvmPlatform) val classDescriptor = psiClass.resolveToDescriptor(resolutionFacade) as? JavaClassDescriptor @@ -844,7 +848,7 @@ class ExpressionsOfTypeProcessor( else { if (!isImplicitlyTyped(declaration)) return - testLog?.add("Checked type of ${logPresentation(declaration)}") + testLog { "Checked type of ${logPresentation(declaration)}" } val descriptor = declaration.resolveToDescriptorIfAny() as? CallableDescriptor ?: return val type = descriptor.returnType diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/operators/OperatorReferenceSearcher.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/operators/OperatorReferenceSearcher.kt index cc41c176af9..7f7b5245813 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/operators/OperatorReferenceSearcher.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/operators/OperatorReferenceSearcher.kt @@ -78,7 +78,7 @@ abstract class OperatorReferenceSearcher( protected fun processReferenceElement(element: TReferenceElement): Boolean { val reference = extractReference(element) ?: return true - testLog?.add("Resolved ${logPresentation(element)}") + testLog { "Resolved ${logPresentation(element)}" } if (reference.isReferenceTo(targetDeclaration)) { return consumer.process(reference) } @@ -239,7 +239,7 @@ abstract class OperatorReferenceSearcher( } private fun doPlainSearch(scope: SearchScope) { - testLog?.add("Used plain search of ${logPresentation(targetDeclaration)} in ${scope.logPresentation()}") + testLog { "Used plain search of ${logPresentation(targetDeclaration)} in ${scope.logPresentation()}" } if (scope is LocalSearchScope) { for (element in scope.scope) {