Refactoring: Drop obsolete KotlinFileReferencesResolver class
This commit is contained in:
@@ -533,3 +533,7 @@ fun KtDeclaration.hasBody() = when (this) {
|
||||
is KtProperty -> hasBody()
|
||||
else -> false
|
||||
}
|
||||
|
||||
|
||||
fun KtExpression.referenceExpression(): KtReferenceExpression? =
|
||||
(if (this is KtCallExpression) calleeExpression else this) as? KtReferenceExpression
|
||||
-92
@@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.codeInsight
|
||||
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import java.util.*
|
||||
|
||||
object KotlinFileReferencesResolver {
|
||||
fun resolve(
|
||||
element: KtElement,
|
||||
resolveQualifiers: Boolean = true,
|
||||
resolveShortNames: Boolean = true
|
||||
): Map<KtReferenceExpression, BindingContext> {
|
||||
return (element.containingFile as? KtFile)?.let { file ->
|
||||
resolve(file, listOf(element), resolveQualifiers, resolveShortNames)
|
||||
} ?: Collections.emptyMap()
|
||||
}
|
||||
|
||||
fun resolve(
|
||||
file: KtFile,
|
||||
elements: Iterable<KtElement>? = null,
|
||||
resolveQualifiers: Boolean = true,
|
||||
resolveShortNames: Boolean = true
|
||||
): Map<KtReferenceExpression, BindingContext> {
|
||||
val visitor = ResolveAllReferencesVisitor(file, resolveQualifiers, resolveShortNames)
|
||||
if (elements != null) {
|
||||
elements.forEach { it.accept(visitor) }
|
||||
}
|
||||
else {
|
||||
file.accept(visitor)
|
||||
}
|
||||
return visitor.result
|
||||
}
|
||||
|
||||
private class ResolveAllReferencesVisitor(file: KtFile, val resolveQualifiers: Boolean, val resolveShortNames: Boolean) : KtTreeVisitorVoid() {
|
||||
private val resolutionFacade = file.getResolutionFacade()
|
||||
private val resolveMap = LinkedHashMap<KtReferenceExpression, BindingContext>()
|
||||
|
||||
val result: Map<KtReferenceExpression, BindingContext> = resolveMap
|
||||
|
||||
override fun visitUserType(userType: KtUserType) {
|
||||
if (resolveQualifiers) {
|
||||
userType.acceptChildren(this)
|
||||
}
|
||||
|
||||
if (resolveShortNames || userType.qualifier != null) {
|
||||
val referenceExpression = userType.referenceExpression
|
||||
if (referenceExpression != null) {
|
||||
resolveMap[referenceExpression] = resolutionFacade.analyze(referenceExpression)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitQualifiedExpression(expression: KtQualifiedExpression) {
|
||||
val receiverExpression = expression.receiverExpression
|
||||
if (resolveQualifiers || resolutionFacade.analyze(expression)[BindingContext.QUALIFIER, receiverExpression] == null) {
|
||||
receiverExpression.accept(this)
|
||||
}
|
||||
|
||||
val referenceExpression = expression.selectorExpression?.referenceExpression()
|
||||
if (referenceExpression != null) {
|
||||
resolveMap[referenceExpression] = resolutionFacade.analyze(referenceExpression)
|
||||
}
|
||||
expression.selectorExpression?.accept(this)
|
||||
}
|
||||
|
||||
override fun visitSimpleNameExpression(expression: KtSimpleNameExpression) {
|
||||
if (resolveShortNames) {
|
||||
resolveMap[expression] = resolutionFacade.analyze(expression)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun KtExpression.referenceExpression(): KtReferenceExpression? =
|
||||
(if (this is KtCallExpression) calleeExpression else this) as? KtReferenceExpression
|
||||
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaMemberDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.referenceExpression
|
||||
import org.jetbrains.kotlin.idea.core.isVisible
|
||||
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
@@ -33,6 +32,7 @@ import org.jetbrains.kotlin.platform.JavaToKotlinClassMap
|
||||
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||
import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
|
||||
import java.util.*
|
||||
|
||||
|
||||
|
||||
@@ -46,7 +46,6 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolveScope
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.codeInsight.referenceExpression
|
||||
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
||||
import org.jetbrains.kotlin.idea.core.isVisible
|
||||
import org.jetbrains.kotlin.idea.imports.canBeReferencedViaImport
|
||||
@@ -60,10 +59,7 @@ import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.KtPsiUtil.isSelectorInQualified
|
||||
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isImportDirectiveExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getParentCall
|
||||
|
||||
+10
-5
@@ -43,10 +43,10 @@ import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.analysis.analyzeInContext
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.codeInsight.KotlinFileReferencesResolver
|
||||
import org.jetbrains.kotlin.idea.core.compareDescriptors
|
||||
import org.jetbrains.kotlin.idea.refactoring.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.rename.noReceivers
|
||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
|
||||
@@ -701,9 +701,14 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor {
|
||||
callable: PsiElement,
|
||||
newReceiverInfo: KotlinParameterInfo?) {
|
||||
if (newReceiverInfo != null && (callable is KtNamedFunction) && callable.bodyExpression != null) {
|
||||
val noReceiverRefToContext = KotlinFileReferencesResolver.resolve(callable, true, true).filter {
|
||||
val resolvedCall = it.key.getResolvedCall(it.value)
|
||||
resolvedCall != null && resolvedCall.dispatchReceiver == null && resolvedCall.extensionReceiver == null
|
||||
val originalContext = callable.analyzeFully()
|
||||
|
||||
val noReceiverRefs = ArrayList<KtSimpleNameExpression>()
|
||||
callable.forEachDescendantOfType<KtSimpleNameExpression> {
|
||||
val resolvedCall = it.getResolvedCall(originalContext) ?: return@forEachDescendantOfType
|
||||
if (resolvedCall.noReceivers()) {
|
||||
noReceiverRefs += it
|
||||
}
|
||||
}
|
||||
|
||||
val psiFactory = KtPsiFactory(callable.project)
|
||||
@@ -715,7 +720,7 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor {
|
||||
|
||||
val originalOffset = callable.bodyExpression!!.textOffset
|
||||
val newBody = functionWithReceiver.bodyExpression ?: return
|
||||
for ((originalRef, originalContext) in noReceiverRefToContext.entries) {
|
||||
for (originalRef in noReceiverRefs) {
|
||||
val newRef = newBody
|
||||
.findElementAt(originalRef.textOffset - originalOffset)
|
||||
?.getNonStrictParentOfType<KtReferenceExpression>()
|
||||
|
||||
+2
-3
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.codeInsight.KotlinFileReferencesResolver
|
||||
import org.jetbrains.kotlin.idea.core.compareDescriptors
|
||||
import org.jetbrains.kotlin.idea.refactoring.introduce.ExtractableSubstringInfo
|
||||
import org.jetbrains.kotlin.idea.refactoring.introduce.extractableSubstringInfo
|
||||
@@ -196,10 +195,10 @@ data class ExtractionData(
|
||||
|
||||
val newReferences = body.collectDescendantsOfType<KtSimpleNameExpression> { it.resolveResult != null }
|
||||
|
||||
val context = body.analyze()
|
||||
|
||||
val referencesInfo = ArrayList<ResolvedReferenceInfo>()
|
||||
val refToContextMap = KotlinFileReferencesResolver.resolve(body)
|
||||
for (newRef in newReferences) {
|
||||
val context = refToContextMap[newRef] ?: continue
|
||||
val originalResolveResult = newRef.resolveResult ?: continue
|
||||
|
||||
val smartCast: KotlinType?
|
||||
|
||||
Reference in New Issue
Block a user