Cleanup bunch workarounds made for 181

This commit is contained in:
Vyacheslav Gerasimov
2019-04-19 20:50:03 +03:00
parent 2bc11cbd58
commit 210ee681a4
63 changed files with 104 additions and 414 deletions
@@ -1,14 +0,0 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.compatibility
import com.intellij.util.Processor
/**
* Processor<T> till IDEA 181 and Processor<in T> since 182.
* BUNCH: 181
*/
typealias ExecutorProcessor<T> = Processor<in T>
@@ -21,11 +21,7 @@ import com.intellij.openapi.progress.ProgressIndicatorProvider
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.search.SearchScope import com.intellij.psi.search.SearchScope
import com.intellij.util.EmptyQuery import com.intellij.util.*
import com.intellij.util.Query
import com.intellij.util.QueryExecutor
import com.intellij.util.QueryFactory
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.psi.psiUtil.contains import org.jetbrains.kotlin.psi.psiUtil.contains
import java.util.* import java.util.*
@@ -43,7 +39,7 @@ abstract class DeclarationsSearch<T : PsiElement, R : DeclarationSearchRequest<T
init { init {
registerExecutor( registerExecutor(
object : QueryExecutorBase<T, R>(true) { object : QueryExecutorBase<T, R>(true) {
override fun processQuery(queryParameters: R, consumer: ExecutorProcessor<T>) { override fun processQuery(queryParameters: R, consumer: Processor<in T>) {
doSearch(queryParameters, consumer) doSearch(queryParameters, consumer)
} }
} }
@@ -54,7 +50,7 @@ abstract class DeclarationsSearch<T : PsiElement, R : DeclarationSearchRequest<T
super.registerExecutor(executor) super.registerExecutor(executor)
} }
protected abstract fun doSearch(request: R, consumer: ExecutorProcessor<T>) protected abstract fun doSearch(request: R, consumer: Processor<in T>)
protected open fun isApplicable(request: R): Boolean = true protected open fun isApplicable(request: R): Boolean = true
fun search(request: R): Query<T> = if (isApplicable(request)) createUniqueResultsQuery(request) else EmptyQuery.getEmptyQuery<T>() fun search(request: R): Query<T> = if (isApplicable(request)) createUniqueResultsQuery(request) else EmptyQuery.getEmptyQuery<T>()
@@ -97,7 +93,7 @@ interface HierarchyTraverser<T> {
} }
} }
fun <T : PsiElement> ExecutorProcessor<T>.consumeHierarchy(request: SearchRequestWithElement<T>, traverser: HierarchyTraverser<T>) { fun <T : PsiElement> Processor<in T>.consumeHierarchy(request: SearchRequestWithElement<T>, traverser: HierarchyTraverser<T>) {
traverser.forEach(request.originalElement) { element -> traverser.forEach(request.originalElement) { element ->
if (element in request.searchScope) { if (element in request.searchScope) {
process(element) process(element)
@@ -108,13 +104,13 @@ fun <T : PsiElement> ExecutorProcessor<T>.consumeHierarchy(request: SearchReques
abstract class HierarchySearch<T : PsiElement>( abstract class HierarchySearch<T : PsiElement>(
private val traverser: HierarchyTraverser<T> private val traverser: HierarchyTraverser<T>
) : DeclarationsSearch<T, HierarchySearchRequest<T>>() { ) : DeclarationsSearch<T, HierarchySearchRequest<T>>() {
protected open fun doSearchAll(request: HierarchySearchRequest<T>, consumer: ExecutorProcessor<T>) { protected open fun doSearchAll(request: HierarchySearchRequest<T>, consumer: Processor<in T>) {
consumer.consumeHierarchy(request, traverser) consumer.consumeHierarchy(request, traverser)
} }
protected abstract fun doSearchDirect(request: HierarchySearchRequest<T>, consumer: ExecutorProcessor<T>) protected abstract fun doSearchDirect(request: HierarchySearchRequest<T>, consumer: Processor<in T>)
override fun doSearch(request: HierarchySearchRequest<T>, consumer: ExecutorProcessor<T>) { override fun doSearch(request: HierarchySearchRequest<T>, consumer: Processor<in T>) {
if (request.searchDeeply) { if (request.searchDeeply) {
doSearchAll(request, consumer) doSearchAll(request, consumer)
} else { } else {
@@ -21,7 +21,6 @@ import com.intellij.util.Query
import org.jetbrains.kotlin.asJava.getRepresentativeLightMethod import org.jetbrains.kotlin.asJava.getRepresentativeLightMethod
import org.jetbrains.kotlin.asJava.toLightMethods import org.jetbrains.kotlin.asJava.toLightMethods
import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.asJava.unwrapped
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.isOverridable import org.jetbrains.kotlin.descriptors.isOverridable
@@ -96,7 +95,7 @@ object KotlinPsiMethodOverridersSearch : HierarchySearch<PsiMethod>(PsiMethodOve
override fun isApplicable(request: HierarchySearchRequest<PsiMethod>): Boolean = override fun isApplicable(request: HierarchySearchRequest<PsiMethod>): Boolean =
runReadAction { request.originalElement.isOverridableElement() } runReadAction { request.originalElement.isOverridableElement() }
override fun doSearchDirect(request: HierarchySearchRequest<PsiMethod>, consumer: ExecutorProcessor<PsiMethod>) { override fun doSearchDirect(request: HierarchySearchRequest<PsiMethod>, consumer: Processor<in PsiMethod>) {
searchDirectOverriders(request.originalElement).forEach { method -> consumer.process(method) } searchDirectOverriders(request.originalElement).forEach { method -> consumer.process(method) }
} }
} }
@@ -24,6 +24,7 @@ import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import com.intellij.psi.search.UsageSearchContext import com.intellij.psi.search.UsageSearchContext
import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch
import com.intellij.util.Processor
import com.intellij.util.containers.nullize import com.intellij.util.containers.nullize
import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.asJava.elements.KtLightField import org.jetbrains.kotlin.asJava.elements.KtLightField
@@ -33,7 +34,6 @@ import org.jetbrains.kotlin.asJava.elements.KtLightParameter
import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.namedUnwrappedElement
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.asJava.toLightElements import org.jetbrains.kotlin.asJava.toLightElements
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.search.* import org.jetbrains.kotlin.idea.search.*
@@ -77,13 +77,13 @@ class KotlinReferencesSearchParameters(
) : ReferencesSearch.SearchParameters(elementToSearch, scope, ignoreAccessScope, optimizer) ) : ReferencesSearch.SearchParameters(elementToSearch, scope, ignoreAccessScope, optimizer)
class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, ReferencesSearch.SearchParameters>() { class KotlinReferencesSearcher : QueryExecutorBase<PsiReference, ReferencesSearch.SearchParameters>() {
override fun processQuery(queryParameters: ReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) { override fun processQuery(queryParameters: ReferencesSearch.SearchParameters, consumer: Processor<in PsiReference>) {
val processor = QueryProcessor(queryParameters, consumer) val processor = QueryProcessor(queryParameters, consumer)
runReadAction { processor.processInReadAction() } runReadAction { processor.processInReadAction() }
processor.executeLongRunningTasks() processor.executeLongRunningTasks()
} }
private class QueryProcessor(val queryParameters: ReferencesSearch.SearchParameters, val consumer: ExecutorProcessor<PsiReference>) { private class QueryProcessor(val queryParameters: ReferencesSearch.SearchParameters, val consumer: Processor<in PsiReference>) {
private val kotlinOptions = (queryParameters as? KotlinReferencesSearchParameters)?.kotlinOptions ?: Empty private val kotlinOptions = (queryParameters as? KotlinReferencesSearchParameters)?.kotlinOptions ?: Empty
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiReference
import com.intellij.psi.PsiReferenceService import com.intellij.psi.PsiReferenceService
import com.intellij.psi.ReferenceRange import com.intellij.psi.ReferenceRange
import com.intellij.psi.search.RequestResultProcessor import com.intellij.psi.search.RequestResultProcessor
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference
import org.jetbrains.kotlin.idea.search.usagesSearch.isCallableOverrideUsage import org.jetbrains.kotlin.idea.search.usagesSearch.isCallableOverrideUsage
import org.jetbrains.kotlin.idea.search.usagesSearch.isExtensionOfDeclarationClassUsage import org.jetbrains.kotlin.idea.search.usagesSearch.isExtensionOfDeclarationClassUsage
@@ -38,7 +38,7 @@ class KotlinRequestResultProcessor(
) : RequestResultProcessor(unwrappedElement, originalElement, filter, options) { ) : RequestResultProcessor(unwrappedElement, originalElement, filter, options) {
private val referenceService = PsiReferenceService.getService() private val referenceService = PsiReferenceService.getService()
override fun processTextOccurrence(element: PsiElement, offsetInElement: Int, consumer: ExecutorProcessor<PsiReference>): Boolean { override fun processTextOccurrence(element: PsiElement, offsetInElement: Int, consumer: Processor<in PsiReference>): Boolean {
val references = if (element is KtDestructuringDeclaration) val references = if (element is KtDestructuringDeclaration)
element.entries.flatMap { referenceService.getReferences(it, PsiReferenceService.Hints.NO_HINTS) } element.entries.flatMap { referenceService.getReferences(it, PsiReferenceService.Hints.NO_HINTS) }
else else
@@ -34,7 +34,6 @@ import com.intellij.util.CommonProcessors
import com.intellij.util.indexing.FileBasedIndex import com.intellij.util.indexing.FileBasedIndex
import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.compat.psiSearchHelperInstance
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtNamedDeclaration import org.jetbrains.kotlin.psi.KtNamedDeclaration
@@ -103,7 +102,7 @@ fun SearchScope.excludeFileTypes(vararg fileTypes: FileType): SearchScope {
fun ReferencesSearch.SearchParameters.effectiveSearchScope(element: PsiElement): SearchScope { fun ReferencesSearch.SearchParameters.effectiveSearchScope(element: PsiElement): SearchScope {
if (element == elementToSearch) return effectiveSearchScope if (element == elementToSearch) return effectiveSearchScope
if (isIgnoreAccessScope) return scopeDeterminedByUser if (isIgnoreAccessScope) return scopeDeterminedByUser
val accessScope = psiSearchHelperInstance(element.project).getUseScope(element) val accessScope = PsiSearchHelper.getInstance(element.project).getUseScope(element)
return scopeDeterminedByUser.intersectWith(accessScope) return scopeDeterminedByUser.intersectWith(accessScope)
} }
@@ -126,7 +125,7 @@ fun PsiSearchHelper.isCheapEnoughToSearchConsideringOperators(
fun findScriptsWithUsages(declaration: KtNamedDeclaration): List<VirtualFile> { fun findScriptsWithUsages(declaration: KtNamedDeclaration): List<VirtualFile> {
val project = declaration.project val project = declaration.project
val scope = psiSearchHelperInstance(project).getUseScope(declaration) as? GlobalSearchScope val scope = PsiSearchHelper.getInstance(project).getUseScope(declaration) as? GlobalSearchScope
?: return emptyList() ?: return emptyList()
val name = declaration.name.takeIf { it?.isNotBlank() == true } ?: return emptyList() val name = declaration.name.takeIf { it?.isNotBlank() == true } ?: return emptyList()
@@ -35,7 +35,6 @@ import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.diagnostics.PsiDiagnosticUtils import org.jetbrains.kotlin.diagnostics.PsiDiagnosticUtils
import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinFileType
@@ -52,7 +51,6 @@ import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
import org.jetbrains.kotlin.idea.util.FuzzyType import org.jetbrains.kotlin.idea.util.FuzzyType
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.compat.psiSearchHelperInstance
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
import org.jetbrains.kotlin.load.java.sam.SingleAbstractMethodUtils import org.jetbrains.kotlin.load.java.sam.SingleAbstractMethodUtils
@@ -274,7 +272,7 @@ class ExpressionsOfTypeProcessor(
RequestResultProcessor(psiMember) { RequestResultProcessor(psiMember) {
val possibleClassesNames: Set<String> = runReadAction { classes.map { it.qualifiedName }.filterNotNullTo(HashSet()) } val possibleClassesNames: Set<String> = runReadAction { classes.map { it.qualifiedName }.filterNotNullTo(HashSet()) }
override fun processTextOccurrence(element: PsiElement, offsetInElement: Int, consumer: ExecutorProcessor<PsiReference>): Boolean { override fun processTextOccurrence(element: PsiElement, offsetInElement: Int, consumer: Processor<in PsiReference>): Boolean {
when (element) { when (element) {
is KtQualifiedExpression -> { is KtQualifiedExpression -> {
val selectorExpression = element.selectorExpression ?: return true val selectorExpression = element.selectorExpression ?: return true
@@ -370,7 +368,7 @@ class ExpressionsOfTypeProcessor(
} }
} }
psiSearchHelperInstance(project).processRequests(searchRequestCollector) { reference -> PsiSearchHelper.getInstance(project).processRequests(searchRequestCollector) { reference ->
if (reference.element.parents.any { it is KtImportDirective }) { if (reference.element.parents.any { it is KtImportDirective }) {
// Found declaration in import - process all file with an ordinal reference search // Found declaration in import - process all file with an ordinal reference search
val containingFile = reference.element.containingFile val containingFile = reference.element.containingFile
@@ -20,7 +20,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.lexer.KtSingleValueToken import org.jetbrains.kotlin.lexer.KtSingleValueToken
@@ -33,7 +33,7 @@ class BinaryOperatorReferenceSearcher(
targetFunction: PsiElement, targetFunction: PsiElement,
private val operationTokens: List<KtSingleValueToken>, private val operationTokens: List<KtSingleValueToken>,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
) : OperatorReferenceSearcher<KtBinaryExpression>( ) : OperatorReferenceSearcher<KtBinaryExpression>(
@@ -20,7 +20,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
class ContainsOperatorReferenceSearcher( class ContainsOperatorReferenceSearcher(
targetFunction: PsiElement, targetFunction: PsiElement,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
) : OperatorReferenceSearcher<KtOperationReferenceExpression>( ) : OperatorReferenceSearcher<KtOperationReferenceExpression>(
@@ -20,8 +20,8 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import com.intellij.util.Processor
import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
@@ -33,7 +33,7 @@ class DestructuringDeclarationReferenceSearcher(
targetDeclaration: PsiElement, targetDeclaration: PsiElement,
private val componentIndex: Int, private val componentIndex: Int,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
) : OperatorReferenceSearcher<KtDestructuringDeclaration>( ) : OperatorReferenceSearcher<KtDestructuringDeclaration>(
@@ -20,7 +20,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtArrayAccessReference import org.jetbrains.kotlin.idea.references.KtArrayAccessReference
import org.jetbrains.kotlin.idea.references.readWriteAccess import org.jetbrains.kotlin.idea.references.readWriteAccess
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
class IndexingOperatorReferenceSearcher( class IndexingOperatorReferenceSearcher(
targetFunction: PsiElement, targetFunction: PsiElement,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions, options: KotlinReferencesSearchOptions,
private val isSet: Boolean private val isSet: Boolean
@@ -21,7 +21,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtInvokeFunctionReference import org.jetbrains.kotlin.idea.references.KtInvokeFunctionReference
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.psi.KtCallExpression import org.jetbrains.kotlin.psi.KtCallExpression
@@ -36,7 +36,7 @@ import org.jetbrains.uast.convertOpt
class InvokeOperatorReferenceSearcher( class InvokeOperatorReferenceSearcher(
targetFunction: PsiElement, targetFunction: PsiElement,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
) : OperatorReferenceSearcher<KtCallExpression>(targetFunction, searchScope, consumer, optimizer, options, wordsToSearch = emptyList()) { ) : OperatorReferenceSearcher<KtCallExpression>(targetFunction, searchScope, consumer, optimizer, options, wordsToSearch = emptyList()) {
@@ -20,8 +20,8 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import com.intellij.util.Processor
import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.idea.references.KtForLoopInReference import org.jetbrains.kotlin.idea.references.KtForLoopInReference
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
class IteratorOperatorReferenceSearcher( class IteratorOperatorReferenceSearcher(
targetFunction: PsiElement, targetFunction: PsiElement,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
) : OperatorReferenceSearcher<KtForExpression>(targetFunction, searchScope, consumer, optimizer, options, wordsToSearch = listOf("in")) { ) : OperatorReferenceSearcher<KtForExpression>(targetFunction, searchScope, consumer, optimizer, options, wordsToSearch = listOf("in")) {
@@ -20,10 +20,10 @@ import com.intellij.openapi.progress.ProgressIndicatorProvider
import com.intellij.openapi.progress.util.ProgressWrapper import com.intellij.openapi.progress.util.ProgressWrapper
import com.intellij.psi.* import com.intellij.psi.*
import com.intellij.psi.search.* import com.intellij.psi.search.*
import com.intellij.util.Processor
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.namedUnwrappedElement
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinFileType
@@ -56,7 +56,7 @@ import java.util.*
abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>( abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
protected val targetDeclaration: PsiElement, protected val targetDeclaration: PsiElement,
private val searchScope: SearchScope, private val searchScope: SearchScope,
private val consumer: ExecutorProcessor<PsiReference>, private val consumer: Processor<in PsiReference>,
private val optimizer: SearchRequestCollector, private val optimizer: SearchRequestCollector,
private val options: KotlinReferencesSearchOptions, private val options: KotlinReferencesSearchOptions,
private val wordsToSearch: List<String> private val wordsToSearch: List<String>
@@ -92,7 +92,7 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
fun create( fun create(
declaration: PsiElement, declaration: PsiElement,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
): OperatorReferenceSearcher<*>? { ): OperatorReferenceSearcher<*>? {
@@ -107,7 +107,7 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
private fun createInReadAction( private fun createInReadAction(
declaration: PsiElement, declaration: PsiElement,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
): OperatorReferenceSearcher<*>? { ): OperatorReferenceSearcher<*>? {
@@ -132,7 +132,7 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
private fun createInReadAction( private fun createInReadAction(
declaration: PsiElement, declaration: PsiElement,
name: Name, name: Name,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions, options: KotlinReferencesSearchOptions,
searchScope: SearchScope searchScope: SearchScope
@@ -20,7 +20,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtPropertyDelegationMethodsReference import org.jetbrains.kotlin.idea.references.KtPropertyDelegationMethodsReference
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.psi.KtElement import org.jetbrains.kotlin.psi.KtElement
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
class PropertyDelegationOperatorReferenceSearcher( class PropertyDelegationOperatorReferenceSearcher(
targetFunction: PsiElement, targetFunction: PsiElement,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
) : OperatorReferenceSearcher<KtPropertyDelegate>(targetFunction, searchScope, consumer, optimizer, options, wordsToSearch = listOf("by")) { ) : OperatorReferenceSearcher<KtPropertyDelegate>(targetFunction, searchScope, consumer, optimizer, options, wordsToSearch = listOf("by")) {
@@ -20,7 +20,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.SearchRequestCollector import com.intellij.psi.search.SearchRequestCollector
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.lexer.KtSingleValueToken import org.jetbrains.kotlin.lexer.KtSingleValueToken
@@ -33,7 +33,7 @@ class UnaryOperatorReferenceSearcher(
targetFunction: PsiElement, targetFunction: PsiElement,
private val operationToken: KtSingleValueToken, private val operationToken: KtSingleValueToken,
searchScope: SearchScope, searchScope: SearchScope,
consumer: ExecutorProcessor<PsiReference>, consumer: Processor<in PsiReference>,
optimizer: SearchRequestCollector, optimizer: SearchRequestCollector,
options: KotlinReferencesSearchOptions options: KotlinReferencesSearchOptions
) : OperatorReferenceSearcher<KtUnaryExpression>( ) : OperatorReferenceSearcher<KtUnaryExpression>(
@@ -45,10 +45,3 @@ fun <T> Project.executeCommand(name: String, groupId: Any? = null, command: () -
@Suppress("USELESS_CAST") @Suppress("USELESS_CAST")
return result as T return result as T
} }
/**
* ProgressManager.getProgressIndicator() is nullable in 181 and dynamic again in 182
* BUNCH: 181
*/
@Suppress("IncompatibleAPI")
val ProgressManager.progressIndicatorNullable: ProgressIndicator? get() = progressIndicator
@@ -1,15 +0,0 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.util.compat
import com.intellij.openapi.project.Project
import com.intellij.psi.search.PsiSearchHelper
// BUNCH: 181
@Suppress("IncompatibleAPI", "MissingRecentApi")
fun psiSearchHelperInstance(project: Project): PsiSearchHelper {
return PsiSearchHelper.getInstance(project)
}
@@ -49,7 +49,6 @@ import org.jetbrains.kotlin.idea.refactoring.j2k
import org.jetbrains.kotlin.idea.refactoring.j2kText import org.jetbrains.kotlin.idea.refactoring.j2kText
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.versions.getKotlinJvmRuntimeMarkerClass import org.jetbrains.kotlin.idea.versions.getKotlinJvmRuntimeMarkerClass
import org.jetbrains.kotlin.j2k.AfterConversionPass import org.jetbrains.kotlin.j2k.AfterConversionPass
@@ -82,7 +81,7 @@ class KotlinCodeFragmentFactory : CodeFragmentFactory() {
semaphore.down() semaphore.down()
val nameRef = AtomicReference<KotlinType>() val nameRef = AtomicReference<KotlinType>()
val worker = object : KotlinRuntimeTypeEvaluator( val worker = object : KotlinRuntimeTypeEvaluator(
null, expression, debuggerContext, ProgressManager.getInstance().progressIndicatorNullable!! null, expression, debuggerContext, ProgressManager.getInstance().progressIndicator!!
) { ) {
override fun typeCalculationFinished(type: KotlinType?) { override fun typeCalculationFinished(type: KotlinType?) {
nameRef.set(type) nameRef.set(type)
@@ -53,7 +53,6 @@ import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.runInReadActionWithWriteActionPriority import org.jetbrains.kotlin.idea.runInReadActionWithWriteActionPriority
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
@@ -111,7 +110,7 @@ class KotlinLanguageInjector(
return computedInjection return computedInjection
} }
if (ApplicationManager.getApplication().isReadAccessAllowed && ProgressManager.getInstance().progressIndicatorNullable == null) { if (ApplicationManager.getApplication().isReadAccessAllowed && ProgressManager.getInstance().progressIndicator == null) {
// The action cannot be canceled by caller and by internal checkCanceled() calls. // The action cannot be canceled by caller and by internal checkCanceled() calls.
// Force creating new indicator that is canceled on write action start, otherwise there might be lags in typing. // Force creating new indicator that is canceled on write action start, otherwise there might be lags in typing.
runInReadActionWithWriteActionPriority(::computeAndCache) ?: kotlinCachedInjection?.baseInjection ?: ABSENT_KOTLIN_INJECTION runInReadActionWithWriteActionPriority(::computeAndCache) ?: kotlinCachedInjection?.baseInjection ?: ABSENT_KOTLIN_INJECTION
@@ -57,7 +57,7 @@ class KotlinDecompilerServiceImpl : KotlinDecompilerService {
val decompiler = BaseDecompiler(bytecodeProvider, resultSaver, options, IdeaLogger()) val decompiler = BaseDecompiler(bytecodeProvider, resultSaver, options, IdeaLogger())
for (path in bytecodeMap.keys) { for (path in bytecodeMap.keys) {
decompiler.addSpaceEx(path, true) decompiler.addSource(path)
} }
decompiler.decompileContext() decompiler.decompileContext()
return resultSaver.resultText return resultSaver.resultText
@@ -1,22 +0,0 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.internal
import org.jetbrains.java.decompiler.main.decompiler.BaseDecompiler
import java.io.File
/**
* `addSpace` method is deprecated in 182. `addSource` and `addLibrary` were introduced instead.
* BUNCH: 181
*/
@Suppress("IncompatibleAPI")
fun BaseDecompiler.addSpaceEx(file: File, isOwn: Boolean) {
if (isOwn) {
addSource(file)
} else {
addLibrary(file)
}
}
@@ -273,16 +273,11 @@ class KotlinPluginUpdater(private val propertiesComponent: PropertiesComponent)
} }
if (prepareResult) { if (prepareResult) {
val pluginDescriptor = pluginDownloader.descriptor installed = true
// BUNCH: 181 Not null since 182. pluginDownloader.install()
@Suppress("SENSELESS_COMPARISON")
if (pluginDescriptor != null) {
installed = true
pluginDownloader.install()
ApplicationManager.getApplication().invokeLater { ApplicationManager.getApplication().invokeLater {
PluginManagerMain.notifyPluginsUpdated(null) PluginManagerMain.notifyPluginsUpdated(null)
}
} }
} }
@@ -48,7 +48,6 @@ import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices
import org.jetbrains.kotlin.idea.j2k.JavaToKotlinConverterFactory import org.jetbrains.kotlin.idea.j2k.JavaToKotlinConverterFactory
import org.jetbrains.kotlin.idea.refactoring.toPsiFile import org.jetbrains.kotlin.idea.refactoring.toPsiFile
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.isRunningInCidrIde import org.jetbrains.kotlin.idea.util.isRunningInCidrIde
import org.jetbrains.kotlin.j2k.ConverterSettings import org.jetbrains.kotlin.j2k.ConverterSettings
@@ -122,7 +121,7 @@ class JavaToKotlinAction : AnAction() {
converterResult = converter.filesToKotlin( converterResult = converter.filesToKotlin(
javaFiles, javaFiles,
JavaToKotlinConverterFactory.createPostProcessor(formatCode = true), JavaToKotlinConverterFactory.createPostProcessor(formatCode = true),
progress = ProgressManager.getInstance().progressIndicatorNullable!! progress = ProgressManager.getInstance().progressIndicator!!
) )
} }
@@ -143,7 +142,7 @@ class JavaToKotlinAction : AnAction() {
{ {
runReadAction { runReadAction {
externalCodeUpdate = converterResult!!.externalCodeProcessing!!.prepareWriteOperation( externalCodeUpdate = converterResult!!.externalCodeProcessing!!.prepareWriteOperation(
ProgressManager.getInstance().progressIndicatorNullable!! ProgressManager.getInstance().progressIndicator!!
) )
} }
}, },
@@ -48,7 +48,6 @@ import org.jetbrains.kotlin.idea.core.overrideImplement.generateUnsupportedOrSup
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.setupEditorSelection import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.setupEditorSelection
import org.jetbrains.kotlin.idea.refactoring.j2k import org.jetbrains.kotlin.idea.refactoring.j2k
import org.jetbrains.kotlin.idea.testIntegration.findSuitableFrameworks import org.jetbrains.kotlin.idea.testIntegration.findSuitableFrameworks
import org.jetbrains.kotlin.idea.util.PopupChooserBuilderWrapper
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
@@ -75,7 +74,7 @@ abstract class KotlinGenerateTestSupportActionBase(
val list = JBList<TestFramework>(*frameworks.toTypedArray()) val list = JBList<TestFramework>(*frameworks.toTypedArray())
list.cellRenderer = TestFrameworkListCellRenderer() list.cellRenderer = TestFrameworkListCellRenderer()
PopupChooserBuilderWrapper<TestFramework>(list) PopupChooserBuilder<TestFramework>(list)
.setFilteringEnabled { (it as TestFramework).name } .setFilteringEnabled { (it as TestFramework).name }
.setTitle("Choose Framework") .setTitle("Choose Framework")
.setItemChoosenCallback { consumer(list.selectedValue as TestFramework) } .setItemChoosenCallback { consumer(list.selectedValue as TestFramework) }
@@ -30,7 +30,6 @@ import com.intellij.openapi.vfs.VirtualFileVisitor
import com.intellij.psi.PsiManager import com.intellij.psi.PsiManager
import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch
import org.jetbrains.kotlin.idea.search.usagesSearch.ExpressionsOfTypeProcessor import org.jetbrains.kotlin.idea.search.usagesSearch.ExpressionsOfTypeProcessor
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.KtClass import org.jetbrains.kotlin.psi.KtClass
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
@@ -58,7 +57,7 @@ class CheckComponentsUsageSearchAction : AnAction() {
.filter { it.isData() } .filter { it.isData() }
.toList() .toList()
val progressIndicator = ProgressManager.getInstance().progressIndicatorNullable val progressIndicator = ProgressManager.getInstance().progressIndicator
for ((i, dataClass) in dataClasses.withIndex()) { for ((i, dataClass) in dataClasses.withIndex()) {
progressIndicator?.text = "Checking data class ${i + 1} of ${dataClasses.size}..." progressIndicator?.text = "Checking data class ${i + 1} of ${dataClasses.size}..."
progressIndicator?.text2 = dataClass.fqName?.asString() ?: "" progressIndicator?.text2 = dataClass.fqName?.asString() ?: ""
@@ -39,7 +39,6 @@ import org.jetbrains.kotlin.builtins.getReturnTypeFromFunctionType
import org.jetbrains.kotlin.builtins.isFunctionType import org.jetbrains.kotlin.builtins.isFunctionType
import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
@@ -63,7 +62,7 @@ class FindImplicitNothingAction : AnAction() {
} }
private fun find(files: Collection<KtFile>, project: Project) { private fun find(files: Collection<KtFile>, project: Project) {
val progressIndicator = ProgressManager.getInstance().progressIndicatorNullable val progressIndicator = ProgressManager.getInstance().progressIndicator
val found = ArrayList<KtCallExpression>() val found = ArrayList<KtCallExpression>()
for ((i, file) in files.withIndex()) { for ((i, file) in files.withIndex()) {
progressIndicator?.text = "Scanning files: $i of ${files.size} file. ${found.size} occurrences found" progressIndicator?.text = "Scanning files: $i of ${files.size} file. ${found.size} occurrences found"
@@ -30,7 +30,6 @@ import com.intellij.psi.PsiModifier
import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.load.java.isFromJava import org.jetbrains.kotlin.load.java.isFromJava
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
@@ -56,7 +55,7 @@ class SearchNotPropertyCandidatesAction : AnAction() {
ProgressManager.getInstance().runProcessWithProgressSynchronously( ProgressManager.getInstance().runProcessWithProgressSynchronously(
{ {
runReadAction { runReadAction {
ProgressManager.getInstance().progressIndicatorNullable!!.isIndeterminate = true ProgressManager.getInstance().progressIndicator!!.isIndeterminate = true
processAllDescriptors(packageDesc, project) processAllDescriptors(packageDesc, project)
} }
}, },
@@ -29,7 +29,6 @@ import com.intellij.util.IncorrectOperationException
import com.intellij.util.SequentialModalProgressTask import com.intellij.util.SequentialModalProgressTask
import com.intellij.util.SequentialTask import com.intellij.util.SequentialTask
import org.jetbrains.kotlin.idea.inspections.KotlinUnusedImportInspection import org.jetbrains.kotlin.idea.inspections.KotlinUnusedImportInspection
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtImportDirective import org.jetbrains.kotlin.psi.KtImportDirective
@@ -94,7 +93,7 @@ class KotlinOptimizeImportsRefactoringHelper : RefactoringHelper<Set<KtFile>> {
val unusedImports = LinkedHashSet<SmartPsiElementPointer<KtImportDirective>>() val unusedImports = LinkedHashSet<SmartPsiElementPointer<KtImportDirective>>()
val findRedundantImports = { val findRedundantImports = {
DumbService.getInstance(project).runReadActionInSmartMode { DumbService.getInstance(project).runReadActionInSmartMode {
val progressIndicator = ProgressManager.getInstance().progressIndicatorNullable val progressIndicator = ProgressManager.getInstance().progressIndicator
val fileCount = operationData.size val fileCount = operationData.size
for ((i, file) in operationData.withIndex()) { for ((i, file) in operationData.withIndex()) {
if (!file.isValid) continue if (!file.isValid) continue
@@ -15,6 +15,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.PsiSearchHelper
import com.intellij.psi.search.PsiSearchHelper.SearchCostResult.FEW_OCCURRENCES import com.intellij.psi.search.PsiSearchHelper.SearchCostResult.FEW_OCCURRENCES
import com.intellij.psi.search.PsiSearchHelper.SearchCostResult.ZERO_OCCURRENCES import com.intellij.psi.search.PsiSearchHelper.SearchCostResult.ZERO_OCCURRENCES
import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch
@@ -24,7 +25,6 @@ import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.search.isCheapEnoughToSearchConsideringOperators import org.jetbrains.kotlin.idea.search.isCheapEnoughToSearchConsideringOperators
import org.jetbrains.kotlin.idea.search.usagesSearch.getAccessorNames import org.jetbrains.kotlin.idea.search.usagesSearch.getAccessorNames
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
import org.jetbrains.kotlin.idea.util.compat.psiSearchHelperInstance
import org.jetbrains.kotlin.lexer.KtTokens.* import org.jetbrains.kotlin.lexer.KtTokens.*
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
@@ -83,7 +83,7 @@ class CanBeParameterInspection : AbstractKotlinInspection() {
val useScope = parameter.useScope val useScope = parameter.useScope
val restrictedScope = if (useScope is GlobalSearchScope) { val restrictedScope = if (useScope is GlobalSearchScope) {
val psiSearchHelper = psiSearchHelperInstance(parameter.project) val psiSearchHelper = PsiSearchHelper.getInstance(parameter.project)
for (accessorName in parameter.getAccessorNames()) { for (accessorName in parameter.getAccessorNames()) {
when (psiSearchHelper.isCheapEnoughToSearchConsideringOperators(accessorName, useScope, null, null)) { when (psiSearchHelper.isCheapEnoughToSearchConsideringOperators(accessorName, useScope, null, null)) {
ZERO_OCCURRENCES -> { ZERO_OCCURRENCES -> {
@@ -48,7 +48,6 @@ import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
import org.jetbrains.kotlin.idea.imports.OptimizedImportsBuilder import org.jetbrains.kotlin.idea.imports.OptimizedImportsBuilder
import org.jetbrains.kotlin.idea.imports.importableFqName import org.jetbrains.kotlin.idea.imports.importableFqName
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtCodeFragment import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
@@ -149,7 +148,7 @@ class KotlinUnusedImportInspection : AbstractKotlinInspection() {
val optimizedImports = KotlinImportOptimizer.prepareOptimizedImports(file, data) ?: return // return if already optimized val optimizedImports = KotlinImportOptimizer.prepareOptimizedImports(file, data) ?: return // return if already optimized
// unwrap progress indicator // unwrap progress indicator
val progress = generateSequence(ProgressManager.getInstance().progressIndicatorNullable) { val progress = generateSequence(ProgressManager.getInstance().progressIndicator) {
(it as? ProgressWrapper)?.originalProgressIndicator (it as? ProgressWrapper)?.originalProgressIndicator
}.last() as DaemonProgressIndicator }.last() as DaemonProgressIndicator
val highlightingSession = HighlightingSessionImpl.getHighlightingSession(file, progress) val highlightingSession = HighlightingSessionImpl.getHighlightingSession(file, progress)
@@ -43,7 +43,6 @@ import org.jetbrains.kotlin.idea.search.isCheapEnoughToSearchConsideringOperator
import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
import org.jetbrains.kotlin.idea.util.compat.psiSearchHelperInstance
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.psi.psiUtil.*
@@ -103,7 +102,7 @@ class MemberVisibilityCanBePrivateInspection : AbstractKotlinInspection() {
// properties can be referred by component1/component2, which is too expensive to search, don't analyze them // properties can be referred by component1/component2, which is too expensive to search, don't analyze them
if (declaration is KtParameter && declaration.dataClassComponentFunction() != null) return false if (declaration is KtParameter && declaration.dataClassComponentFunction() != null) return false
val psiSearchHelper = psiSearchHelperInstance(declaration.project) val psiSearchHelper = PsiSearchHelper.getInstance(declaration.project)
val useScope = declaration.useScope val useScope = declaration.useScope
val name = declaration.name ?: return false val name = declaration.name ?: return false
val restrictedScope = if (useScope is GlobalSearchScope) { val restrictedScope = if (useScope is GlobalSearchScope) {
@@ -24,6 +24,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.PsiElementVisitor import com.intellij.psi.PsiElementVisitor
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.PsiSearchHelper
import com.intellij.psi.search.PsiSearchHelper.SearchCostResult import com.intellij.psi.search.PsiSearchHelper.SearchCostResult
import com.intellij.psi.search.PsiSearchHelper.SearchCostResult.* import com.intellij.psi.search.PsiSearchHelper.SearchCostResult.*
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
@@ -63,7 +64,6 @@ import org.jetbrains.kotlin.idea.search.usagesSearch.getAccessorNames
import org.jetbrains.kotlin.idea.search.usagesSearch.getClassNameForCompanionObject import org.jetbrains.kotlin.idea.search.usagesSearch.getClassNameForCompanionObject
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
import org.jetbrains.kotlin.idea.util.compat.psiSearchHelperInstance
import org.jetbrains.kotlin.idea.util.hasActualsFor import org.jetbrains.kotlin.idea.util.hasActualsFor
import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi import org.jetbrains.kotlin.js.resolve.diagnostics.findPsi
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
@@ -123,7 +123,7 @@ class UnusedSymbolInspection : AbstractKotlinInspection() {
private fun isCheapEnoughToSearchUsages(declaration: KtNamedDeclaration): SearchCostResult { private fun isCheapEnoughToSearchUsages(declaration: KtNamedDeclaration): SearchCostResult {
val project = declaration.project val project = declaration.project
val psiSearchHelper = psiSearchHelperInstance(project) val psiSearchHelper = PsiSearchHelper.getInstance(project)
val usedScripts = findScriptsWithUsages(declaration) val usedScripts = findScriptsWithUsages(declaration)
if (usedScripts.isNotEmpty()) { if (usedScripts.isNotEmpty()) {
@@ -259,7 +259,7 @@ class UnusedSymbolInspection : AbstractKotlinInspection() {
private fun hasNonTrivialUsages(declaration: KtNamedDeclaration, descriptor: DeclarationDescriptor? = null): Boolean { private fun hasNonTrivialUsages(declaration: KtNamedDeclaration, descriptor: DeclarationDescriptor? = null): Boolean {
val project = declaration.project val project = declaration.project
val psiSearchHelper = psiSearchHelperInstance(project) val psiSearchHelper = PsiSearchHelper.getInstance(project)
val useScope = psiSearchHelper.getUseScope(declaration) val useScope = psiSearchHelper.getUseScope(declaration)
val restrictedScope = if (useScope is GlobalSearchScope) { val restrictedScope = if (useScope is GlobalSearchScope) {
@@ -41,7 +41,6 @@ import org.jetbrains.kotlin.idea.references.KtSimpleReference
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
import org.jetbrains.kotlin.idea.search.usagesSearch.searchReferencesOrMethodReferences import org.jetbrains.kotlin.idea.search.usagesSearch.searchReferencesOrMethodReferences
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
@@ -187,7 +186,7 @@ class ConvertFunctionTypeParameterToReceiverIntention : SelfTargetingRangeIntent
runReadAction { runReadAction {
val progressStep = 1.0/callables.size val progressStep = 1.0/callables.size
for ((i, callable) in callables.withIndex()) { for ((i, callable) in callables.withIndex()) {
ProgressManager.getInstance().progressIndicatorNullable!!.fraction = (i + 1) * progressStep ProgressManager.getInstance().progressIndicator!!.fraction = (i + 1) * progressStep
if (callable !is PsiNamedElement) continue if (callable !is PsiNamedElement) continue
@@ -38,7 +38,6 @@ import org.jetbrains.kotlin.idea.references.KtSimpleReference
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
import org.jetbrains.kotlin.idea.search.usagesSearch.searchReferencesOrMethodReferences import org.jetbrains.kotlin.idea.search.usagesSearch.searchReferencesOrMethodReferences
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.psi.psiUtil.*
@@ -126,7 +125,7 @@ class ConvertFunctionTypeReceiverToParameterIntention : SelfTargetingRangeIntent
runReadAction { runReadAction {
val progressStep = 1.0/callables.size val progressStep = 1.0/callables.size
for ((i, callable) in callables.withIndex()) { for ((i, callable) in callables.withIndex()) {
ProgressManager.getInstance().progressIndicatorNullable!!.fraction = (i + 1) * progressStep ProgressManager.getInstance().progressIndicator!!.fraction = (i + 1) * progressStep
if (callable !is KtFunction) continue if (callable !is KtFunction) continue
@@ -34,7 +34,6 @@ import org.jetbrains.kotlin.idea.references.KtReference
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.hasJvmFieldAnnotation import org.jetbrains.kotlin.idea.util.hasJvmFieldAnnotation
import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.incremental.components.NoLookupLocation
@@ -97,7 +96,7 @@ class ConvertPropertyToFunctionIntention : SelfTargetingIntention<KtProperty>(Kt
runReadAction { runReadAction {
val progressStep = 1.0 / callables.size val progressStep = 1.0 / callables.size
for ((i, callable) in callables.withIndex()) { for ((i, callable) in callables.withIndex()) {
ProgressManager.getInstance().progressIndicatorNullable!!.fraction = (i + 1) * progressStep ProgressManager.getInstance().progressIndicator!!.fraction = (i + 1) * progressStep
if (callable !is PsiNamedElement) continue if (callable !is PsiNamedElement) continue
@@ -37,15 +37,14 @@ import org.jetbrains.kotlin.asJava.toLightMethods
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.caches.resolve.util.getJavaClassDescriptor
import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideImplementMembersHandler import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideImplementMembersHandler
import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject
import org.jetbrains.kotlin.idea.refactoring.isAbstract import org.jetbrains.kotlin.idea.refactoring.isAbstract
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest
import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors
import org.jetbrains.kotlin.idea.util.PopupChooserBuilderWrapper
import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.idea.util.application.executeCommand
import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
@@ -214,7 +213,7 @@ abstract class ImplementAbstractMemberIntentionBase :
selectionMode = ListSelectionModel.MULTIPLE_INTERVAL_SELECTION selectionMode = ListSelectionModel.MULTIPLE_INTERVAL_SELECTION
cellRenderer = renderer cellRenderer = renderer
} }
val builder = PopupChooserBuilderWrapper<PsiElement>(list) val builder = PopupChooserBuilder<PsiElement>(list)
renderer.installSpeedSearch(builder) renderer.installSpeedSearch(builder)
builder builder
.setTitle(CodeInsightBundle.message("intention.implement.abstract.method.class.chooser.title")) .setTitle(CodeInsightBundle.message("intention.implement.abstract.method.class.chooser.title"))
@@ -16,14 +16,13 @@
package org.jetbrains.kotlin.idea.j2k package org.jetbrains.kotlin.idea.j2k
import com.intellij.codeInspection.dataFlow.DfaUtil
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiVariable import com.intellij.psi.PsiVariable
import org.jetbrains.kotlin.idea.util.compat.dfaCheckNullability
import org.jetbrains.kotlin.idea.util.compat.dfaInferMethodNullability
import org.jetbrains.kotlin.j2k.* import org.jetbrains.kotlin.j2k.*
import org.jetbrains.kotlin.j2k.ast.Nullability import org.jetbrains.kotlin.j2k.ast.Nullability
import org.jetbrains.kotlin.idea.util.compat.Nullability as IntellijNullability import com.intellij.codeInsight.Nullability as IntellijNullability
object IdeaJavaToKotlinServices : JavaToKotlinConverterServices { object IdeaJavaToKotlinServices : JavaToKotlinConverterServices {
override val referenceSearcher: ReferenceSearcher override val referenceSearcher: ReferenceSearcher
@@ -48,10 +47,10 @@ object IdeaSuperMethodSearcher : SuperMethodsSearcher {
private object IdeaJavaDataFlowAnalyzerFacade : JavaDataFlowAnalyzerFacade { private object IdeaJavaDataFlowAnalyzerFacade : JavaDataFlowAnalyzerFacade {
override fun variableNullability(variable: PsiVariable, context: PsiElement): Nullability = override fun variableNullability(variable: PsiVariable, context: PsiElement): Nullability =
dfaCheckNullability(variable, context).toJ2KNullability() DfaUtil.checkNullability(variable, context).toJ2KNullability()
override fun methodNullability(method: PsiMethod): Nullability = override fun methodNullability(method: PsiMethod): Nullability =
dfaInferMethodNullability(method).toJ2KNullability() DfaUtil.inferMethodNullability(method).toJ2KNullability()
private fun IntellijNullability.toJ2KNullability() = when (this) { private fun IntellijNullability.toJ2KNullability() = when (this) {
IntellijNullability.UNKNOWN -> Nullability.Default IntellijNullability.UNKNOWN -> Nullability.Default
@@ -33,7 +33,6 @@ import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest
import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.idea.util.application.runWriteAction
import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.incremental.components.NoLookupLocation
@@ -73,7 +72,7 @@ class ChangeSuspendInHierarchyFix(
private fun findAllFunctionToProcess(project: Project): Set<KtNamedFunction> { private fun findAllFunctionToProcess(project: Project): Set<KtNamedFunction> {
val result = LinkedHashSet<KtNamedFunction>() val result = LinkedHashSet<KtNamedFunction>()
val progressIndicator = ProgressManager.getInstance().progressIndicatorNullable!! val progressIndicator = ProgressManager.getInstance().progressIndicator!!
val function = element ?: return emptySet() val function = element ?: return emptySet()
val functionDescriptor = function.unsafeResolveToDescriptor() as FunctionDescriptor val functionDescriptor = function.unsafeResolveToDescriptor() as FunctionDescriptor
@@ -28,10 +28,7 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.JavaProjectRootsUtil import com.intellij.openapi.roots.JavaProjectRootsUtil
import com.intellij.openapi.ui.DialogWrapper import com.intellij.openapi.ui.DialogWrapper
import com.intellij.openapi.ui.Messages import com.intellij.openapi.ui.Messages
import com.intellij.openapi.ui.popup.JBPopup import com.intellij.openapi.ui.popup.*
import com.intellij.openapi.ui.popup.JBPopupAdapter
import com.intellij.openapi.ui.popup.JBPopupFactory
import com.intellij.openapi.ui.popup.LightweightWindowEvent
import com.intellij.openapi.util.Pass import com.intellij.openapi.util.Pass
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.util.text.StringUtil
@@ -272,7 +269,7 @@ fun <T, E : PsiElement> getPsiElementPopup(
} }
} }
return with(PopupChooserBuilderWrapper<E>(list)) { return with(PopupChooserBuilder<E>(list)) {
title?.let { setTitle(it) } title?.let { setTitle(it) }
renderer.installSpeedSearch(this, true) renderer.installSpeedSearch(this, true)
setItemChoosenCallback { setItemChoosenCallback {
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.KotlinDirecto
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.analyzeConflictsInFile import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.analyzeConflictsInFile
import org.jetbrains.kotlin.idea.search.projectScope import org.jetbrains.kotlin.idea.search.projectScope
import org.jetbrains.kotlin.idea.stubindex.KotlinExactPackagesIndex import org.jetbrains.kotlin.idea.stubindex.KotlinExactPackagesIndex
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
@@ -74,7 +73,7 @@ class KotlinAwareDelegatingMoveDestination(
} }
filesToProcess.flatMap {it.declarations}.forEach { it.accept(extraElementCollector) } filesToProcess.flatMap {it.declarations}.forEach { it.accept(extraElementCollector) }
val progressIndicator = ProgressManager.getInstance().progressIndicatorNullable!! val progressIndicator = ProgressManager.getInstance().progressIndicator!!
progressIndicator.pushState() progressIndicator.pushState()
val extraUsages = ArrayList<UsageInfo>() val extraUsages = ArrayList<UsageInfo>()
@@ -33,7 +33,6 @@ import org.jetbrains.kotlin.idea.refactoring.invokeOnceOnCommandFinish
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.KotlinDirectoryMoveTarget import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.KotlinDirectoryMoveTarget
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.MoveKotlinDeclarationsProcessor
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.analyzeConflictsInFile import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.analyzeConflictsInFile
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
@@ -86,7 +85,7 @@ class KotlinMoveDirectoryWithClassesHelper : MoveDirectoryWithClassesHelper() {
for ((index, usageInfo) in infos.withIndex()) { for ((index, usageInfo) in infos.withIndex()) {
if (usageInfo !is FileUsagesWrapper) continue if (usageInfo !is FileUsagesWrapper) continue
ProgressManager.getInstance().progressIndicatorNullable?.text2 = "Processing ${usageInfo.psiFile.name}" ProgressManager.getInstance().progressIndicator?.text2 = "Processing ${usageInfo.psiFile.name}"
runReadAction { runReadAction {
analyzeConflictsInFile(usageInfo.psiFile, usageInfo.usages, moveTarget, files, conflicts) { analyzeConflictsInFile(usageInfo.psiFile, usageInfo.usages, moveTarget, files, conflicts) {
@@ -43,7 +43,6 @@ import org.jetbrains.kotlin.idea.refactoring.fqName.isImported
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference.ShorteningMode import org.jetbrains.kotlin.idea.references.KtSimpleNameReference.ShorteningMode
import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.util.application.progressIndicatorNullable
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
@@ -474,7 +473,7 @@ fun postProcessMoveUsages(
val nonCodeUsages = ArrayList<NonCodeUsageInfo>() val nonCodeUsages = ArrayList<NonCodeUsageInfo>()
val progressStep = 1.0/sortedUsages.size val progressStep = 1.0/sortedUsages.size
val progressIndicator = ProgressManager.getInstance().progressIndicatorNullable val progressIndicator = ProgressManager.getInstance().progressIndicator
progressIndicator?.text = "Updating usages..." progressIndicator?.text = "Updating usages..."
usageLoop@ for ((i, usage) in sortedUsages.withIndex()) { usageLoop@ for ((i, usage) in sortedUsages.withIndex()) {
progressIndicator?.fraction = (i + 1) * progressStep progressIndicator?.fraction = (i + 1) * progressStep
@@ -24,7 +24,7 @@ import com.intellij.psi.PsiReference
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
import com.intellij.psi.util.PsiUtil import com.intellij.psi.util.PsiUtil
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
@@ -39,7 +39,7 @@ class DefaultAnnotationMethodKotlinImplicitReferenceSearcher :
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
private fun createReferenceProcessor(consumer: ExecutorProcessor<PsiReference>) = object : ReadActionProcessor<PsiReference>() { private fun createReferenceProcessor(consumer: Processor<in PsiReference>) = object : ReadActionProcessor<PsiReference>() {
override fun processInReadAction(reference: PsiReference): Boolean { override fun processInReadAction(reference: PsiReference): Boolean {
if (reference !is KtSimpleNameReference) return true if (reference !is KtSimpleNameReference) return true
val annotationEntry = reference.expression.getParentOfTypeAndBranch<KtAnnotationEntry> { typeReference } ?: return true val annotationEntry = reference.expression.getParentOfTypeAndBranch<KtAnnotationEntry> { typeReference } ?: return true
@@ -49,7 +49,7 @@ class DefaultAnnotationMethodKotlinImplicitReferenceSearcher :
} }
} }
override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) { override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: Processor<in PsiReference>) {
runReadAction { runReadAction {
val method = queryParameters.method val method = queryParameters.method
if (!method.isDefaultAnnotationMethod) return@runReadAction null if (!method.isDefaultAnnotationMethod) return@runReadAction null
@@ -25,6 +25,7 @@ import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.SearchScope import com.intellij.psi.search.SearchScope
import com.intellij.psi.search.searches.AnnotatedElementsSearch import com.intellij.psi.search.searches.AnnotatedElementsSearch
import com.intellij.psi.util.PsiUtilCore import com.intellij.psi.util.PsiUtilCore
import com.intellij.util.Processor
import com.intellij.util.QueryExecutor import com.intellij.util.QueryExecutor
import com.intellij.util.indexing.FileBasedIndex import com.intellij.util.indexing.FileBasedIndex
import org.jetbrains.kotlin.asJava.ImpreciseResolveResult.NO_MATCH import org.jetbrains.kotlin.asJava.ImpreciseResolveResult.NO_MATCH
@@ -32,7 +33,6 @@ import org.jetbrains.kotlin.asJava.ImpreciseResolveResult.UNSURE
import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.asJava.toPsiParameters import org.jetbrains.kotlin.asJava.toPsiParameters
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.idea.caches.resolve.analyze import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.search.PsiBasedClassResolver import org.jetbrains.kotlin.idea.search.PsiBasedClassResolver
import org.jetbrains.kotlin.idea.stubindex.KotlinAnnotationsIndex import org.jetbrains.kotlin.idea.stubindex.KotlinAnnotationsIndex
@@ -46,7 +46,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
class KotlinAnnotatedElementsSearcher : QueryExecutor<PsiModifierListOwner, AnnotatedElementsSearch.Parameters> { class KotlinAnnotatedElementsSearcher : QueryExecutor<PsiModifierListOwner, AnnotatedElementsSearch.Parameters> {
override fun execute(p: AnnotatedElementsSearch.Parameters, consumer: ExecutorProcessor<PsiModifierListOwner>): Boolean { override fun execute(p: AnnotatedElementsSearch.Parameters, consumer: Processor<in PsiModifierListOwner>): Boolean {
return processAnnotatedMembers(p.annotationClass, p.scope) { declaration -> return processAnnotatedMembers(p.annotationClass, p.scope) { declaration ->
when (declaration) { when (declaration) {
is KtClass -> { is KtClass -> {
@@ -20,8 +20,8 @@ import com.intellij.psi.PsiClass
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.searches.ClassesWithAnnotatedMembersSearch import com.intellij.psi.search.searches.ClassesWithAnnotatedMembersSearch
import com.intellij.psi.search.searches.ScopedQueryExecutor import com.intellij.psi.search.searches.ScopedQueryExecutor
import com.intellij.util.Processor
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.search.allScope import org.jetbrains.kotlin.idea.search.allScope
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -32,7 +32,7 @@ class KotlinClassesWithAnnotatedMembersSearcher : ScopedQueryExecutor<PsiClass,
return GlobalSearchScope.getScopeRestrictedByFileTypes(param.annotationClass.project.allScope(), KotlinFileType.INSTANCE) return GlobalSearchScope.getScopeRestrictedByFileTypes(param.annotationClass.project.allScope(), KotlinFileType.INSTANCE)
} }
override fun execute(queryParameters: ClassesWithAnnotatedMembersSearch.Parameters, consumer: ExecutorProcessor<PsiClass>): Boolean { override fun execute(queryParameters: ClassesWithAnnotatedMembersSearch.Parameters, consumer: Processor<in PsiClass>): Boolean {
val processed = hashSetOf<KtClassOrObject>() val processed = hashSetOf<KtClassOrObject>()
return KotlinAnnotatedElementsSearcher.processAnnotatedMembers(queryParameters.annotationClass, return KotlinAnnotatedElementsSearcher.processAnnotatedMembers(queryParameters.annotationClass,
queryParameters.scope, queryParameters.scope,
@@ -19,13 +19,13 @@ package org.jetbrains.kotlin.idea.search.ideaExtensions
import com.intellij.openapi.application.QueryExecutorBase import com.intellij.openapi.application.QueryExecutorBase
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.searches.MethodReferencesSearch.SearchParameters import com.intellij.psi.search.searches.MethodReferencesSearch.SearchParameters
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade
import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages import org.jetbrains.kotlin.idea.search.usagesSearch.processDelegationCallConstructorUsages
class KotlinConstructorDelegationCallReferenceSearcher : QueryExecutorBase<PsiReference, SearchParameters>(true) { class KotlinConstructorDelegationCallReferenceSearcher : QueryExecutorBase<PsiReference, SearchParameters>(true) {
override fun processQuery(queryParameters: SearchParameters, consumer: ExecutorProcessor<PsiReference>) { override fun processQuery(queryParameters: SearchParameters, consumer: Processor<in PsiReference>) {
val method = queryParameters.method val method = queryParameters.method
if (!method.isConstructor) return if (!method.isConstructor) return
if (!method.hasJavaResolutionFacade()) return if (!method.hasJavaResolutionFacade()) return
@@ -19,12 +19,12 @@ package org.jetbrains.kotlin.idea.search.ideaExtensions
import com.intellij.openapi.application.QueryExecutorBase import com.intellij.openapi.application.QueryExecutorBase
import com.intellij.psi.PsiReference import com.intellij.psi.PsiReference
import com.intellij.psi.search.searches.MethodReferencesSearch import com.intellij.psi.search.searches.MethodReferencesSearch
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade
import org.jetbrains.kotlin.idea.search.usagesSearch.operators.OperatorReferenceSearcher import org.jetbrains.kotlin.idea.search.usagesSearch.operators.OperatorReferenceSearcher
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: Processor<in PsiReference>) {
val method = queryParameters.method val method = queryParameters.method
if (!method.hasJavaResolutionFacade()) return if (!method.hasJavaResolutionFacade()) return
@@ -30,7 +30,6 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.asJava.toLightClass import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.asJava.unwrapped import org.jetbrains.kotlin.asJava.unwrapped
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightClass import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightClass
import org.jetbrains.kotlin.idea.search.declarationsSearch.forEachImplementation import org.jetbrains.kotlin.idea.search.declarationsSearch.forEachImplementation
import org.jetbrains.kotlin.idea.search.declarationsSearch.forEachOverridingMethod import org.jetbrains.kotlin.idea.search.declarationsSearch.forEachOverridingMethod
@@ -43,7 +42,7 @@ import org.jetbrains.kotlin.psi.psiUtil.contains
import java.util.* import java.util.*
class KotlinDefinitionsSearcher : QueryExecutor<PsiElement, DefinitionsScopedSearch.SearchParameters> { class KotlinDefinitionsSearcher : QueryExecutor<PsiElement, DefinitionsScopedSearch.SearchParameters> {
override fun execute(queryParameters: DefinitionsScopedSearch.SearchParameters, consumer: ExecutorProcessor<PsiElement>): Boolean { override fun execute(queryParameters: DefinitionsScopedSearch.SearchParameters, consumer: Processor<in PsiElement>): Boolean {
val consumer = skipDelegatedMethodsConsumer(consumer) val consumer = skipDelegatedMethodsConsumer(consumer)
val element = queryParameters.element val element = queryParameters.element
val scope = queryParameters.scope val scope = queryParameters.scope
@@ -92,7 +91,7 @@ class KotlinDefinitionsSearcher : QueryExecutor<PsiElement, DefinitionsScopedSea
companion object { companion object {
private fun skipDelegatedMethodsConsumer(baseConsumer: ExecutorProcessor<PsiElement>): Processor<PsiElement> { private fun skipDelegatedMethodsConsumer(baseConsumer: Processor<in PsiElement>): Processor<PsiElement> {
return Processor { element -> return Processor { element ->
if (isDelegated(element)) { if (isDelegated(element)) {
return@Processor true return@Processor true
@@ -21,8 +21,8 @@ import com.intellij.openapi.progress.ProgressManager
import com.intellij.psi.PsiClass import com.intellij.psi.PsiClass
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.searches.DirectClassInheritorsSearch import com.intellij.psi.search.searches.DirectClassInheritorsSearch
import com.intellij.util.Processor
import org.jetbrains.kotlin.asJava.toLightClassWithBuiltinMapping import org.jetbrains.kotlin.asJava.toLightClassWithBuiltinMapping
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightClass import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightClass
import org.jetbrains.kotlin.idea.search.fileScope import org.jetbrains.kotlin.idea.search.fileScope
import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope import org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.idea.stubindex.KotlinTypeAliasByExpansionShortNameIn
import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.idea.util.application.runReadAction
open class KotlinDirectInheritorsSearcher : QueryExecutorBase<PsiClass, DirectClassInheritorsSearch.SearchParameters>(true) { open class KotlinDirectInheritorsSearcher : QueryExecutorBase<PsiClass, DirectClassInheritorsSearch.SearchParameters>(true) {
override fun processQuery(queryParameters: DirectClassInheritorsSearch.SearchParameters, consumer: ExecutorProcessor<PsiClass>) { override fun processQuery(queryParameters: DirectClassInheritorsSearch.SearchParameters, consumer: Processor<in PsiClass>) {
val baseClass = queryParameters.classToProcess val baseClass = queryParameters.classToProcess
val name = baseClass.name ?: return val name = baseClass.name ?: return
@@ -24,8 +24,8 @@ import com.intellij.psi.search.UsageSearchContext
import com.intellij.psi.search.searches.MethodReferencesSearch import com.intellij.psi.search.searches.MethodReferencesSearch
import com.intellij.psi.util.MethodSignatureUtil import com.intellij.psi.util.MethodSignatureUtil
import com.intellij.psi.util.TypeConversionUtil import com.intellij.psi.util.TypeConversionUtil
import com.intellij.util.Processor
import org.jetbrains.kotlin.asJava.toLightMethods import org.jetbrains.kotlin.asJava.toLightMethods
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.references.SyntheticPropertyAccessorReference import org.jetbrains.kotlin.idea.references.SyntheticPropertyAccessorReference
import org.jetbrains.kotlin.idea.references.readWriteAccess import org.jetbrains.kotlin.idea.references.readWriteAccess
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.psi.KtProperty
class KotlinOverridingMethodReferenceSearcher : MethodUsagesSearcher() { class KotlinOverridingMethodReferenceSearcher : MethodUsagesSearcher() {
override fun processQuery(p: MethodReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) { override fun processQuery(p: MethodReferencesSearch.SearchParameters, consumer: Processor<in PsiReference>) {
val method = p.method val method = p.method
val isConstructor = p.project.runReadActionInSmartMode { method.isConstructor } val isConstructor = p.project.runReadActionInSmartMode { method.isConstructor }
if (isConstructor) { if (isConstructor) {
@@ -84,7 +84,7 @@ class KotlinOverridingMethodReferenceSearcher : MethodUsagesSearcher() {
ref: PsiReference, ref: PsiReference,
refElement: PsiElement?, refElement: PsiElement?,
method: PsiMethod, method: PsiMethod,
consumer: ExecutorProcessor<PsiReference> consumer: Processor<in PsiReference>
): Boolean { ): Boolean {
val isGetter = JvmAbi.isGetterName(method.name) val isGetter = JvmAbi.isGetterName(method.name)
@@ -24,7 +24,6 @@ import com.intellij.util.Processor
import com.intellij.util.QueryExecutor import com.intellij.util.QueryExecutor
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
@@ -35,7 +34,7 @@ import org.jetbrains.kotlin.psi.KtCallableDeclaration
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
class KotlinOverridingMethodsWithGenericsSearcher : QueryExecutor<PsiMethod, OverridingMethodsSearch.SearchParameters> { class KotlinOverridingMethodsWithGenericsSearcher : QueryExecutor<PsiMethod, OverridingMethodsSearch.SearchParameters> {
override fun execute(p: OverridingMethodsSearch.SearchParameters, consumer: ExecutorProcessor<PsiMethod>): Boolean { override fun execute(p: OverridingMethodsSearch.SearchParameters, consumer: Processor<in PsiMethod>): Boolean {
val method = p.method val method = p.method
if (method !is KtLightMethod) return true if (method !is KtLightMethod) return true
@@ -22,15 +22,15 @@ import com.intellij.psi.PsiReference
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.search.UsageSearchContext import com.intellij.psi.search.UsageSearchContext
import com.intellij.psi.search.searches.MethodReferencesSearch import com.intellij.psi.search.searches.MethodReferencesSearch
import com.intellij.util.Processor
import org.jetbrains.kotlin.asJava.namedUnwrappedElement import org.jetbrains.kotlin.asJava.namedUnwrappedElement
import org.jetbrains.kotlin.compatibility.ExecutorProcessor
import org.jetbrains.kotlin.idea.search.restrictToKotlinSources import org.jetbrains.kotlin.idea.search.restrictToKotlinSources
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtProperty import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor
class KotlinPropertyAccessorsReferenceSearcher : QueryExecutorBase<PsiReference, MethodReferencesSearch.SearchParameters>(true) { class KotlinPropertyAccessorsReferenceSearcher : QueryExecutorBase<PsiReference, MethodReferencesSearch.SearchParameters>(true) {
override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) { override fun processQuery(queryParameters: MethodReferencesSearch.SearchParameters, consumer: Processor<in PsiReference>) {
val method = queryParameters.method val method = queryParameters.method
val onlyKotlinFiles = queryParameters.effectiveSearchScope.restrictToKotlinSources() val onlyKotlinFiles = queryParameters.effectiveSearchScope.restrictToKotlinSources()
if (onlyKotlinFiles == GlobalSearchScope.EMPTY_SCOPE) return if (onlyKotlinFiles == GlobalSearchScope.EMPTY_SCOPE) return
@@ -23,7 +23,7 @@ import com.intellij.psi.impl.cache.TodoCacheManager
import com.intellij.psi.search.IndexPattern import com.intellij.psi.search.IndexPattern
import com.intellij.psi.search.IndexPatternOccurrence import com.intellij.psi.search.IndexPatternOccurrence
import com.intellij.psi.search.searches.IndexPatternSearch import com.intellij.psi.search.searches.IndexPatternSearch
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.psi.KtCallExpression import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
@@ -35,7 +35,7 @@ data class KotlinTodoOccurrence(private val _file: PsiFile, private val _textRan
} }
class KotlinTodoSearcher : QueryExecutorBase<IndexPatternOccurrence, IndexPatternSearch.SearchParameters>(true) { class KotlinTodoSearcher : QueryExecutorBase<IndexPatternOccurrence, IndexPatternSearch.SearchParameters>(true) {
override fun processQuery(queryParameters: IndexPatternSearch.SearchParameters, consumer: ExecutorProcessor<IndexPatternOccurrence>) { override fun processQuery(queryParameters: IndexPatternSearch.SearchParameters, consumer: Processor<in IndexPatternOccurrence>) {
var pattern = queryParameters.pattern var pattern = queryParameters.pattern
if (pattern != null && !pattern.patternString.contains("TODO", true)) return if (pattern != null && !pattern.patternString.contains("TODO", true)) return
if (pattern == null) { if (pattern == null) {
@@ -16,6 +16,7 @@
package org.jetbrains.kotlin.idea.slicer package org.jetbrains.kotlin.idea.slicer
import com.intellij.codeInsight.Nullability
import com.intellij.ide.util.treeView.AbstractTreeStructure import com.intellij.ide.util.treeView.AbstractTreeStructure
import com.intellij.openapi.actionSystem.DefaultActionGroup import com.intellij.openapi.actionSystem.DefaultActionGroup
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
@@ -27,8 +28,6 @@ import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.references.KtReference import org.jetbrains.kotlin.idea.references.KtReference
import org.jetbrains.kotlin.idea.references.mainReference import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.slicer.compat.PsiElement_N183_NN191 import org.jetbrains.kotlin.idea.slicer.compat.PsiElement_N183_NN191
import org.jetbrains.kotlin.idea.util.compat.Nullability
import org.jetbrains.kotlin.idea.util.compat.SliceNullnessAnalyzerBaseEx
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.isPlainWithEscapes import org.jetbrains.kotlin.psi.psiUtil.isPlainWithEscapes
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
@@ -50,8 +49,8 @@ class KotlinSliceProvider : SliceLanguageSupportProvider, SliceUsageTransformer
val leafAnalyzer by lazy { SliceLeafAnalyzer(LEAF_ELEMENT_EQUALITY, this) } val leafAnalyzer by lazy { SliceLeafAnalyzer(LEAF_ELEMENT_EQUALITY, this) }
val nullnessAnalyzer: SliceNullnessAnalyzerBase by lazy { val nullnessAnalyzer: SliceNullnessAnalyzerBase by lazy {
object : SliceNullnessAnalyzerBaseEx(LEAF_ELEMENT_EQUALITY, this) { object : SliceNullnessAnalyzerBase(LEAF_ELEMENT_EQUALITY, this) {
override fun checkNullabilityEx(element: PsiElement?): Nullability { override fun checkNullability(element: PsiElement?): Nullability {
val types = when (element) { val types = when (element) {
is KtCallableDeclaration -> listOfNotNull((element.resolveToDescriptorIfAny() as? CallableDescriptor)?.returnType) is KtCallableDeclaration -> listOfNotNull((element.resolveToDescriptorIfAny() as? CallableDescriptor)?.returnType)
is KtDeclaration -> emptyList() is KtDeclaration -> emptyList()
@@ -1,13 +0,0 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.util
import com.intellij.openapi.ui.popup.PopupChooserBuilder
import javax.swing.JList
// BUNCH: 181
@Suppress("IncompatibleAPI")
class PopupChooserBuilderWrapper<T>(list: JList<T>): PopupChooserBuilder<T>(list)
@@ -1,40 +0,0 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("MissingRecentApi", "IncompatibleAPI")
package org.jetbrains.kotlin.idea.util.compat
import com.intellij.codeInsight.Nullability as IntellijNullability
import com.intellij.codeInspection.dataFlow.DfaUtil
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiVariable
import com.intellij.slicer.SliceLanguageSupportProvider
import com.intellij.slicer.SliceLeafEquality
import com.intellij.slicer.SliceNullnessAnalyzerBase
// BUNCH: 181
typealias Nullability = IntellijNullability
// BUNCH: 181
fun dfaCheckNullability(variable: PsiVariable?, context: PsiElement?): Nullability =
DfaUtil.checkNullability(variable, context)
// BUNCH: 181
fun dfaInferMethodNullability(method: PsiMethod): Nullability =
DfaUtil.inferMethodNullability(method)
// BUNCH: 181
abstract class SliceNullnessAnalyzerBaseEx(
leafEquality: SliceLeafEquality,
provider: SliceLanguageSupportProvider
) : SliceNullnessAnalyzerBase(leafEquality, provider) {
override fun checkNullability(element: PsiElement?): Nullability {
return checkNullabilityEx(element)
}
abstract fun checkNullabilityEx(element: PsiElement?): Nullability
}
@@ -10,7 +10,7 @@ import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase; import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase;
import org.jetbrains.kotlin.test.HierarchyViewTestFixture; import com.intellij.testFramework.codeInsight.hierarchy.HierarchyViewTestFixture;
import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner; import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -221,9 +221,7 @@ abstract class AbstractScriptConfigurationTest : KotlinCompletionTestCase() {
private fun createTestModuleByName(name: String): Module { private fun createTestModuleByName(name: String): Module {
val newModuleDir = runWriteAction { VfsUtil.createDirectoryIfMissing(project.baseDir, name) } val newModuleDir = runWriteAction { VfsUtil.createDirectoryIfMissing(project.baseDir, name) }
val newModule = createModuleAt(name, project, JavaModuleType.getModuleType(), newModuleDir.path)
// BUNCH: 181
@Suppress("IncompatibleAPI") val newModule = createModuleAt(name, project, JavaModuleType.getModuleType(), newModuleDir.path)
// Return type was changed, but it's not used. BUNCH: 183 // Return type was changed, but it's not used. BUNCH: 183
@Suppress("MissingRecentApi") @Suppress("MissingRecentApi")
@@ -1,12 +0,0 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.test
import com.intellij.testFramework.codeInsight.hierarchy.HierarchyViewTestFixture
// BUNCH: 181
@Suppress("IncompatibleAPI")
class HierarchyViewTestFixture : HierarchyViewTestFixture()
@@ -1,145 +0,0 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.test;
import com.intellij.ide.hierarchy.HierarchyNodeDescriptor;
import com.intellij.ide.hierarchy.HierarchyTreeStructure;
import com.intellij.openapi.util.JDOMUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.junit.Assert;
import java.util.*;
/**
* Copied from com.intellij.testFramework.codeInsight.hierarchy.HierarchyViewTestFixture for compatibility reasons.
*
* Use org.jetbrains.kotlin.test.HierarchyViewTestFixture typealias instead.
*
* BUNCH: 181
*/
@SuppressWarnings("ALL")
public class HierarchyViewTestFixtureCompat {
private static final String NODE_ELEMENT_NAME = "node";
private static final String ANY_NODES_ELEMENT_NAME = "any";
private static final String TEXT_ATTR_NAME = "text";
private static final String BASE_ATTR_NAME = "base";
public void doHierarchyTest(@NotNull HierarchyTreeStructure treeStructure,
@NotNull String expectedStructure) {
try {
checkHierarchyTreeStructure(treeStructure, JDOMUtil.load(expectedStructure));
}
catch (Throwable e) {
Assert.assertEquals("XML structure comparison for your convenience, actual failure details BELOW",
expectedStructure, dump(treeStructure, null, 0));
//noinspection CallToPrintStackTrace
e.printStackTrace();
}
}
@NotNull
public static String dump(@NotNull HierarchyTreeStructure treeStructure,
@Nullable HierarchyNodeDescriptor descriptor,
int level) {
StringBuilder s = new StringBuilder();
dump(treeStructure, descriptor, level, s);
return s.toString();
}
private static void dump(@NotNull HierarchyTreeStructure treeStructure,
@Nullable HierarchyNodeDescriptor descriptor,
int level,
@NotNull StringBuilder b) {
if (level > 10) {
for (int i = 0; i < level; i++) b.append(" ");
b.append("<Probably infinite part skipped>\n");
return;
}
if (descriptor == null) descriptor = (HierarchyNodeDescriptor)treeStructure.getRootElement();
for (int i = 0; i < level; i++) b.append(" ");
descriptor.update();
b.append("<node text=\"").append(descriptor.getHighlightedText().getText()).append("\"")
.append(treeStructure.getBaseDescriptor() == descriptor ? " base=\"true\"" : "");
Object[] children = treeStructure.getChildElements(descriptor);
if (children.length > 0) {
b.append(">\n");
for (Object o : children) {
HierarchyNodeDescriptor d = (HierarchyNodeDescriptor)o;
dump(treeStructure, d, level + 1, b);
}
for (int i = 0; i < level; i++) b.append(" ");
b.append("</node>\n");
}
else {
b.append("/>\n");
}
}
private static void checkHierarchyTreeStructure(@NotNull HierarchyTreeStructure treeStructure,
@Nullable Element rootElement) {
HierarchyNodeDescriptor rootNodeDescriptor = (HierarchyNodeDescriptor)treeStructure.getRootElement();
rootNodeDescriptor.update();
if (rootElement == null || !NODE_ELEMENT_NAME.equals(rootElement.getName())) {
throw new IllegalArgumentException("Incorrect root element in verification resource");
}
checkNodeDescriptorRecursively(treeStructure, rootNodeDescriptor, rootElement);
}
private static void checkNodeDescriptorRecursively(@NotNull HierarchyTreeStructure treeStructure,
@NotNull HierarchyNodeDescriptor descriptor,
@NotNull Element expectedElement) {
checkBaseNode(treeStructure, descriptor, expectedElement);
checkContent(descriptor, expectedElement);
checkChildren(treeStructure, descriptor, expectedElement);
}
private static void checkBaseNode(@NotNull HierarchyTreeStructure treeStructure,
@NotNull HierarchyNodeDescriptor descriptor,
@NotNull Element expectedElement) {
String baseAttrValue = expectedElement.getAttributeValue(BASE_ATTR_NAME);
HierarchyNodeDescriptor baseDescriptor = treeStructure.getBaseDescriptor();
boolean mustBeBase = "true".equalsIgnoreCase(baseAttrValue);
Assert.assertTrue("Incorrect base node", mustBeBase ? baseDescriptor == descriptor : baseDescriptor != descriptor);
}
private static void checkContent(@NotNull HierarchyNodeDescriptor descriptor,
@NotNull Element expectedElement) {
Assert.assertEquals(expectedElement.getAttributeValue(TEXT_ATTR_NAME), descriptor.getHighlightedText().getText());
}
private static void checkChildren(@NotNull HierarchyTreeStructure treeStructure,
@NotNull HierarchyNodeDescriptor descriptor,
@NotNull Element element) {
if (element.getChild(ANY_NODES_ELEMENT_NAME) != null) {
return;
}
Object[] children = treeStructure.getChildElements(descriptor);
//noinspection unchecked
List<Element> expectedChildren = new ArrayList<>(element.getChildren(NODE_ELEMENT_NAME));
StringBuilder messageBuilder = new StringBuilder("Actual children of [" + descriptor.getHighlightedText().getText() + "]:\n");
for (Object child : children) {
HierarchyNodeDescriptor nodeDescriptor = (HierarchyNodeDescriptor)child;
nodeDescriptor.update();
messageBuilder.append(" [").append(nodeDescriptor.getHighlightedText().getText()).append("]\n");
}
Assert.assertEquals(messageBuilder.toString(), expectedChildren.size(), children.length);
Arrays.sort(children, Comparator.comparing(child -> ((HierarchyNodeDescriptor)child).getHighlightedText().getText()));
Collections.sort(expectedChildren, Comparator.comparing(child -> child.getAttributeValue(TEXT_ATTR_NAME)));
//noinspection unchecked
Iterator<Element> iterator = expectedChildren.iterator();
for (Object child : children) {
checkNodeDescriptorRecursively(treeStructure, ((HierarchyNodeDescriptor)child), iterator.next());
}
}
}
@@ -335,8 +335,6 @@ open class DelegatingProgressIndicator : WrappedProgressIndicator, StandardProgr
} }
constructor() { constructor() {
// BUNCH: 181
@Suppress("IncompatibleAPI")
val indicator: ProgressIndicator? = ProgressManager.getInstance().progressIndicator val indicator: ProgressIndicator? = ProgressManager.getInstance().progressIndicator
delegate = indicator ?: EmptyProgressIndicator() delegate = indicator ?: EmptyProgressIndicator()
} }
@@ -22,7 +22,7 @@ import com.intellij.psi.PsiReference
import com.intellij.psi.search.LocalSearchScope import com.intellij.psi.search.LocalSearchScope
import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch
import com.intellij.psi.xml.XmlAttributeValue import com.intellij.psi.xml.XmlAttributeValue
import org.jetbrains.kotlin.compatibility.ExecutorProcessor import com.intellij.util.Processor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.resolve.source.getPsi
class AndroidExtensionsReferenceSearchExecutor : QueryExecutorBase<PsiReference, ReferencesSearch.SearchParameters>(true) { class AndroidExtensionsReferenceSearchExecutor : QueryExecutorBase<PsiReference, ReferencesSearch.SearchParameters>(true) {
override fun processQuery(queryParameters: ReferencesSearch.SearchParameters, consumer: ExecutorProcessor<PsiReference>) { override fun processQuery(queryParameters: ReferencesSearch.SearchParameters, consumer: Processor<in PsiReference>) {
val elementToSearch = queryParameters.elementToSearch as? XmlAttributeValue ?: return val elementToSearch = queryParameters.elementToSearch as? XmlAttributeValue ?: return
val scopeElements = (queryParameters.effectiveSearchScope as? LocalSearchScope)?.scope ?: return val scopeElements = (queryParameters.effectiveSearchScope as? LocalSearchScope)?.scope ?: return
val referenceName = elementToSearch.value?.substringAfterLast("/") ?: return val referenceName = elementToSearch.value?.substringAfterLast("/") ?: return