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
|
||||
|
||||
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
|
||||
|
||||
+39
-21
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+1
-19
@@ -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<T : KtNamedDeclaration>
|
||||
|
||||
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
|
||||
|
||||
@@ -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
|
||||
+5
-5
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
+6
-6
@@ -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:
|
||||
|
||||
+3
-3
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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<A>) -> 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<A>) -> 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<A>) -> 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<A>) -> 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!! }
|
||||
|
||||
+5
-5
@@ -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<Int>) 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<Int>) 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 }
|
||||
+3
-3
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
+5
-5
@@ -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:
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
+14
-14
@@ -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<A>) in Kotlin files
|
||||
Searched references to parameter array of test(array: Array<A>) 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<A>) in non-Java 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:
|
||||
CLASS:A
|
||||
Used plain search of A.plus(m: Int) in LocalSearchScope:
|
||||
|
||||
@@ -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
|
||||
|
||||
+2
-2
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user