Down-shift to plain search if reference in unknown language encountered
This commit is contained in:
@@ -16,6 +16,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.search
|
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.openapi.project.Project
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiFile
|
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()
|
// Copied from SearchParameters.getEffectiveSearchScope()
|
||||||
fun ReferencesSearch.SearchParameters.effectiveSearchScope(element: PsiElement): SearchScope {
|
fun ReferencesSearch.SearchParameters.effectiveSearchScope(element: PsiElement): SearchScope {
|
||||||
if (element == elementToSearch) return effectiveSearchScope
|
if (element == elementToSearch) return effectiveSearchScope
|
||||||
|
|||||||
+39
-21
@@ -17,8 +17,8 @@
|
|||||||
package org.jetbrains.kotlin.idea.search.usagesSearch
|
package org.jetbrains.kotlin.idea.search.usagesSearch
|
||||||
|
|
||||||
import com.intellij.ide.highlighter.JavaFileType
|
import com.intellij.ide.highlighter.JavaFileType
|
||||||
|
import com.intellij.ide.highlighter.XmlFileType
|
||||||
import com.intellij.lang.java.JavaLanguage
|
import com.intellij.lang.java.JavaLanguage
|
||||||
import com.intellij.lang.xml.XMLLanguage
|
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.roots.ProjectRootManager
|
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.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
|
||||||
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||||
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
||||||
import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference
|
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.KotlinReferencesSearchOptions
|
||||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters
|
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters
|
||||||
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
|
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
|
||||||
@@ -179,7 +181,8 @@ class ExpressionsOfTypeProcessor(
|
|||||||
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?.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 (processClassUsage(reference)) return@searchReferences true
|
||||||
|
|
||||||
if (mode != Mode.ALWAYS_SMART) {
|
if (mode != Mode.ALWAYS_SMART) {
|
||||||
@@ -200,21 +203,26 @@ class ExpressionsOfTypeProcessor(
|
|||||||
addTask(ProcessClassUsagesTask(classToSearch))
|
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
|
if (declaration.isOperatorExpensiveToSearch()) { // cancel all tasks and use plain search
|
||||||
downShiftToPlainSearch()
|
downShiftToPlainSearch()
|
||||||
return
|
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() {
|
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
|
// 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).excludeFileTypes(JavaFileType.INSTANCE, XmlFileType.INSTANCE)
|
||||||
val scope = GlobalSearchScope.projectScope(project).restrictToKotlinSources()
|
testLog?.add("Searched references to ${logPresentation(declaration)} in non-Java files")
|
||||||
testLog?.add("Searched references to ${logPresentation(declaration)} in Kotlin files")
|
|
||||||
val searchParameters = KotlinReferencesSearchParameters(
|
val searchParameters = KotlinReferencesSearchParameters(
|
||||||
declaration, scope, kotlinOptions = KotlinReferencesSearchOptions(searchNamedArguments = false))
|
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))
|
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)
|
* Process reference to declaration whose type is our class (or our class used anywhere inside that type)
|
||||||
*/
|
*/
|
||||||
private fun processReferenceToCallableOfOurType(reference: PsiReference) {
|
private fun processReferenceToCallableOfOurType(reference: PsiReference): Boolean {
|
||||||
if (reference is KtDestructuringDeclarationReference) {
|
when (reference.element.language) {
|
||||||
// declaration usage in form of destructuring declaration entry
|
KotlinLanguage.INSTANCE -> {
|
||||||
addCallableDeclarationToProcess(reference.element, HAS_OUR_TYPE)
|
if (reference is KtDestructuringDeclarationReference) {
|
||||||
}
|
// declaration usage in form of destructuring declaration entry
|
||||||
else {
|
addCallableDeclarationToProcess(reference.element, HAS_OUR_TYPE)
|
||||||
(reference.element as? KtReferenceExpression)?.let { processSuspiciousExpression(it) }
|
}
|
||||||
|
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
|
* 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) }
|
(reference.element as? KtReferenceExpression)?.let { processLambdasForCallableReference(it) }
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addSamInterfaceToProcess(psiClass: PsiClass) {
|
private fun addSamInterfaceToProcess(psiClass: PsiClass) {
|
||||||
data class ProcessSamInterfaceTask(val psiClass: PsiClass) : Task {
|
data class ProcessSamInterfaceTask(val psiClass: PsiClass) : Task {
|
||||||
override fun perform() {
|
override fun perform() {
|
||||||
//TODO: what about other JVM languages?
|
val scope = GlobalSearchScope.projectScope(project).excludeFileTypes(KotlinFileType.INSTANCE, XmlFileType.INSTANCE)
|
||||||
val scope = GlobalSearchScope.getScopeRestrictedByFileTypes(GlobalSearchScope.projectScope(project), JavaFileType.INSTANCE)
|
testLog?.add("Searched references to ${logPresentation(psiClass)} in non-Kotlin files")
|
||||||
testLog?.add("Searched references to ${logPresentation(psiClass)} in java files")
|
|
||||||
searchReferences(psiClass, scope) { reference ->
|
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
|
// check if the reference is method parameter type
|
||||||
val parameter = ((reference as? PsiJavaCodeReferenceElement)?.parent as? PsiTypeElement)?.parent as? PsiParameter
|
val parameter = ((reference as? PsiJavaCodeReferenceElement)?.parent as? PsiTypeElement)?.parent as? PsiParameter
|
||||||
val method = parameter?.declarationScope as? PsiMethod
|
val method = parameter?.declarationScope as? PsiMethod
|
||||||
@@ -273,8 +293,6 @@ class ExpressionsOfTypeProcessor(
|
|||||||
|
|
||||||
JavaLanguage.INSTANCE -> processClassUsageInJava(element)
|
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
|
else -> false // we don't know anything about usages in other languages - so we downgrade to slow algorithm in this case
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-19
@@ -22,11 +22,8 @@ import com.intellij.find.findUsages.AbstractFindUsagesDialog
|
|||||||
import com.intellij.find.findUsages.FindUsagesOptions
|
import com.intellij.find.findUsages.FindUsagesOptions
|
||||||
import com.intellij.find.impl.FindManagerImpl
|
import com.intellij.find.impl.FindManagerImpl
|
||||||
import com.intellij.openapi.actionSystem.DataContext
|
import com.intellij.openapi.actionSystem.DataContext
|
||||||
import com.intellij.openapi.fileTypes.FileTypeManager
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiReference
|
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.SearchScope
|
||||||
import com.intellij.psi.search.searches.MethodReferencesSearch
|
import com.intellij.psi.search.searches.MethodReferencesSearch
|
||||||
import com.intellij.psi.search.searches.ReferencesSearch
|
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.asJava.toLightMethods
|
||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
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.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.findUsages.KotlinCallableFindUsagesOptions
|
import org.jetbrains.kotlin.idea.findUsages.KotlinCallableFindUsagesOptions
|
||||||
import org.jetbrains.kotlin.idea.findUsages.KotlinFindUsagesHandlerFactory
|
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.findUsages.dialogs.KotlinFindPropertyUsagesDialog
|
||||||
import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest
|
import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest
|
||||||
import org.jetbrains.kotlin.idea.search.declarationsSearch.searchOverriders
|
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.KotlinReadWriteAccessDetector
|
||||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
|
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
|
||||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters
|
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters
|
||||||
@@ -175,21 +172,6 @@ abstract class KotlinFindMemberUsagesHandler<T : KtNamedDeclaration>
|
|||||||
|
|
||||||
return true
|
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
|
protected abstract fun createKotlinReferencesSearchOptions(options: FindUsagesOptions): KotlinReferencesSearchOptions
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
Resolved java class to descriptor: JavaSAM
|
Resolved java class to descriptor: JavaSAM
|
||||||
Searched references to JavaClass.takeSAM(JavaSAM sam) in Kotlin files
|
Searched references to JavaSAM in non-Kotlin files
|
||||||
Searched references to JavaSAM in java files
|
|
||||||
Searched references to pack.A
|
Searched references to pack.A
|
||||||
Used plain search of parameter a of A(val a: Int, val b: String) in LocalSearchScope:
|
Used plain search of parameter a of A(val a: Int, val b: String) in whole search scope
|
||||||
CLASS:A
|
|
||||||
{ val (x, y) = it }
|
|
||||||
+5
-5
@@ -15,10 +15,10 @@ Resolved (a2, b2)
|
|||||||
Resolved (a3, b3)
|
Resolved (a3, b3)
|
||||||
Resolved (a4, b4)
|
Resolved (a4, b4)
|
||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to X.f2() in Kotlin files
|
Searched references to X.f2() in non-Java files
|
||||||
Searched references to constructor in Kotlin files
|
Searched references to constructor in non-Java files
|
||||||
Searched references to f1() in Kotlin files
|
Searched references to f1() in non-Java files
|
||||||
Searched references to fun2 in Kotlin files
|
Searched references to fun2 in non-Java files
|
||||||
Searched references to fun3 in Kotlin 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:
|
Used plain search of parameter a of A(val a: Int, val b: Int) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@ Checked type of x
|
|||||||
Checked type of y
|
Checked type of y
|
||||||
Resolved (x, y)
|
Resolved (x, y)
|
||||||
Searched references to X
|
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:
|
Used plain search of component1() in LocalSearchScope:
|
||||||
CLASS:X
|
CLASS:X
|
||||||
FUN:component1
|
FUN:component1
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ Checked type of x1
|
|||||||
Checked type of y1
|
Checked type of y1
|
||||||
Resolved (x1, y1)
|
Resolved (x1, y1)
|
||||||
Searched references to X
|
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:
|
Used plain search of component1() in LocalSearchScope:
|
||||||
CLASS:X
|
CLASS:X
|
||||||
FUN:component1
|
FUN:component1
|
||||||
|
|||||||
@@ -36,21 +36,21 @@ Resolved (x3, y3)
|
|||||||
Resolved (x3, y3, z3)
|
Resolved (x3, y3, z3)
|
||||||
Resolved (x4, y4, z4)
|
Resolved (x4, y4, z4)
|
||||||
Resolved (x5, y5, z5)
|
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 JavaClass2
|
||||||
Searched references to JavaClass3
|
Searched references to JavaClass3
|
||||||
Searched references to JavaClass4.NestedPrivate
|
Searched references to JavaClass4.NestedPrivate
|
||||||
Searched references to JavaClass4.NestedPublic
|
Searched references to JavaClass4.NestedPublic
|
||||||
Searched references to JavaClass4.getNested() in Kotlin files
|
Searched references to JavaClass4.getNested() in non-Java files
|
||||||
Searched references to a in Kotlin files
|
Searched references to a in non-Java files
|
||||||
Searched references to f() in Kotlin files
|
Searched references to f() in non-Java files
|
||||||
Searched references to g() in Kotlin files
|
Searched references to g() in non-Java files
|
||||||
Searched references to h() in Kotlin files
|
Searched references to h() in non-Java files
|
||||||
Searched references to listOfA() in Kotlin files
|
Searched references to listOfA() in non-Java files
|
||||||
Searched references to pack.A
|
Searched references to pack.A
|
||||||
Searched references to pack.X
|
Searched references to pack.X
|
||||||
Searched references to parameter p1 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 Kotlin 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:
|
Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
CLASS:X
|
CLASS:X
|
||||||
|
|||||||
+1
-1
@@ -4,6 +4,6 @@ Checked type of y
|
|||||||
Checked type of z
|
Checked type of z
|
||||||
Resolved (x, y, z)
|
Resolved (x, y, z)
|
||||||
Searched references to A
|
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:
|
Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
+6
-6
@@ -15,12 +15,12 @@ Resolved (x1, y1, z1)
|
|||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to B
|
Searched references to B
|
||||||
Searched references to C
|
Searched references to C
|
||||||
Searched references to C.component1() in Kotlin files
|
Searched references to C.component1() in non-Java files
|
||||||
Searched references to a in Kotlin files
|
Searched references to a in non-Java files
|
||||||
Searched references to a1 in Kotlin files
|
Searched references to a1 in non-Java files
|
||||||
Searched references to parameter a of B(val a: A, val n: Int) in Kotlin 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 Kotlin 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 Kotlin files
|
Searched references to parameter c of f(b: B, c: C) in non-Java files
|
||||||
Used plain search of C.component1() in LocalSearchScope:
|
Used plain search of C.component1() in LocalSearchScope:
|
||||||
CLASS:C
|
CLASS:C
|
||||||
Used plain search of parameter a of B(val a: A, val n: Int) in LocalSearchScope:
|
Used plain search of parameter a of B(val a: A, val n: Int) in LocalSearchScope:
|
||||||
|
|||||||
+3
-3
@@ -12,9 +12,9 @@ Searched references to X
|
|||||||
Searched references to Y
|
Searched references to Y
|
||||||
Searched references to Z1
|
Searched references to Z1
|
||||||
Searched references to Z2
|
Searched references to Z2
|
||||||
Searched references to f() in Kotlin files
|
Searched references to f() in non-Java files
|
||||||
Searched references to parameter z1 of g(z1: Z1, z2: Z2) in Kotlin 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 Kotlin files
|
Searched references to parameter z2 of g(z1: Z1, z2: Z2) in non-Java files
|
||||||
Used plain search of component2() in LocalSearchScope:
|
Used plain search of component2() in LocalSearchScope:
|
||||||
CLASS:X
|
CLASS:X
|
||||||
CLASS:Y
|
CLASS:Y
|
||||||
|
|||||||
@@ -7,6 +7,6 @@ Checked type of z
|
|||||||
Resolved (x, y)
|
Resolved (x, y)
|
||||||
Resolved (x, y, z)
|
Resolved (x, y, z)
|
||||||
Searched references to A
|
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:
|
Used plain search of parameter n of A(val n: Int, val s: String, val o: Any) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
@@ -6,7 +6,7 @@ Checked type of y1
|
|||||||
Resolved (x, y)
|
Resolved (x, y)
|
||||||
Resolved (x1, y1)
|
Resolved (x1, y1)
|
||||||
Searched references to A
|
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:
|
Used plain search of parameter x of A(val x: Int, val y: Int) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
FUN:x
|
FUN:x
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to parameter p of foo(p: A) 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 Kotlin 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 Kotlin 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 Kotlin 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<A>) -> Unit) in Kotlin files
|
Searched references to parameter p of takeFun3(p: (List<A>) -> Unit) in non-Java files
|
||||||
Searched references to parameter p of takeFuns(p: MutableList<(A) -> Unit>) in Kotlin files
|
Searched references to parameter p of takeFuns(p: MutableList<(A) -> Unit>) in non-Java files
|
||||||
Searched references to takeExtFun(p: A.() -> Unit) in Kotlin files
|
Searched references to takeExtFun(p: A.() -> Unit) in non-Java files
|
||||||
Searched references to takeFun1(p: (A) -> Unit) in Kotlin files
|
Searched references to takeFun1(p: (A) -> Unit) in non-Java files
|
||||||
Searched references to takeFun2(p: ((A?, Int) -> Unit)?) in Kotlin files
|
Searched references to takeFun2(p: ((A?, Int) -> Unit)?) in non-Java files
|
||||||
Searched references to takeFun3(p: (List<A>) -> Unit) in Kotlin files
|
Searched references to takeFun3(p: (List<A>) -> Unit) in non-Java files
|
||||||
Searched references to takeFuns(p: MutableList<(A) -> Unit>) in Kotlin files
|
Searched references to takeFuns(p: MutableList<(A) -> Unit>) in non-Java files
|
||||||
Searched references to v in Kotlin 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:
|
Used plain search of parameter a of A(val a: Int, val b: Int) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
{ a, n -> val (x, y) = a!! }
|
{ a, n -> val (x, y) = a!! }
|
||||||
|
|||||||
+5
-5
@@ -3,11 +3,11 @@ Checked type of y1
|
|||||||
Checked type of y1(a: A)
|
Checked type of y1(a: A)
|
||||||
Resolved (x1, y1)
|
Resolved (x1, y1)
|
||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to parameter a of condition(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<Int>) in Kotlin files
|
Searched references to parameter a of x(a: A, b: Boolean, list: List<Int>) in non-Java files
|
||||||
Searched references to parameter a of y1(a: A) in Kotlin files
|
Searched references to parameter a of y1(a: A) in non-Java files
|
||||||
Searched references to parameter a of y2(a: A) in Kotlin files
|
Searched references to parameter a of y2(a: A) in non-Java files
|
||||||
Searched references to parameter a of y3(a: A) in Kotlin 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:
|
Used plain search of parameter n of A(val n: Int, val s: String) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
{ val (x2, y2) = this }
|
{ val (x2, y2) = this }
|
||||||
+3
-3
@@ -13,9 +13,9 @@ Resolved (x2, y2)
|
|||||||
Searched references to X
|
Searched references to X
|
||||||
Searched references to Y
|
Searched references to Y
|
||||||
Searched references to Z
|
Searched references to Z
|
||||||
Searched references to f() in Kotlin files
|
Searched references to f() in non-Java files
|
||||||
Searched references to g() in Kotlin files
|
Searched references to g() in non-Java files
|
||||||
Searched references to h() in Kotlin files
|
Searched references to h() in non-Java files
|
||||||
Used plain search of X.component1() in LocalSearchScope:
|
Used plain search of X.component1() in LocalSearchScope:
|
||||||
CLASS:X
|
CLASS:X
|
||||||
CLASS:Y
|
CLASS:Y
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ Resolved (x, y)
|
|||||||
Resolved b1 + b2
|
Resolved b1 + b2
|
||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to B
|
Searched references to B
|
||||||
Searched references to parameter b1 of f(b1: B, b2: 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 Kotlin 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 Kotlin files
|
Searched references to parameter other of plus(other: B) in non-Java files
|
||||||
Searched references to plus(other: B) in Kotlin 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:
|
Used plain search of parameter x of A(val x: Int, val y: Int) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
Used plain search of plus(other: B) in LocalSearchScope:
|
Used plain search of plus(other: B) in LocalSearchScope:
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ Resolved (a1, n1)
|
|||||||
Resolved (a2, n2)
|
Resolved (a2, n2)
|
||||||
Resolved (a2, n2)
|
Resolved (a2, n2)
|
||||||
Searched references to A
|
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 A(val a: A?, val n: Int) in non-Java files
|
||||||
Searched references to parameter a of f(a: A) in Kotlin 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:
|
Used plain search of parameter a of A(val a: A?, val n: Int) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
|
|||||||
+5
-5
@@ -6,11 +6,11 @@ Resolved (a1, s)
|
|||||||
Resolved (b, n)
|
Resolved (b, n)
|
||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to B
|
Searched references to B
|
||||||
Searched references to a1 in Kotlin files
|
Searched references to a1 in non-Java files
|
||||||
Searched references to b in Kotlin files
|
Searched references to b in non-Java files
|
||||||
Searched references to parameter a of B(val a: A?, val s: String) in Kotlin 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 Kotlin 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 Kotlin 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:
|
Used plain search of parameter a of B(val a: A?, val s: String) in LocalSearchScope:
|
||||||
CLASS:B
|
CLASS:B
|
||||||
Used plain search of parameter b of A(val b: B, val n: Int) in LocalSearchScope:
|
Used plain search of parameter b of A(val b: B, val n: Int) in LocalSearchScope:
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
Checked type of b
|
Checked type of b
|
||||||
Resolved B(1)[2]
|
Resolved B(1)[2]
|
||||||
Searched references to B
|
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:
|
Used plain search of B.get(i: Int) in LocalSearchScope:
|
||||||
CLASS:B
|
CLASS:B
|
||||||
|
|||||||
+2
-2
@@ -2,7 +2,7 @@ Checked type of a
|
|||||||
Resolved ++a
|
Resolved ++a
|
||||||
Resolved a++
|
Resolved a++
|
||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to A.inc() in Kotlin files
|
Searched references to A.inc() in non-Java files
|
||||||
Searched references to a in Kotlin files
|
Searched references to a in non-Java files
|
||||||
Used plain search of A.inc() in LocalSearchScope:
|
Used plain search of A.inc() in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
|
|||||||
+1
-1
@@ -3,6 +3,6 @@ Resolved f(1)
|
|||||||
Resolved f(2)
|
Resolved f(2)
|
||||||
Resolved f(2)(2)
|
Resolved f(2)(2)
|
||||||
Searched references to B
|
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:
|
Used plain search of B.invoke(i: Int) in LocalSearchScope:
|
||||||
CLASS:B
|
CLASS:B
|
||||||
+14
-14
@@ -19,20 +19,20 @@ Resolved a1 + 1
|
|||||||
Resolved a1 + 1
|
Resolved a1 + 1
|
||||||
Searched references to A
|
Searched references to A
|
||||||
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 non-Java files
|
||||||
Searched references to A.plus(a: A) in Kotlin files
|
Searched references to A.plus(a: A) in non-Java files
|
||||||
Searched references to A.plus(m: Int) in Kotlin files
|
Searched references to A.plus(m: Int) in non-Java files
|
||||||
Searched references to A.plus(m: Int) in Kotlin files
|
Searched references to A.plus(m: Int) in non-Java files
|
||||||
Searched references to a in Kotlin files
|
Searched references to a in non-Java files
|
||||||
Searched references to a in Kotlin files
|
Searched references to a in non-Java files
|
||||||
Searched references to a1 in Kotlin files
|
Searched references to a1 in non-Java files
|
||||||
Searched references to a1 in Kotlin files
|
Searched references to a1 in non-Java files
|
||||||
Searched references to a2 in Kotlin files
|
Searched references to a2 in non-Java files
|
||||||
Searched references to a2 in Kotlin files
|
Searched references to a2 in non-Java 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 non-Java 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 non-Java files
|
||||||
Searched references to parameter array of test(array: Array<A>) in Kotlin files
|
Searched references to parameter array of test(array: Array<A>) in non-Java files
|
||||||
Searched references to parameter array of test(array: Array<A>) in Kotlin files
|
Searched references to parameter array of test(array: Array<A>) in non-Java files
|
||||||
Used plain search of A.plus(a: A) in LocalSearchScope:
|
Used plain search of A.plus(a: A) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
Used plain search of A.plus(m: Int) in LocalSearchScope:
|
Used plain search of A.plus(m: Int) in LocalSearchScope:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ Checked type of a
|
|||||||
Resolved a += 1
|
Resolved a += 1
|
||||||
Resolved a += A(1)
|
Resolved a += A(1)
|
||||||
Searched references to A
|
Searched references to A
|
||||||
Searched references to a in Kotlin files
|
Searched references to a in non-Java files
|
||||||
Searched references to parameter a of A.plusAssign(a: A) in Kotlin 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:
|
Used plain search of A.plusAssign(m: Int) in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
|
|||||||
+2
-2
@@ -2,7 +2,7 @@ Checked type of a
|
|||||||
Resolved a[1]
|
Resolved a[1]
|
||||||
Resolved a[2]
|
Resolved a[2]
|
||||||
Searched references to B
|
Searched references to B
|
||||||
Searched references to a in Kotlin files
|
Searched references to a in non-Java files
|
||||||
Searched references to parameter a of B.set(i: Int, a: B) in Kotlin 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:
|
Used plain search of B.set(i: Int, a: B) in LocalSearchScope:
|
||||||
CLASS:B
|
CLASS:B
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Resolved -A(1)
|
Resolved -A(1)
|
||||||
Searched references to A
|
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:
|
Used plain search of A.unaryMinus() in LocalSearchScope:
|
||||||
CLASS:A
|
CLASS:A
|
||||||
|
|||||||
Reference in New Issue
Block a user