This commit is contained in:
Valentin Kipyatkov
2016-09-16 19:22:45 +03:00
parent c9bb3607ac
commit ccc5d74649
8 changed files with 15 additions and 15 deletions
@@ -35,7 +35,7 @@ class BinaryOperatorReferenceSearcher(
optimizer: SearchRequestCollector optimizer: SearchRequestCollector
) : OperatorReferenceSearcher<KtBinaryExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = operationTokens.map { it.value }) { ) : OperatorReferenceSearcher<KtBinaryExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = operationTokens.map { it.value }) {
override fun processSuspiciousExpression(expression: KtExpression) { override fun processPossibleReceiverExpression(expression: KtExpression) {
val binaryExpression = expression.parent as? KtBinaryExpression ?: return val binaryExpression = expression.parent as? KtBinaryExpression ?: return
if (binaryExpression.operationToken !in operationTokens) return if (binaryExpression.operationToken !in operationTokens) return
if (expression != binaryExpression.left) return if (expression != binaryExpression.left) return
@@ -38,7 +38,7 @@ class ContainsOperatorReferenceSearcher(
private val OPERATION_TOKENS = setOf(KtTokens.IN_KEYWORD, KtTokens.NOT_IN) private val OPERATION_TOKENS = setOf(KtTokens.IN_KEYWORD, KtTokens.NOT_IN)
override fun processSuspiciousExpression(expression: KtExpression) { override fun processPossibleReceiverExpression(expression: KtExpression) {
val parent = expression.parent val parent = expression.parent
when (parent) { when (parent) {
is KtBinaryExpression -> { is KtBinaryExpression -> {
@@ -53,7 +53,7 @@ class DestructuringDeclarationReferenceSearcher(
override fun isReferenceToCheck(ref: PsiReference) = ref is KtDestructuringDeclarationReference override fun isReferenceToCheck(ref: PsiReference) = ref is KtDestructuringDeclarationReference
override fun processSuspiciousExpression(expression: KtExpression) { override fun processPossibleReceiverExpression(expression: KtExpression) {
val parent = expression.parent val parent = expression.parent
val destructuringDeclaration = when (parent) { val destructuringDeclaration = when (parent) {
is KtDestructuringDeclaration -> parent is KtDestructuringDeclaration -> parent
@@ -69,8 +69,8 @@ class ExpressionsOfTypeProcessor(
private val typeToSearch: FuzzyType, private val typeToSearch: FuzzyType,
private val searchScope: SearchScope, private val searchScope: SearchScope,
private val project: Project, private val project: Project,
private val suspiciousExpressionHandler: (KtExpression) -> Unit, private val possibleMatchHandler: (KtExpression) -> Unit,
private val suspiciousScopeHandler: (SearchScope) -> Unit private val possibleMatchesInScopeHandler: (SearchScope) -> Unit
) { ) {
@TestOnly @TestOnly
enum class Mode { enum class Mode {
@@ -132,7 +132,7 @@ class ExpressionsOfTypeProcessor(
// for class from library always use plain search because we cannot search usages in compiled code (we could though) // for class from library always use plain search because we cannot search usages in compiled code (we could though)
if (!runReadAction { psiClass.isValid && ProjectRootsUtil.isInProjectSource (psiClass) }) { if (!runReadAction { psiClass.isValid && ProjectRootsUtil.isInProjectSource (psiClass) }) {
suspiciousScopeHandler(searchScope) possibleMatchesInScopeHandler(searchScope)
return return
} }
@@ -146,7 +146,7 @@ class ExpressionsOfTypeProcessor(
.filter { it.isValid } .filter { it.isValid }
.toTypedArray() .toTypedArray()
if (scopeElements.isNotEmpty()) { if (scopeElements.isNotEmpty()) {
suspiciousScopeHandler(LocalSearchScope(scopeElements)) possibleMatchesInScopeHandler(LocalSearchScope(scopeElements))
} }
} }
} }
@@ -179,7 +179,7 @@ class ExpressionsOfTypeProcessor(
private fun downShiftToPlainSearch() { private fun downShiftToPlainSearch() {
tasks.clear() tasks.clear()
scopesToUsePlainSearch.clear() scopesToUsePlainSearch.clear()
suspiciousScopeHandler(searchScope) possibleMatchesInScopeHandler(searchScope)
} }
private fun addClassToProcess(classToSearch: PsiClass) { private fun addClassToProcess(classToSearch: PsiClass) {
@@ -531,7 +531,7 @@ class ExpressionsOfTypeProcessor(
inScope = inScope && element in searchScope inScope = inScope && element in searchScope
} }
if (inScope) { if (inScope) {
suspiciousExpressionHandler(element) possibleMatchHandler(element)
} }
val parent = element.parent val parent = element.parent
@@ -36,7 +36,7 @@ class IndexingOperatorReferenceSearcher(
private val isSet: Boolean private val isSet: Boolean
) : OperatorReferenceSearcher<KtArrayAccessExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = listOf("[")) { ) : OperatorReferenceSearcher<KtArrayAccessExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = listOf("[")) {
override fun processSuspiciousExpression(expression: KtExpression) { override fun processPossibleReceiverExpression(expression: KtExpression) {
val accessExpression = expression.parent as? KtArrayAccessExpression ?: return val accessExpression = expression.parent as? KtArrayAccessExpression ?: return
if (expression != accessExpression.arrayExpression) return if (expression != accessExpression.arrayExpression) return
if (!checkAccessExpression(accessExpression)) return if (!checkAccessExpression(accessExpression)) return
@@ -33,7 +33,7 @@ class InvokeOperatorReferenceSearcher(
optimizer: SearchRequestCollector optimizer: SearchRequestCollector
) : OperatorReferenceSearcher<KtCallExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = emptyList()) { ) : OperatorReferenceSearcher<KtCallExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = emptyList()) {
override fun processSuspiciousExpression(expression: KtExpression) { override fun processPossibleReceiverExpression(expression: KtExpression) {
val callExpression = expression.parent as? KtCallExpression ?: return val callExpression = expression.parent as? KtCallExpression ?: return
processReferenceElement(callExpression) processReferenceElement(callExpression)
} }
@@ -57,7 +57,7 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
) { ) {
private val project = targetDeclaration.project private val project = targetDeclaration.project
protected abstract fun processSuspiciousExpression(expression: KtExpression) protected abstract fun processPossibleReceiverExpression(expression: KtExpression)
protected abstract fun extractReference(element: PsiElement): PsiReference? protected abstract fun extractReference(element: PsiElement): PsiReference?
@@ -203,8 +203,8 @@ abstract class OperatorReferenceSearcher<TReferenceElement : KtElement>(
receiverType, receiverType,
searchScope, searchScope,
project, project,
suspiciousExpressionHandler = { expression -> processSuspiciousExpression(expression) }, possibleMatchHandler = { expression -> processPossibleReceiverExpression(expression) },
suspiciousScopeHandler = { searchScope -> doPlainSearch(searchScope) } possibleMatchesInScopeHandler = { searchScope -> doPlainSearch(searchScope) }
).run() ).run()
} }
finally { finally {
@@ -36,7 +36,7 @@ class UnaryOperatorReferenceSearcher(
optimizer: SearchRequestCollector optimizer: SearchRequestCollector
) : OperatorReferenceSearcher<KtUnaryExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = listOf(operationToken.value)) { ) : OperatorReferenceSearcher<KtUnaryExpression>(targetFunction, searchScope, consumer, optimizer, wordsToSearch = listOf(operationToken.value)) {
override fun processSuspiciousExpression(expression: KtExpression) { override fun processPossibleReceiverExpression(expression: KtExpression) {
val unaryExpression = expression.parent as? KtUnaryExpression ?: return val unaryExpression = expression.parent as? KtUnaryExpression ?: return
if (unaryExpression.operationToken != operationToken) return if (unaryExpression.operationToken != operationToken) return
processReferenceElement(unaryExpression) processReferenceElement(unaryExpression)