Move test logging processing in find usages to single place
This commit is contained in:
+13
-9
@@ -85,6 +85,10 @@ class ExpressionsOfTypeProcessor(
|
|||||||
@TestOnly
|
@TestOnly
|
||||||
var testLog: MutableList<String>? = null
|
var testLog: MutableList<String>? = null
|
||||||
|
|
||||||
|
inline fun testLog(s: () -> String) {
|
||||||
|
testLog?.add(s())
|
||||||
|
}
|
||||||
|
|
||||||
val LOG = Logger.getInstance(ExpressionsOfTypeProcessor::class.java)
|
val LOG = Logger.getInstance(ExpressionsOfTypeProcessor::class.java)
|
||||||
|
|
||||||
fun logPresentation(element: PsiElement): String? {
|
fun logPresentation(element: PsiElement): String? {
|
||||||
@@ -183,7 +187,7 @@ class ExpressionsOfTypeProcessor(
|
|||||||
private fun downShiftToPlainSearch(reference: PsiReference) {
|
private fun downShiftToPlainSearch(reference: PsiReference) {
|
||||||
val message = getFallbackDiagnosticsMessage(reference)
|
val message = getFallbackDiagnosticsMessage(reference)
|
||||||
LOG.info("ExpressionsOfTypeProcessor: " + message)
|
LOG.info("ExpressionsOfTypeProcessor: " + message)
|
||||||
testLog?.add("Downgrade to plain text search: $message")
|
testLog { "Downgrade to plain text search: $message" }
|
||||||
|
|
||||||
tasks.clear()
|
tasks.clear()
|
||||||
scopesToUsePlainSearch.clear()
|
scopesToUsePlainSearch.clear()
|
||||||
@@ -216,7 +220,7 @@ class ExpressionsOfTypeProcessor(
|
|||||||
private fun addClassToProcess(classToSearch: PsiClass) {
|
private fun addClassToProcess(classToSearch: PsiClass) {
|
||||||
data class ProcessClassUsagesTask(val classToSearch: PsiClass) : Task {
|
data class ProcessClassUsagesTask(val classToSearch: PsiClass) : Task {
|
||||||
override fun perform() {
|
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
|
val scope = GlobalSearchScope.allScope(project).excludeFileTypes(XmlFileType.INSTANCE) // ignore usages in XML - they don't affect us
|
||||||
searchReferences(classToSearch, scope) { reference ->
|
searchReferences(classToSearch, scope) { reference ->
|
||||||
val element = reference.element
|
val element = reference.element
|
||||||
@@ -347,7 +351,7 @@ class ExpressionsOfTypeProcessor(
|
|||||||
for (klass in classes) {
|
for (klass in classes) {
|
||||||
val request = klass.name + "." + declarationName
|
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(
|
searchRequestCollector.searchWord(
|
||||||
request,
|
request,
|
||||||
classUseScope(klass).intersectWith(memberScope), UsageSearchContext.IN_CODE, true, member, resultProcessor)
|
classUseScope(klass).intersectWith(memberScope), UsageSearchContext.IN_CODE, true, member, resultProcessor)
|
||||||
@@ -356,7 +360,7 @@ class ExpressionsOfTypeProcessor(
|
|||||||
if (qualifiedName != null) {
|
if (qualifiedName != null) {
|
||||||
val importAllUnderRequest = qualifiedName + ".*"
|
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(
|
searchRequestCollector.searchWord(
|
||||||
importAllUnderRequest,
|
importAllUnderRequest,
|
||||||
classUseScope(klass).intersectWith(memberScope), UsageSearchContext.IN_CODE, true, member, resultProcessor)
|
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 {
|
data class ProcessCallableUsagesTask(val declaration: PsiElement, val processor: ReferenceProcessor, val scope: SearchScope) : Task {
|
||||||
override fun perform() {
|
override fun perform() {
|
||||||
if (scope is LocalSearchScope) {
|
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 {
|
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(
|
val searchParameters = KotlinReferencesSearchParameters(
|
||||||
@@ -464,7 +468,7 @@ class ExpressionsOfTypeProcessor(
|
|||||||
data class ProcessSamInterfaceTask(val psiClass: PsiClass) : Task {
|
data class ProcessSamInterfaceTask(val psiClass: PsiClass) : Task {
|
||||||
override fun perform() {
|
override fun perform() {
|
||||||
val scope = GlobalSearchScope.projectScope(project).excludeFileTypes(KotlinFileType.INSTANCE, XmlFileType.INSTANCE)
|
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 ->
|
searchReferences(psiClass, scope) { reference ->
|
||||||
if (reference.element.language != JavaLanguage.INSTANCE) { // reference in some JVM language can be method parameter (but we don't know)
|
if (reference.element.language != JavaLanguage.INSTANCE) { // reference in some JVM language can be method parameter (but we don't know)
|
||||||
downShiftToPlainSearch(reference)
|
downShiftToPlainSearch(reference)
|
||||||
@@ -765,7 +769,7 @@ class ExpressionsOfTypeProcessor(
|
|||||||
if (method.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
if (method.hasModifierProperty(PsiModifier.ABSTRACT)) {
|
||||||
val psiClass = method.containingClass
|
val psiClass = method.containingClass
|
||||||
if (psiClass != null) {
|
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 resolutionFacade = KotlinCacheService.getInstance(project).getResolutionFacadeByFile(psiClass.containingFile, JvmPlatform)
|
||||||
val classDescriptor = psiClass.resolveToDescriptor(resolutionFacade) as? JavaClassDescriptor
|
val classDescriptor = psiClass.resolveToDescriptor(resolutionFacade) as? JavaClassDescriptor
|
||||||
@@ -844,7 +848,7 @@ class ExpressionsOfTypeProcessor(
|
|||||||
else {
|
else {
|
||||||
if (!isImplicitlyTyped(declaration)) return
|
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 descriptor = declaration.resolveToDescriptorIfAny() as? CallableDescriptor ?: return
|
||||||
val type = descriptor.returnType
|
val type = descriptor.returnType
|
||||||
|
|||||||
+2
-2
@@ -78,7 +78,7 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
|
|||||||
|
|
||||||
protected fun processReferenceElement(element: TReferenceElement): Boolean {
|
protected fun processReferenceElement(element: TReferenceElement): Boolean {
|
||||||
val reference = extractReference(element) ?: return true
|
val reference = extractReference(element) ?: return true
|
||||||
testLog?.add("Resolved ${logPresentation(element)}")
|
testLog { "Resolved ${logPresentation(element)}" }
|
||||||
if (reference.isReferenceTo(targetDeclaration)) {
|
if (reference.isReferenceTo(targetDeclaration)) {
|
||||||
return consumer.process(reference)
|
return consumer.process(reference)
|
||||||
}
|
}
|
||||||
@@ -239,7 +239,7 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun doPlainSearch(scope: SearchScope) {
|
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) {
|
if (scope is LocalSearchScope) {
|
||||||
for (element in scope.scope) {
|
for (element in scope.scope) {
|
||||||
|
|||||||
Reference in New Issue
Block a user