Reformat: search\ideaExtensions package
This commit is contained in:
+2
-1
@@ -34,7 +34,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getParentOfTypeAndBranch
|
|||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import org.jetbrains.kotlin.idea.references.KotlinDefaultAnnotationMethodImplicitReferenceContributor.ReferenceImpl as ImplicitReference
|
import org.jetbrains.kotlin.idea.references.KotlinDefaultAnnotationMethodImplicitReferenceContributor.ReferenceImpl as ImplicitReference
|
||||||
|
|
||||||
class DefaultAnnotationMethodKotlinImplicitReferenceSearcher : QueryExecutorBase<PsiReference, MethodReferencesSearch.SearchParameters>(true) {
|
class DefaultAnnotationMethodKotlinImplicitReferenceSearcher :
|
||||||
|
QueryExecutorBase<PsiReference, MethodReferencesSearch.SearchParameters>(true) {
|
||||||
private val PsiMethod.isDefaultAnnotationMethod: Boolean
|
private val PsiMethod.isDefaultAnnotationMethod: Boolean
|
||||||
get() = PsiUtil.isAnnotationMethod(this) && name == PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME && parameterList.parametersCount == 0
|
get() = PsiUtil.isAnnotationMethod(this) && name == PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME && parameterList.parametersCount == 0
|
||||||
|
|
||||||
|
|||||||
+6
-4
@@ -72,10 +72,12 @@ class KotlinAnnotatedElementsSearcher : QueryExecutor<PsiModifierListOwner, Anno
|
|||||||
companion object {
|
companion object {
|
||||||
private val LOG = Logger.getInstance("#com.intellij.psi.impl.search.AnnotatedMembersSearcher")
|
private val LOG = Logger.getInstance("#com.intellij.psi.impl.search.AnnotatedMembersSearcher")
|
||||||
|
|
||||||
fun processAnnotatedMembers(annClass: PsiClass,
|
fun processAnnotatedMembers(
|
||||||
useScope: SearchScope,
|
annClass: PsiClass,
|
||||||
preFilter: (KtAnnotationEntry) -> Boolean = { true },
|
useScope: SearchScope,
|
||||||
consumer: (KtDeclaration) -> Boolean): Boolean {
|
preFilter: (KtAnnotationEntry) -> Boolean = { true },
|
||||||
|
consumer: (KtDeclaration) -> Boolean
|
||||||
|
): Boolean {
|
||||||
assert(annClass.isAnnotationType) { "Annotation type should be passed to annotated members search" }
|
assert(annClass.isAnnotationType) { "Annotation type should be passed to annotated members search" }
|
||||||
|
|
||||||
val psiBasedClassResolver = PsiBasedClassResolver.getInstance(annClass)
|
val psiBasedClassResolver = PsiBasedClassResolver.getInstance(annClass)
|
||||||
|
|||||||
+2
-3
@@ -36,13 +36,12 @@ class KotlinClassesWithAnnotatedMembersSearcher : ScopedQueryExecutor<PsiClass,
|
|||||||
val processed = hashSetOf<KtClassOrObject>()
|
val processed = hashSetOf<KtClassOrObject>()
|
||||||
return KotlinAnnotatedElementsSearcher.processAnnotatedMembers(queryParameters.annotationClass,
|
return KotlinAnnotatedElementsSearcher.processAnnotatedMembers(queryParameters.annotationClass,
|
||||||
queryParameters.scope,
|
queryParameters.scope,
|
||||||
{ it.getNonStrictParentOfType<KtClassOrObject>() !in processed}) { declaration ->
|
{ it.getNonStrictParentOfType<KtClassOrObject>() !in processed }) { declaration ->
|
||||||
val ktClass = declaration.getNonStrictParentOfType<KtClassOrObject>()
|
val ktClass = declaration.getNonStrictParentOfType<KtClassOrObject>()
|
||||||
if (ktClass != null && processed.add(ktClass)) {
|
if (ktClass != null && processed.add(ktClass)) {
|
||||||
val lightClass = ktClass.toLightClass()
|
val lightClass = ktClass.toLightClass()
|
||||||
if (lightClass != null) consumer.process(lightClass) else true
|
if (lightClass != null) consumer.process(lightClass) else true
|
||||||
}
|
} else
|
||||||
else
|
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -25,11 +25,11 @@ import org.jetbrains.kotlin.idea.search.usagesSearch.operators.OperatorReference
|
|||||||
class KotlinConventionMethodReferencesSearcher : QueryExecutorBase<PsiReference, MethodReferencesSearch.SearchParameters>(true) {
|
class KotlinConventionMethodReferencesSearcher : QueryExecutorBase<PsiReference, MethodReferencesSearch.SearchParameters>(true) {
|
||||||
override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) {
|
override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) {
|
||||||
val operatorSearcher = OperatorReferenceSearcher.create(
|
val operatorSearcher = OperatorReferenceSearcher.create(
|
||||||
queryParameters.method,
|
queryParameters.method,
|
||||||
queryParameters.effectiveSearchScope,
|
queryParameters.effectiveSearchScope,
|
||||||
consumer,
|
consumer,
|
||||||
queryParameters.optimizer,
|
queryParameters.optimizer,
|
||||||
KotlinReferencesSearchOptions(acceptCallableOverrides = true)
|
KotlinReferencesSearchOptions(acceptCallableOverrides = true)
|
||||||
)
|
)
|
||||||
operatorSearcher?.run()
|
operatorSearcher?.run()
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-10
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.search.ideaExtensions
|
package org.jetbrains.kotlin.idea.search.ideaExtensions
|
||||||
|
|
||||||
import com.intellij.psi.PsiClass
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
@@ -110,21 +109,22 @@ class KotlinDefinitionsSearcher : QueryExecutor<PsiElement, DefinitionsScopedSea
|
|||||||
return ContainerUtil.process(ClassInheritorsSearch.search(psiClass, true), consumer)
|
return ContainerUtil.process(ClassInheritorsSearch.search(psiClass, true), consumer)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processLightClassLocalImplementations(psiClass: KtLightClass,
|
private fun processLightClassLocalImplementations(
|
||||||
searchScope: LocalSearchScope,
|
psiClass: KtLightClass,
|
||||||
consumer: Processor<PsiElement>): Boolean {
|
searchScope: LocalSearchScope,
|
||||||
|
consumer: Processor<PsiElement>
|
||||||
|
): Boolean {
|
||||||
// workaround for IDEA optimization that uses Java PSI traversal to locate inheritors in local search scope
|
// workaround for IDEA optimization that uses Java PSI traversal to locate inheritors in local search scope
|
||||||
val virtualFiles = searchScope.scope.mapTo(HashSet()) { it.containingFile.virtualFile }
|
val virtualFiles = searchScope.scope.mapTo(HashSet()) { it.containingFile.virtualFile }
|
||||||
val globalScope = GlobalSearchScope.filesScope(psiClass.project, virtualFiles)
|
val globalScope = GlobalSearchScope.filesScope(psiClass.project, virtualFiles)
|
||||||
return ContainerUtil.process(ClassInheritorsSearch.search(psiClass, globalScope, true), Processor<PsiClass> { candidate ->
|
return ContainerUtil.process(ClassInheritorsSearch.search(psiClass, globalScope, true)) { candidate ->
|
||||||
val candidateOrigin = candidate.unwrapped ?: candidate
|
val candidateOrigin = candidate.unwrapped ?: candidate
|
||||||
if (candidateOrigin in searchScope) {
|
if (candidateOrigin in searchScope) {
|
||||||
consumer.process(candidate)
|
consumer.process(candidate)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processFunctionImplementations(function: KtFunction, scope: SearchScope, consumer: Processor<PsiElement>): Boolean {
|
private fun processFunctionImplementations(function: KtFunction, scope: SearchScope, consumer: Processor<PsiElement>): Boolean {
|
||||||
@@ -133,7 +133,11 @@ class KotlinDefinitionsSearcher : QueryExecutor<PsiElement, DefinitionsScopedSea
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processPropertyImplementations(declaration: KtNamedDeclaration, scope: SearchScope, consumer: Processor<PsiElement>): Boolean {
|
private fun processPropertyImplementations(
|
||||||
|
declaration: KtNamedDeclaration,
|
||||||
|
scope: SearchScope,
|
||||||
|
consumer: Processor<PsiElement>
|
||||||
|
): Boolean {
|
||||||
return runReadAction {
|
return runReadAction {
|
||||||
processPropertyImplementationsMethods(declaration.toPossiblyFakeLightMethods(), scope, consumer)
|
processPropertyImplementationsMethods(declaration.toPossiblyFakeLightMethods(), scope, consumer)
|
||||||
}
|
}
|
||||||
@@ -146,7 +150,11 @@ class KotlinDefinitionsSearcher : QueryExecutor<PsiElement, DefinitionsScopedSea
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun processPropertyImplementationsMethods(accessors: Iterable<PsiMethod>, scope: SearchScope, consumer: Processor<PsiElement>): Boolean {
|
fun processPropertyImplementationsMethods(
|
||||||
|
accessors: Iterable<PsiMethod>,
|
||||||
|
scope: SearchScope,
|
||||||
|
consumer: Processor<PsiElement>
|
||||||
|
): Boolean {
|
||||||
return accessors.all { method ->
|
return accessors.all { method ->
|
||||||
method.forEachOverridingMethod(scope) { implementation ->
|
method.forEachOverridingMethod(scope) { implementation ->
|
||||||
if (isDelegated(implementation)) return@forEachOverridingMethod true
|
if (isDelegated(implementation)) return@forEachOverridingMethod true
|
||||||
|
|||||||
+9
-9
@@ -49,11 +49,11 @@ open class KotlinDirectInheritorsSearcher : QueryExecutorBase<PsiClass, DirectCl
|
|||||||
fun searchForTypeAliasesRecursively(typeName: String) {
|
fun searchForTypeAliasesRecursively(typeName: String) {
|
||||||
ProgressManager.checkCanceled()
|
ProgressManager.checkCanceled()
|
||||||
typeAliasIndex[typeName, project, scope].asSequence()
|
typeAliasIndex[typeName, project, scope].asSequence()
|
||||||
.map { it.name }
|
.map { it.name }
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
.filter { it !in names }
|
.filter { it !in names }
|
||||||
.onEach { names.add(it) }
|
.onEach { names.add(it) }
|
||||||
.forEach(::searchForTypeAliasesRecursively)
|
.forEach(::searchForTypeAliasesRecursively)
|
||||||
}
|
}
|
||||||
|
|
||||||
searchForTypeAliasesRecursively(name)
|
searchForTypeAliasesRecursively(name)
|
||||||
@@ -63,10 +63,10 @@ open class KotlinDirectInheritorsSearcher : QueryExecutorBase<PsiClass, DirectCl
|
|||||||
|
|
||||||
names.forEach { name ->
|
names.forEach { name ->
|
||||||
KotlinSuperClassIndex.getInstance()
|
KotlinSuperClassIndex.getInstance()
|
||||||
.get(name, baseClass.project, noLibrarySourceScope).asSequence()
|
.get(name, baseClass.project, noLibrarySourceScope).asSequence()
|
||||||
.mapNotNull { candidate -> candidate.toLightClassWithBuiltinMapping() ?: KtFakeLightClass(candidate) }
|
.mapNotNull { candidate -> candidate.toLightClassWithBuiltinMapping() ?: KtFakeLightClass(candidate) }
|
||||||
.filter { candidate -> candidate.isInheritor(baseClass, false) }
|
.filter { candidate -> candidate.isInheritor(baseClass, false) }
|
||||||
.forEach { candidate -> consumer.process(candidate) }
|
.forEach { candidate -> consumer.process(candidate) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+18
-11
@@ -63,22 +63,29 @@ class KotlinOverridingMethodReferenceSearcher : MethodUsagesSearcher() {
|
|||||||
val nameCandidates = getPropertyNamesCandidatesByAccessorName(Name.identifier(method.name))
|
val nameCandidates = getPropertyNamesCandidatesByAccessorName(Name.identifier(method.name))
|
||||||
for (name in nameCandidates) {
|
for (name in nameCandidates) {
|
||||||
p.optimizer.searchWord(
|
p.optimizer.searchWord(
|
||||||
name.asString(),
|
name.asString(),
|
||||||
searchScope,
|
searchScope,
|
||||||
UsageSearchContext.IN_CODE,
|
UsageSearchContext.IN_CODE,
|
||||||
true,
|
true,
|
||||||
method,
|
method,
|
||||||
getTextOccurrenceProcessor(arrayOf(method), containingClass, false)
|
getTextOccurrenceProcessor(arrayOf(method), containingClass, false)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getTextOccurrenceProcessor(methods: Array<out PsiMethod>,
|
override fun getTextOccurrenceProcessor(
|
||||||
aClass: PsiClass,
|
methods: Array<out PsiMethod>,
|
||||||
strictSignatureSearch: Boolean): MethodTextOccurrenceProcessor {
|
aClass: PsiClass,
|
||||||
return object: MethodTextOccurrenceProcessor(aClass, strictSignatureSearch, *methods) {
|
strictSignatureSearch: Boolean
|
||||||
override fun processInexactReference(ref: PsiReference, refElement: PsiElement?, method: PsiMethod, consumer: ExecutorProcessor<PsiReference>): Boolean {
|
): MethodTextOccurrenceProcessor {
|
||||||
|
return object : MethodTextOccurrenceProcessor(aClass, strictSignatureSearch, *methods) {
|
||||||
|
override fun processInexactReference(
|
||||||
|
ref: PsiReference,
|
||||||
|
refElement: PsiElement?,
|
||||||
|
method: PsiMethod,
|
||||||
|
consumer: ExecutorProcessor<PsiReference>
|
||||||
|
): Boolean {
|
||||||
val isGetter = JvmAbi.isGetterName(method.name)
|
val isGetter = JvmAbi.isGetterName(method.name)
|
||||||
|
|
||||||
fun isWrongAccessorReference(): Boolean {
|
fun isWrongAccessorReference(): Boolean {
|
||||||
|
|||||||
+6
-5
@@ -42,11 +42,12 @@ class KotlinPropertyAccessorsReferenceSearcher : QueryExecutorBase<PsiReference,
|
|||||||
val propertyName = propertyName(method) ?: return
|
val propertyName = propertyName(method) ?: return
|
||||||
|
|
||||||
queryParameters.optimizer!!.searchWord(
|
queryParameters.optimizer!!.searchWord(
|
||||||
propertyName,
|
propertyName,
|
||||||
onlyKotlinFiles,
|
onlyKotlinFiles,
|
||||||
UsageSearchContext.IN_CODE,
|
UsageSearchContext.IN_CODE,
|
||||||
true,
|
true,
|
||||||
method)
|
method
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun propertyName(method: PsiMethod): String? {
|
private fun propertyName(method: PsiMethod): String? {
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ import org.jetbrains.kotlin.compatibility.ExecutorProcessor
|
|||||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||||
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
|
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
|
||||||
|
|
||||||
data class KotlinTodoOccurrence(private val _file: PsiFile, private val _textRange: TextRange, private val _pattern: IndexPattern) : IndexPatternOccurrence {
|
data class KotlinTodoOccurrence(private val _file: PsiFile, private val _textRange: TextRange, private val _pattern: IndexPattern) :
|
||||||
|
IndexPatternOccurrence {
|
||||||
override fun getFile() = _file
|
override fun getFile() = _file
|
||||||
override fun getPattern() = _pattern
|
override fun getPattern() = _pattern
|
||||||
override fun getTextRange() = _textRange
|
override fun getTextRange() = _textRange
|
||||||
@@ -46,8 +47,8 @@ class KotlinTodoSearcher : QueryExecutorBase<IndexPatternOccurrence, IndexPatter
|
|||||||
val cacheManager = TodoCacheManager.SERVICE.getInstance(file.project)
|
val cacheManager = TodoCacheManager.SERVICE.getInstance(file.project)
|
||||||
val patternProvider = queryParameters.patternProvider
|
val patternProvider = queryParameters.patternProvider
|
||||||
val count = if (patternProvider != null) {
|
val count = if (patternProvider != null) {
|
||||||
cacheManager.getTodoCount(file.virtualFile, patternProvider)}
|
cacheManager.getTodoCount(file.virtualFile, patternProvider)
|
||||||
else
|
} else
|
||||||
cacheManager.getTodoCount(file.virtualFile, pattern)
|
cacheManager.getTodoCount(file.virtualFile, pattern)
|
||||||
if (count == 0) return
|
if (count == 0) return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user