Replace resolveToDescriptor with unsafeResolveToDescriptor
Now unsafeResolveToDescriptor is equivalent to resolveToDescriptorIfAny but throws exception in case no descriptor is found. Old version of resolveToDescriptor is kept intact but made deprecated. Some clarifying comments were added
This commit is contained in:
@@ -30,15 +30,34 @@ import org.jetbrains.kotlin.resolve.BindingTraceContext
|
||||
import org.jetbrains.kotlin.resolve.ImportPath
|
||||
import org.jetbrains.kotlin.resolve.QualifiedExpressionResolver
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.resolve.lazy.NoDescriptorForDeclarationException
|
||||
|
||||
fun KtElement.getResolutionFacade(): ResolutionFacade =
|
||||
KotlinCacheService.getInstance(project).getResolutionFacade(listOf(this))
|
||||
|
||||
/**
|
||||
* For local declarations is equivalent to unsafeResolveToDescriptor(bodyResolveMode)
|
||||
*
|
||||
* But for non-local declarations it ignores bodyResolveMode and uses LazyDeclarationResolver directly
|
||||
*/
|
||||
@Deprecated(message = "This function has unclear semantics. Please use either unsafeResolveToDescriptor or resolveToDescriptorIfAny instead",
|
||||
replaceWith = ReplaceWith("unsafeResolveToDescriptor"))
|
||||
fun KtDeclaration.resolveToDescriptor(bodyResolveMode: BodyResolveMode = BodyResolveMode.FULL): DeclarationDescriptor =
|
||||
getResolutionFacade().resolveToDescriptor(this, bodyResolveMode)
|
||||
|
||||
//TODO: BodyResolveMode.PARTIAL is not quite safe!
|
||||
/**
|
||||
* This function throws exception when resolveToDescriptorIfAny returns null, otherwise works equivalently.
|
||||
*/
|
||||
fun KtDeclaration.unsafeResolveToDescriptor(bodyResolveMode: BodyResolveMode = BodyResolveMode.FULL): DeclarationDescriptor =
|
||||
resolveToDescriptorIfAny(bodyResolveMode) ?: throw NoDescriptorForDeclarationException(this)
|
||||
|
||||
/**
|
||||
* This function first uses declaration resolvers to resolve this declaration and/or additional declarations (e.g. its parent),
|
||||
* and then takes the relevant descriptor from binding context.
|
||||
* The exact set of declarations to resolve depends on bodyResolveMode
|
||||
*/
|
||||
fun KtDeclaration.resolveToDescriptorIfAny(bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL): DeclarationDescriptor? {
|
||||
//TODO: BodyResolveMode.PARTIAL is not quite safe!
|
||||
val context = analyze(bodyResolveMode)
|
||||
if (this is KtParameter && this.hasValOrVar()) {
|
||||
return context.get(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, this)
|
||||
|
||||
@@ -62,7 +62,7 @@ public class QuickFixUtil {
|
||||
public static KotlinType getDeclarationReturnType(KtNamedDeclaration declaration) {
|
||||
PsiFile file = declaration.getContainingFile();
|
||||
if (!(file instanceof KtFile)) return null;
|
||||
DeclarationDescriptor descriptor = ResolutionUtils.resolveToDescriptor(declaration, BodyResolveMode.FULL);
|
||||
DeclarationDescriptor descriptor = ResolutionUtils.unsafeResolveToDescriptor(declaration, BodyResolveMode.FULL);
|
||||
if (!(descriptor instanceof CallableDescriptor)) return null;
|
||||
KotlinType type = ((CallableDescriptor) descriptor).getReturnType();
|
||||
if (type instanceof DeferredType) {
|
||||
|
||||
+1
-1
@@ -219,7 +219,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
|
||||
|
||||
override fun resolveToDescriptor(declaration: KtDeclaration): DeclarationDescriptor? {
|
||||
try {
|
||||
return declaration.resolveToDescriptor()
|
||||
return declaration.unsafeResolveToDescriptor()
|
||||
}
|
||||
catch (e: NoDescriptorForDeclarationException) {
|
||||
return null
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ fun PsiMember.getJavaOrKotlinMemberDescriptor(resolutionFacade: ResolutionFacade
|
||||
return when (callable) {
|
||||
is PsiMember -> getJavaMemberDescriptor(resolutionFacade)
|
||||
is KtDeclaration -> {
|
||||
val descriptor = resolutionFacade?.resolveToDescriptor(callable) ?: callable.resolveToDescriptor()
|
||||
val descriptor = resolutionFacade?.resolveToDescriptor(callable) ?: callable.unsafeResolveToDescriptor()
|
||||
if (descriptor is ClassDescriptor && this is PsiMethod) descriptor.unsubstitutedPrimaryConstructor else descriptor
|
||||
}
|
||||
else -> null
|
||||
|
||||
+2
-2
@@ -26,7 +26,7 @@ import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiMember
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaMemberDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences.Options
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
|
||||
@@ -113,7 +113,7 @@ fun performDelayedRefactoringRequests(project: Project) {
|
||||
for (requestForFile in requestsForFile) {
|
||||
val elementToImport = requestForFile.elementToImportPointer.element?.unwrapped ?: continue
|
||||
val descriptorToImport = when (elementToImport) {
|
||||
is KtDeclaration -> elementToImport.resolveToDescriptor(BodyResolveMode.PARTIAL)
|
||||
is KtDeclaration -> elementToImport.unsafeResolveToDescriptor(BodyResolveMode.PARTIAL)
|
||||
is PsiMember -> elementToImport.getJavaMemberDescriptor()
|
||||
else -> null
|
||||
} ?: continue
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.stubindex.*
|
||||
@@ -50,7 +50,7 @@ class IdeSampleResolutionService(val project: Project) : SampleResolutionService
|
||||
|
||||
val descriptors = (functions + classes)
|
||||
.filter { it.fqName == targetFqName }
|
||||
.map { it.resolveToDescriptor(BodyResolveMode.PARTIAL) } // TODO Filter out not visible due dependencies config descriptors
|
||||
.map { it.unsafeResolveToDescriptor(BodyResolveMode.PARTIAL) } // TODO Filter out not visible due dependencies config descriptors
|
||||
.toList()
|
||||
if (descriptors.isNotEmpty())
|
||||
return descriptors
|
||||
|
||||
+4
-4
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.asJava.toLightMethods
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.isOverridable
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
||||
import org.jetbrains.kotlin.idea.search.allScope
|
||||
import org.jetbrains.kotlin.idea.search.excludeKotlinSources
|
||||
@@ -122,13 +122,13 @@ private fun forEachKotlinOverride(
|
||||
scope: SearchScope,
|
||||
processor: (superMember: PsiElement, overridingMember: PsiElement) -> Boolean
|
||||
) {
|
||||
val baseClassDescriptor = runReadAction { ktClass.resolveToDescriptor() as ClassDescriptor }
|
||||
val baseDescriptors = runReadAction { members.mapNotNull { it.resolveToDescriptor() as? CallableMemberDescriptor }.filter { it.isOverridable } }
|
||||
val baseClassDescriptor = runReadAction { ktClass.unsafeResolveToDescriptor() as ClassDescriptor }
|
||||
val baseDescriptors = runReadAction { members.mapNotNull { it.unsafeResolveToDescriptor() as? CallableMemberDescriptor }.filter { it.isOverridable } }
|
||||
if (baseDescriptors.isEmpty()) return
|
||||
|
||||
HierarchySearchRequest(ktClass, scope.restrictToKotlinSources(), true).searchInheritors().forEach {
|
||||
val inheritor = (it as? KtLightClass)?.kotlinOrigin ?: return@forEach
|
||||
val inheritorDescriptor = runReadAction { inheritor.resolveToDescriptor() as ClassDescriptor }
|
||||
val inheritorDescriptor = runReadAction { inheritor.unsafeResolveToDescriptor() as ClassDescriptor }
|
||||
val substitutor = getTypeSubstitutor(baseClassDescriptor.defaultType, inheritorDescriptor.defaultType) ?: return@forEach
|
||||
baseDescriptors.forEach {
|
||||
val superMember = it.source.getPsi()!!
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.jetbrains.android.util.AndroidUtils
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
@@ -50,7 +50,7 @@ import org.jetbrains.kotlin.resolve.source.PsiSourceFile
|
||||
|
||||
internal fun KtClass.findComponentDeclarationInManifest(manifest: Manifest): AndroidAttributeValue<PsiClass>? {
|
||||
val application = manifest.application ?: return null
|
||||
val type = (resolveToDescriptor(BodyResolveMode.PARTIAL) as? ClassDescriptor)?.defaultType ?: return null
|
||||
val type = (unsafeResolveToDescriptor(BodyResolveMode.PARTIAL) as? ClassDescriptor)?.defaultType ?: return null
|
||||
|
||||
return when {
|
||||
type.isSubclassOf(AndroidUtils.ACTIVITY_BASE_CLASS_NAME) ->
|
||||
|
||||
+2
-2
@@ -35,7 +35,7 @@ import com.intellij.util.Function
|
||||
import org.jetbrains.android.dom.manifest.Manifest
|
||||
import org.jetbrains.android.facet.AndroidFacet
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import java.awt.event.MouseEvent
|
||||
@@ -128,7 +128,7 @@ class KotlinAndroidLineMarkerProvider : LineMarkerProvider {
|
||||
"android.widget.Adapter")
|
||||
|
||||
private fun KtClass.isClassWithLayoutXml(): Boolean {
|
||||
val type = (resolveToDescriptor(BodyResolveMode.PARTIAL) as? ClassDescriptor)?.defaultType ?: return false
|
||||
val type = (unsafeResolveToDescriptor(BodyResolveMode.PARTIAL) as? ClassDescriptor)?.defaultType ?: return false
|
||||
return CLASSES_WITH_LAYOUT_XML.any { type.isSubclassOf(it, true) }
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ import org.jetbrains.android.util.AndroidUtils
|
||||
import org.jetbrains.kotlin.builtins.isExtensionFunctionType
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.intentions.SelfTargetingIntention
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
@@ -209,7 +209,7 @@ class KotlinAndroidAddStringResource : SelfTargetingIntention<KtLiteralStringTem
|
||||
private fun KtClassOrObject.isInnerClass() = (this as? KtClass)?.isInner() ?: false
|
||||
|
||||
private fun KtFunction.isSubclassExtensionOfAny(baseClasses: Collection<String>): Boolean {
|
||||
val descriptor = resolveToDescriptor() as FunctionDescriptor
|
||||
val descriptor = unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
val extendedTypeDescriptor = descriptor.extensionReceiverParameter?.type?.constructor?.declarationDescriptor
|
||||
return extendedTypeDescriptor != null && baseClasses.any { extendedTypeDescriptor.isSubclassOf(it) }
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ class KotlinIndicesHelper(
|
||||
fun getKotlinEnumsByName(name: String): Collection<DeclarationDescriptor> {
|
||||
return KotlinClassShortNameIndex.getInstance()[name, project, scope]
|
||||
.filter { it is KtEnumEntry && it in scope }
|
||||
.mapNotNull { it.resolveToDescriptor() }
|
||||
.mapNotNull { it.unsafeResolveToDescriptor() }
|
||||
.filter(descriptorFilter)
|
||||
.toSet()
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.asJava.toLightElements
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch
|
||||
@@ -54,7 +54,7 @@ class KotlinNameSuggestionProvider : NameSuggestionProvider {
|
||||
this += KotlinNameSuggester.getCamelNames(name!!, validator, name.first().isLowerCase())
|
||||
}
|
||||
|
||||
val callableDescriptor = element.resolveToDescriptor(BodyResolveMode.PARTIAL) as CallableDescriptor
|
||||
val callableDescriptor = element.unsafeResolveToDescriptor(BodyResolveMode.PARTIAL) as CallableDescriptor
|
||||
val type = callableDescriptor.returnType
|
||||
if (type != null && !type.isUnit() && !KotlinBuiltIns.isPrimitiveType(type)) {
|
||||
this += KotlinNameSuggester.suggestNamesByType(type, validator)
|
||||
|
||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.analysis.computeTypeInContext
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.resolve.frontendService
|
||||
@@ -34,7 +34,6 @@ import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DelegatingBindingTrace
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoAfter
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
|
||||
import org.jetbrains.kotlin.resolve.calls.CallResolver
|
||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||
@@ -155,7 +154,7 @@ private fun expectedType(call: Call, bindingContext: BindingContext): KotlinType
|
||||
}
|
||||
|
||||
fun KtCallableDeclaration.canOmitDeclaredType(initializerOrBodyExpression: KtExpression, canChangeTypeToSubtype: Boolean): Boolean {
|
||||
val declaredType = (resolveToDescriptor() as? CallableDescriptor)?.returnType ?: return false
|
||||
val declaredType = (unsafeResolveToDescriptor() as? CallableDescriptor)?.returnType ?: return false
|
||||
val bindingContext = initializerOrBodyExpression.analyze()
|
||||
val scope = initializerOrBodyExpression.getResolutionScope(bindingContext, initializerOrBodyExpression.getResolutionFacade())
|
||||
val expressionType = initializerOrBodyExpression.computeTypeInContext(scope) ?: return false
|
||||
|
||||
@@ -268,7 +268,7 @@ class KotlinConsoleRunner(
|
||||
|
||||
replState.submitLine(psiFile)
|
||||
configureFileDependencies(psiFile)
|
||||
val scriptDescriptor = psiFile.script!!.resolveToDescriptor() as? LazyScriptDescriptor ?: error("Failed to analyze line:\n$text")
|
||||
val scriptDescriptor = psiFile.script!!.unsafeResolveToDescriptor() as? LazyScriptDescriptor ?: error("Failed to analyze line:\n$text")
|
||||
ForceResolveUtil.forceResolveAllContents(scriptDescriptor)
|
||||
replState.lineSuccess(psiFile, scriptDescriptor)
|
||||
|
||||
|
||||
+2
-2
@@ -41,7 +41,7 @@ import com.intellij.ui.components.JBList
|
||||
import com.intellij.util.IncorrectOperationException
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
||||
import org.jetbrains.kotlin.idea.core.insertMember
|
||||
import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject.BodyType
|
||||
@@ -181,7 +181,7 @@ abstract class KotlinGenerateTestSupportActionBase(
|
||||
}
|
||||
val functionInPlace = insertMember(editor, klass, function)
|
||||
|
||||
val functionDescriptor = functionInPlace.resolveToDescriptor() as FunctionDescriptor
|
||||
val functionDescriptor = functionInPlace.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
val overriddenDescriptors = functionDescriptor.overriddenDescriptors
|
||||
val bodyText = when (overriddenDescriptors.size) {
|
||||
0 -> generateUnsupportedOrSuperCall(project, functionDescriptor, BodyType.EMPTY)
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.insertMembersAfter
|
||||
import org.jetbrains.kotlin.idea.core.quoteIfNeeded
|
||||
@@ -160,7 +160,7 @@ class KotlinGenerateToStringAction : KotlinGenerateMemberActionBase<KotlinGenera
|
||||
|
||||
val superToString = classDescriptor.getSuperClassOrAny().findDeclaredToString(true)!!
|
||||
|
||||
val memberChooserObjects = properties.map { DescriptorMemberChooserObject(it, it.resolveToDescriptor()) }.toTypedArray()
|
||||
val memberChooserObjects = properties.map { DescriptorMemberChooserObject(it, it.unsafeResolveToDescriptor()) }.toTypedArray()
|
||||
val headerPanel = ToStringMemberChooserHeaderPanel(!superToString.builtIns.isMemberOfAny(superToString))
|
||||
val chooser = MemberChooser<DescriptorMemberChooserObject>(memberChooserObjects, true, true, project, false, headerPanel).apply {
|
||||
title = "Generate toString()"
|
||||
|
||||
@@ -18,10 +18,9 @@ package org.jetbrains.kotlin.idea.actions.generate
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightBundle
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.ui.Messages
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
||||
import org.jetbrains.kotlin.idea.core.overrideImplement.OverrideMemberChooserObject
|
||||
import org.jetbrains.kotlin.idea.core.overrideImplement.generateMember
|
||||
@@ -51,7 +50,7 @@ fun getPropertiesToUseInGeneratedMember(classOrObject: KtClassOrObject): List<Kt
|
||||
return ArrayList<KtNamedDeclaration>().apply {
|
||||
classOrObject.primaryConstructorParameters.filterTo(this) { it.hasValOrVar() }
|
||||
classOrObject.declarations.filterIsInstance<KtProperty>().filterTo(this) {
|
||||
val descriptor = it.resolveToDescriptor()
|
||||
val descriptor = it.unsafeResolveToDescriptor()
|
||||
when (descriptor) {
|
||||
is ValueParameterDescriptor -> true
|
||||
is PropertyDescriptor -> descriptor.getter?.isDefault ?: true
|
||||
|
||||
@@ -62,7 +62,7 @@ public class GotoSuperActionHandler implements CodeInsightActionHandler {
|
||||
KtObjectDeclaration.class);
|
||||
if (declaration == null) return;
|
||||
|
||||
DeclarationDescriptor descriptor = ResolutionUtils.resolveToDescriptor(declaration, BodyResolveMode.PARTIAL);
|
||||
DeclarationDescriptor descriptor = ResolutionUtils.unsafeResolveToDescriptor(declaration, BodyResolveMode.PARTIAL);
|
||||
|
||||
List<PsiElement> superDeclarations = findSuperDeclarations(descriptor);
|
||||
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ public class KtFunctionPsiElementCellRenderer extends DefaultPsiElementCellRende
|
||||
public String getElementText(PsiElement element) {
|
||||
if (element instanceof KtNamedFunction) {
|
||||
KtNamedFunction function = (KtNamedFunction) element;
|
||||
DeclarationDescriptor descriptor = ResolutionUtils.resolveToDescriptor(function, BodyResolveMode.PARTIAL);
|
||||
DeclarationDescriptor descriptor = ResolutionUtils.unsafeResolveToDescriptor(function, BodyResolveMode.PARTIAL);
|
||||
return DescriptorRenderer.SHORT_NAMES_IN_TYPES.render(descriptor);
|
||||
}
|
||||
return super.getElementText(element);
|
||||
|
||||
+3
-3
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.idea.debugger.breakpoints.dialog
|
||||
import com.intellij.psi.PsiClass
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClass
|
||||
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.util.DescriptorMemberChooserObject
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
|
||||
@@ -28,7 +28,7 @@ fun PsiClass.collectProperties(): Array<DescriptorMemberChooserObject> {
|
||||
val result = arrayListOf<DescriptorMemberChooserObject>()
|
||||
this.files.forEach {
|
||||
it.declarations.filterIsInstance<KtProperty>().forEach {
|
||||
result.add(DescriptorMemberChooserObject(it, it.resolveToDescriptor()))
|
||||
result.add(DescriptorMemberChooserObject(it, it.unsafeResolveToDescriptor()))
|
||||
}
|
||||
}
|
||||
return result.toTypedArray()
|
||||
@@ -37,7 +37,7 @@ fun PsiClass.collectProperties(): Array<DescriptorMemberChooserObject> {
|
||||
val origin = this.kotlinOrigin
|
||||
if (origin != null) {
|
||||
return origin.declarations.filterIsInstance<KtProperty>().map {
|
||||
DescriptorMemberChooserObject(it, it.resolveToDescriptor())
|
||||
DescriptorMemberChooserObject(it, it.unsafeResolveToDescriptor())
|
||||
}.toTypedArray()
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.codegen.inline.KOTLIN_STRATA_NAME
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
|
||||
import org.jetbrains.kotlin.idea.debugger.*
|
||||
import org.jetbrains.kotlin.idea.debugger.stepping.DexBytecode.GOTO
|
||||
@@ -132,7 +132,7 @@ class KotlinSteppingCommandProvider : JvmSteppingCommandProvider() {
|
||||
}
|
||||
|
||||
// Step over calls to lambda arguments in inline function while execution is already in that function
|
||||
val containingFunctionDescriptor = kotlinSourcePosition.function.resolveToDescriptor()
|
||||
val containingFunctionDescriptor = kotlinSourcePosition.function.unsafeResolveToDescriptor()
|
||||
if (InlineUtil.isInline(containingFunctionDescriptor)) {
|
||||
val inlineArgumentsCallsIfAny = getInlineArgumentsCallsIfAny(sourcePosition, containingFunctionDescriptor)
|
||||
if (inlineArgumentsCallsIfAny != null && inlineArgumentsCallsIfAny.isNotEmpty()) {
|
||||
@@ -183,7 +183,7 @@ private fun getInlineFunctionsIfAny(file: KtFile, offset: Int): List<KtNamedFunc
|
||||
val elementAt = file.findElementAt(offset) ?: return emptyList()
|
||||
val containingFunction = elementAt.getParentOfType<KtNamedFunction>(false) ?: return emptyList()
|
||||
|
||||
val descriptor = containingFunction.resolveToDescriptor()
|
||||
val descriptor = containingFunction.unsafeResolveToDescriptor()
|
||||
if (!InlineUtil.isInline(descriptor)) return emptyList()
|
||||
|
||||
return DebuggerUtils.analyzeElementWithInline(containingFunction, false).filterIsInstance<KtNamedFunction>()
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiPackage
|
||||
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
@@ -71,7 +71,7 @@ class KotlinFindUsagesProvider : FindUsagesProvider {
|
||||
is KtProperty -> (element.name ?: "") + (element.containerDescription?.let { " of $it" } ?: "")
|
||||
is KtFunction -> {
|
||||
val name = element.name ?: ""
|
||||
val descriptor = element.resolveToDescriptor() as FunctionDescriptor
|
||||
val descriptor = element.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
val renderer = IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_IN_TYPES
|
||||
val paramsDescription = descriptor.valueParameters.joinToString(prefix = "(", postfix = ")") { renderer.renderType(it.type) }
|
||||
val returnType = descriptor.returnType
|
||||
|
||||
@@ -30,7 +30,7 @@ import com.intellij.psi.PsiReference
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.util.ArrayUtil
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.getDeepestSuperDeclarations
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinClassFindUsagesOptions
|
||||
@@ -119,7 +119,7 @@ class KotlinCallerTreeStructure(
|
||||
override fun buildChildren(nodeDescriptor: HierarchyNodeDescriptor): Array<Any> {
|
||||
val element = nodeDescriptor.psiElement as? KtDeclaration ?: return ArrayUtil.EMPTY_OBJECT_ARRAY
|
||||
val callerToDescriptorMap = Maps.newHashMap<PsiElement, NodeDescriptor<*>>()
|
||||
val descriptor = element.resolveToDescriptor()
|
||||
val descriptor = element.unsafeResolveToDescriptor()
|
||||
if (descriptor is CallableMemberDescriptor) {
|
||||
return descriptor.getDeepestSuperDeclarations().flatMap { rootDescriptor ->
|
||||
val rootElement = DescriptorToSourceUtilsIde.getAnyDeclaration(myProject, rootDescriptor)
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ import com.intellij.ui.LayeredIcon
|
||||
import com.intellij.ui.RowIcon
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaMemberDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
@@ -51,7 +51,7 @@ class KotlinOverrideHierarchyNodeDescriptor (
|
||||
|
||||
private fun resolveToDescriptor(psiElement: PsiElement): DeclarationDescriptor? {
|
||||
return when (psiElement) {
|
||||
is KtNamedDeclaration -> psiElement.resolveToDescriptor()
|
||||
is KtNamedDeclaration -> psiElement.unsafeResolveToDescriptor()
|
||||
is PsiMember -> psiElement.getJavaMemberDescriptor()
|
||||
else -> null
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator
|
||||
import com.intellij.ide.util.DefaultPsiElementCellRenderer
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.toDescriptor
|
||||
import org.jetbrains.kotlin.idea.highlighter.allImplementingCompatibleModules
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
@@ -85,7 +85,7 @@ private fun DeclarationDescriptor.headerImplementations(): Collection<Declaratio
|
||||
}
|
||||
|
||||
internal fun KtDeclaration.headerImplementations(): Set<KtDeclaration> {
|
||||
return resolveToDescriptor().headerImplementations().mapNotNullTo(LinkedHashSet()) {
|
||||
return unsafeResolveToDescriptor().headerImplementations().mapNotNullTo(LinkedHashSet()) {
|
||||
DescriptorToSourceUtils.descriptorToDeclaration(it) as? KtDeclaration
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.core.targetDescriptors
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
@@ -189,7 +189,7 @@ class ConflictingExtensionPropertyInspection : AbstractKotlinInspection(), Clean
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
|
||||
val declaration = element ?: return
|
||||
val fqName = declaration.resolveToDescriptor(BodyResolveMode.PARTIAL).importableFqName
|
||||
val fqName = declaration.unsafeResolveToDescriptor(BodyResolveMode.PARTIAL).importableFqName
|
||||
if (fqName != null) {
|
||||
ProgressManager.getInstance().run(
|
||||
object : Task.Modal(project, "Searching for imports to delete", true) {
|
||||
|
||||
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.replaced
|
||||
@@ -119,7 +119,7 @@ class ConvertFunctionToPropertyIntention : SelfTargetingIntention<KtNamedFunctio
|
||||
|
||||
if (callable is KtNamedFunction) {
|
||||
if (callable.typeReference == null) {
|
||||
val functionDescriptor = callable.resolveToDescriptor(BodyResolveMode.PARTIAL) as FunctionDescriptor
|
||||
val functionDescriptor = callable.unsafeResolveToDescriptor(BodyResolveMode.PARTIAL) as FunctionDescriptor
|
||||
val type = functionDescriptor.returnType
|
||||
val typeToInsert = when {
|
||||
type == null || type.isError -> null
|
||||
|
||||
+2
-2
@@ -29,7 +29,7 @@ import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.CallableRefactoring
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.usages.explicateReceiverOf
|
||||
@@ -320,7 +320,7 @@ class ConvertFunctionTypeParameterToReceiverIntention : SelfTargetingRangeIntent
|
||||
val function: KtFunction
|
||||
) {
|
||||
val isFirstParameter: Boolean get() = typeParameterIndex == 0
|
||||
val functionDescriptor by lazy { function.resolveToDescriptor() as FunctionDescriptor }
|
||||
val functionDescriptor by lazy { function.unsafeResolveToDescriptor() as FunctionDescriptor }
|
||||
}
|
||||
|
||||
private fun KtTypeReference.getConversionData(): ConversionData? {
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.builtins.getReceiverTypeFromFunctionType
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.CallableRefactoring
|
||||
@@ -57,7 +57,7 @@ class ConvertFunctionTypeReceiverToParameterIntention : SelfTargetingRangeIntent
|
||||
val lambdaReceiverType: KotlinType,
|
||||
val function: KtFunction
|
||||
) {
|
||||
val functionDescriptor by lazy { function.resolveToDescriptor() as FunctionDescriptor }
|
||||
val functionDescriptor by lazy { function.unsafeResolveToDescriptor() as FunctionDescriptor }
|
||||
}
|
||||
|
||||
class FunctionDefinitionInfo(element: KtFunction) : AbstractProcessableUsageInfo<KtFunction, ConversionData>(element) {
|
||||
|
||||
+3
-3
@@ -25,7 +25,7 @@ import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
||||
@@ -78,7 +78,7 @@ class MoveMemberOutOfCompanionObjectIntention : SelfTargetingRangeIntention<KtNa
|
||||
return
|
||||
}
|
||||
|
||||
val targetClassDescriptor = runReadAction { targetClass.resolveToDescriptor() as ClassDescriptor }
|
||||
val targetClassDescriptor = runReadAction { targetClass.unsafeResolveToDescriptor() as ClassDescriptor }
|
||||
|
||||
val conflicts = MultiMap<PsiElement, String>()
|
||||
|
||||
@@ -111,7 +111,7 @@ class MoveMemberOutOfCompanionObjectIntention : SelfTargetingRangeIntention<KtNa
|
||||
}
|
||||
|
||||
runReadAction {
|
||||
val callableDescriptor = element.resolveToDescriptor() as CallableMemberDescriptor
|
||||
val callableDescriptor = element.unsafeResolveToDescriptor() as CallableMemberDescriptor
|
||||
targetClassDescriptor.findCallableMemberBySignature(callableDescriptor)?.let {
|
||||
DescriptorToSourceUtilsIde.getAnyDeclaration(project, it)
|
||||
}?.let {
|
||||
|
||||
+6
-6
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptorWithResolutionScopes
|
||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkConflictsInteractively
|
||||
@@ -88,7 +88,7 @@ class MoveMemberToCompanionObjectIntention : SelfTargetingRangeIntention<KtNamed
|
||||
|
||||
private fun getNameSuggestionsForOuterInstance(element: KtNamedDeclaration): List<String> {
|
||||
val containingClass = element.containingClassOrObject as KtClass
|
||||
val containingClassDescriptor = containingClass.resolveToDescriptor() as ClassDescriptorWithResolutionScopes
|
||||
val containingClassDescriptor = containingClass.unsafeResolveToDescriptor() as ClassDescriptorWithResolutionScopes
|
||||
val companionDescriptor = containingClassDescriptor.companionObjectDescriptor
|
||||
val companionMemberScope = (companionDescriptor ?: containingClassDescriptor).scopeForMemberDeclarationResolution
|
||||
val validator = CollectingNameValidator(element.getValueParameters().mapNotNull { it.name }) {
|
||||
@@ -166,7 +166,7 @@ class MoveMemberToCompanionObjectIntention : SelfTargetingRangeIntention<KtNamed
|
||||
val parameterList = element.valueParameterList!!
|
||||
val parameters = parameterList.parameters
|
||||
|
||||
val newParamType = (containingClass.resolveToDescriptor() as ClassDescriptor).defaultType
|
||||
val newParamType = (containingClass.unsafeResolveToDescriptor() as ClassDescriptor).defaultType
|
||||
|
||||
nameSuggestions = getNameSuggestionsForOuterInstance(element)
|
||||
|
||||
@@ -238,7 +238,7 @@ class MoveMemberToCompanionObjectIntention : SelfTargetingRangeIntention<KtNamed
|
||||
}
|
||||
|
||||
private fun hasTypeParameterReferences(containingClass: KtClassOrObject, element: KtNamedDeclaration): Boolean {
|
||||
val containingClassDescriptor = containingClass.resolveToDescriptor()
|
||||
val containingClassDescriptor = containingClass.unsafeResolveToDescriptor()
|
||||
return element.collectDescendantsOfType<KtTypeReference> {
|
||||
val referencedDescriptor = it.analyze(BodyResolveMode.PARTIAL)[BindingContext.TYPE, it]?.constructor?.declarationDescriptor
|
||||
referencedDescriptor is TypeParameterDescriptor && referencedDescriptor.containingDeclaration == containingClassDescriptor
|
||||
@@ -285,8 +285,8 @@ class MoveMemberToCompanionObjectIntention : SelfTargetingRangeIntention<KtNamed
|
||||
val conflicts = MultiMap<PsiElement, String>()
|
||||
|
||||
containingClass.companionObjects.firstOrNull()?.let { companion ->
|
||||
val companionDescriptor = companion.resolveToDescriptor() as ClassDescriptor
|
||||
val callableDescriptor = element.resolveToDescriptor() as CallableMemberDescriptor
|
||||
val companionDescriptor = companion.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val callableDescriptor = element.unsafeResolveToDescriptor() as CallableMemberDescriptor
|
||||
companionDescriptor.findCallableMemberBySignature(callableDescriptor)?.let {
|
||||
DescriptorToSourceUtilsIde.getAnyDeclaration(project, it)
|
||||
}?.let {
|
||||
|
||||
+3
-3
@@ -31,7 +31,7 @@ import com.intellij.psi.search.searches.ReferencesSearch
|
||||
import com.intellij.util.SmartList
|
||||
import org.jetbrains.kotlin.asJava.toLightMethods
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.headerImplementations
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isHeaderOrHeaderClassMember
|
||||
@@ -111,7 +111,7 @@ class ConvertMemberToExtensionIntention : SelfTargetingRangeIntention<KtCallable
|
||||
element: KtCallableDeclaration,
|
||||
allowHeader: Boolean
|
||||
): Pair<KtCallableDeclaration, KtExpression?> {
|
||||
val descriptor = element.resolveToDescriptor()
|
||||
val descriptor = element.unsafeResolveToDescriptor()
|
||||
val containingClass = descriptor.containingDeclaration as ClassDescriptor
|
||||
|
||||
val isEffectiveHeader = allowHeader && element.isHeaderOrHeaderClassMember()
|
||||
@@ -224,7 +224,7 @@ class ConvertMemberToExtensionIntention : SelfTargetingRangeIntention<KtCallable
|
||||
}
|
||||
|
||||
if (ktFilesToAddImports.isNotEmpty()) {
|
||||
val newDescriptor = extension.resolveToDescriptor()
|
||||
val newDescriptor = extension.unsafeResolveToDescriptor()
|
||||
val importInsertHelper = ImportInsertHelper.getInstance(project)
|
||||
for (ktFileToAddImport in ktFilesToAddImports) {
|
||||
importInsertHelper.importDescriptor(ktFileToAddImport, newDescriptor)
|
||||
|
||||
+2
-2
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.idea.intentions.loopToCallChain.result
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.*
|
||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.sequence.*
|
||||
@@ -180,7 +180,7 @@ class AddToCollectionTransformation(
|
||||
}
|
||||
|
||||
private fun canChangeInitializerType(initialization: VariableInitialization, newTypeFqName: FqName, loop: KtForExpression): Boolean {
|
||||
val currentType = (initialization.variable.resolveToDescriptor() as VariableDescriptor).type
|
||||
val currentType = (initialization.variable.unsafeResolveToDescriptor() as VariableDescriptor).type
|
||||
if ((currentType.constructor.declarationDescriptor as? ClassDescriptor)?.importableFqName == newTypeFqName) return true // already of the required type
|
||||
|
||||
// we do not change explicit type
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@
|
||||
package org.jetbrains.kotlin.idea.intentions.loopToCallChain.result
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.isNullExpression
|
||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.*
|
||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.sequence.Condition
|
||||
@@ -249,7 +249,7 @@ object FindTransformationMatcher : TransformationMatcher {
|
||||
|
||||
}
|
||||
else {
|
||||
val inputVariableCanHoldNull = (inputVariable.resolveToDescriptor() as VariableDescriptor).type.nullability() != TypeNullability.NOT_NULL
|
||||
val inputVariableCanHoldNull = (inputVariable.unsafeResolveToDescriptor() as VariableDescriptor).type.nullability() != TypeNullability.NOT_NULL
|
||||
|
||||
fun FindOperationGenerator.useElvisOperatorIfNeeded(): FindOperationGenerator? {
|
||||
if (valueIfNotFound.isNullExpression()) return this
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.ReadValueInstructio
|
||||
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraverseInstructionResult
|
||||
import org.jetbrains.kotlin.cfg.pseudocodeTraverser.traverseFollowingInstructions
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.*
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
|
||||
@@ -73,7 +73,7 @@ object IntroduceIndexMatcher : TransformationMatcher {
|
||||
val incrementInstruction = pseudocode.instructionForElement(incrementExpression)!!
|
||||
if (!isAlwaysReachedOrExitedLoop(firstInstruction, incrementInstruction, state.outerLoop, state.innerLoop)) return null
|
||||
|
||||
val variableDescriptor = variable.resolveToDescriptor() as VariableDescriptor
|
||||
val variableDescriptor = variable.unsafeResolveToDescriptor() as VariableDescriptor
|
||||
if (isAccessedAfter(variableDescriptor, incrementInstruction, state.innerLoop)) return null // index accessed inside loop after increment
|
||||
|
||||
val restStatements = state.statements - incrementExpression // if it is among statements then drop it, otherwise "index++" will be replaced with "index" by generateLambda()
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.diagnostics.Errors.COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
||||
@@ -74,7 +74,7 @@ abstract class ChangeCallableReturnTypeFix(
|
||||
val element = element!!
|
||||
val name = element.name
|
||||
if (name != null) {
|
||||
val container = element.resolveToDescriptor().containingDeclaration as? ClassDescriptor
|
||||
val container = element.unsafeResolveToDescriptor().containingDeclaration as? ClassDescriptor
|
||||
val containerName = container?.name?.takeUnless { it.isSpecial }?.asString()
|
||||
val fullName = if (containerName != null) "'$containerName.$name'" else "'$name'"
|
||||
if (element is KtParameter) {
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
|
||||
import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchRequest
|
||||
@@ -86,7 +86,7 @@ class ChangeSuspendInHierarchyFix(
|
||||
val progressIndicator = ProgressManager.getInstance().progressIndicator
|
||||
|
||||
val function = element ?: return emptySet()
|
||||
val functionDescriptor = function.resolveToDescriptor() as FunctionDescriptor
|
||||
val functionDescriptor = function.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
|
||||
val baseFunctionDescriptors = functionDescriptor.findTopMostOverriddables()
|
||||
baseFunctionDescriptors.forEach { baseFunctionDescriptor ->
|
||||
@@ -98,7 +98,7 @@ class ChangeSuspendInHierarchyFix(
|
||||
val classes = listOf(baseClass) + HierarchySearchRequest(baseClass, baseClass.useScope).searchInheritors()
|
||||
classes.mapNotNullTo(result) {
|
||||
val subClass = it.unwrapped as? KtClassOrObject ?: return@mapNotNullTo null
|
||||
val classDescriptor = subClass.resolveToDescriptor() as ClassDescriptor
|
||||
val classDescriptor = subClass.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val substitutor = getTypeSubstitutor(baseClassDescriptor.defaultType, classDescriptor.defaultType)
|
||||
?: return@mapNotNullTo null
|
||||
val signatureInSubClass = baseFunctionDescriptor.substitute(substitutor) as FunctionDescriptor
|
||||
@@ -181,7 +181,7 @@ class ChangeSuspendInHierarchyFix(
|
||||
|
||||
override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
|
||||
val currentFunction = diagnostic.psiElement as? KtNamedFunction ?: return emptyList()
|
||||
val currentDescriptor = currentFunction.resolveToDescriptor() as FunctionDescriptor
|
||||
val currentDescriptor = currentFunction.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
Errors.CONFLICTING_OVERLOADS.cast(diagnostic).a.getOverridables(currentDescriptor).ifEmpty { return emptyList() }
|
||||
|
||||
return listOf(
|
||||
|
||||
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
||||
@@ -49,7 +49,7 @@ open class ChangeVariableTypeFix(element: KtVariableDeclaration, type: KotlinTyp
|
||||
val element = element!!
|
||||
val name = element.name
|
||||
return if (name != null) {
|
||||
val container = element.resolveToDescriptor().containingDeclaration as? ClassDescriptor
|
||||
val container = element.unsafeResolveToDescriptor().containingDeclaration as? ClassDescriptor
|
||||
val containerName = container?.name?.takeUnless { it.isSpecial }?.asString()
|
||||
if (containerName != null) "'$containerName.$name'" else "'$name'"
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.moveCaret
|
||||
import org.jetbrains.kotlin.idea.quickfix.quickfixUtil.createIntentionForFirstParentOfType
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||
@@ -48,7 +48,7 @@ class InsertDelegationCallQuickfix(val isThis: Boolean, element: KtSecondaryCons
|
||||
val newDelegationCall = element.replaceImplicitDelegationCallWithExplicit(isThis)
|
||||
|
||||
val resolvedCall = newDelegationCall.getResolvedCall(newDelegationCall.analyze())
|
||||
val descriptor = element.resolveToDescriptor()
|
||||
val descriptor = element.unsafeResolveToDescriptor()
|
||||
|
||||
// if empty call is ok and it's resolved to another constructor, do not move caret
|
||||
if (resolvedCall?.isReallySuccess() ?: false && resolvedCall!!.candidateDescriptor.original != descriptor) return
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtFunctionLiteral
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
@@ -36,7 +36,7 @@ class RemoveUnusedFunctionParameterFix(parameter: KtParameter) : KotlinQuickFixA
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
|
||||
val element = element ?: return
|
||||
val parameterDescriptor = element.resolveToDescriptor() as ValueParameterDescriptor
|
||||
val parameterDescriptor = element.unsafeResolveToDescriptor() as ValueParameterDescriptor
|
||||
ChangeFunctionSignatureFix.runRemoveParameter(parameterDescriptor, element)
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeAndGetResult
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.canRefactor
|
||||
@@ -147,7 +147,7 @@ sealed class CreateCallableFromCallActionFactory<E : KtExpression>(
|
||||
else {
|
||||
containingClass = originalExpression.getStrictParentOfType<KtClassOrObject>() as? KtClass ?: return null
|
||||
if (containingClass is KtEnumEntry) return null
|
||||
receiverType = (containingClass.resolveToDescriptor() as ClassDescriptor).defaultType
|
||||
receiverType = (containingClass.unsafeResolveToDescriptor() as ClassDescriptor).defaultType
|
||||
}
|
||||
|
||||
if (!receiverType.isAbstract() && TypeUtils.getAllSupertypes(receiverType).all { !it.isAbstract() }) return null
|
||||
|
||||
+3
-3
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.asJava.namedUnwrappedElement
|
||||
import org.jetbrains.kotlin.asJava.toLightMethods
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.headerImplementations
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.isHeaderOrHeaderClassMember
|
||||
@@ -100,7 +100,7 @@ class KotlinChangeSignatureData(
|
||||
|
||||
if (primaryDeclaration.isHeaderOrHeaderClassMember()) {
|
||||
return@flatMapTo primaryDeclaration.headerImplementations().mapNotNull {
|
||||
val descriptor = it.resolveToDescriptor()
|
||||
val descriptor = it.unsafeResolveToDescriptor()
|
||||
val callableDescriptor = when (descriptor) {
|
||||
is CallableDescriptor -> descriptor
|
||||
is ClassDescriptor -> descriptor.unsubstitutedPrimaryConstructor ?: return@mapNotNull null
|
||||
@@ -118,7 +118,7 @@ class KotlinChangeSignatureData(
|
||||
.mapNotNullTo(HashSet<UsageInfo>()) { overridingMethod ->
|
||||
if (overridingMethod is KtLightMethod) {
|
||||
val overridingDeclaration = overridingMethod.namedUnwrappedElement as KtNamedDeclaration
|
||||
val overridingDescriptor = overridingDeclaration.resolveToDescriptor() as CallableDescriptor
|
||||
val overridingDescriptor = overridingDeclaration.unsafeResolveToDescriptor() as CallableDescriptor
|
||||
KotlinCallableDefinitionUsage<PsiElement>(overridingDeclaration, overridingDescriptor, primaryFunction, null)
|
||||
}
|
||||
else OverriderUsageInfo(overridingMethod, baseMethod, true, true, true)
|
||||
|
||||
+1
-1
@@ -923,7 +923,7 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor {
|
||||
baseFunction = baseFunction.createPrimaryConstructorIfAbsent()
|
||||
}
|
||||
val resolutionFacade = baseFunction.getResolutionFacade()
|
||||
val baseFunctionDescriptor = baseFunction.resolveToDescriptor() as FunctionDescriptor
|
||||
val baseFunctionDescriptor = baseFunction.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
val methodDescriptor = KotlinChangeSignatureData(baseFunctionDescriptor, baseFunction, listOf(baseFunctionDescriptor))
|
||||
|
||||
val dummyClass = JavaPsiFacade.getElementFactory(method.project).createClass("Dummy")
|
||||
|
||||
+3
-3
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.hierarchy.calls.CalleeReferenceProcessor
|
||||
import org.jetbrains.kotlin.idea.hierarchy.calls.KotlinCallHierarchyNodeDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
@@ -79,8 +79,8 @@ class KotlinMethodNode(
|
||||
|
||||
override fun customizeRendererText(renderer: ColoredTreeCellRenderer) {
|
||||
val descriptor = when (myMethod) {
|
||||
is KtFunction -> myMethod.resolveToDescriptor() as FunctionDescriptor
|
||||
is KtClass -> (myMethod.resolveToDescriptor() as ClassDescriptor).unsubstitutedPrimaryConstructor ?: return
|
||||
is KtFunction -> myMethod.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
is KtClass -> (myMethod.unsafeResolveToDescriptor() as ClassDescriptor).unsubstitutedPrimaryConstructor ?: return
|
||||
is PsiMethod -> myMethod.getJavaMethodDescriptor() ?: return
|
||||
else -> throw AssertionError("Invalid declaration: ${myMethod.getElementTextWithContext()}")
|
||||
}
|
||||
|
||||
+3
-3
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet
|
||||
import org.jetbrains.kotlin.idea.core.setVisibility
|
||||
import org.jetbrains.kotlin.idea.core.toKeywordToken
|
||||
@@ -61,8 +61,8 @@ class KotlinCallableDefinitionUsage<T : PsiElement>(
|
||||
val currentCallableDescriptor: CallableDescriptor? by lazy {
|
||||
val element = declaration
|
||||
when (element) {
|
||||
is KtFunction, is KtProperty, is KtParameter -> (element as KtDeclaration).resolveToDescriptor() as CallableDescriptor
|
||||
is KtClass -> (element.resolveToDescriptor() as ClassDescriptor).unsubstitutedPrimaryConstructor
|
||||
is KtFunction, is KtProperty, is KtParameter -> (element as KtDeclaration).unsafeResolveToDescriptor() as CallableDescriptor
|
||||
is KtClass -> (element.unsafeResolveToDescriptor() as ClassDescriptor).unsubstitutedPrimaryConstructor
|
||||
is PsiMethod -> element.getJavaMethodDescriptor()
|
||||
else -> null
|
||||
}
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ import com.intellij.psi.PsiComment
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.PsiWhiteSpace
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtClassBody
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
@@ -72,7 +72,7 @@ class MoveDeclarationsCopyPasteProcessor : CopyPastePostProcessor<MoveDeclaratio
|
||||
if (declarations.any { it.name == null }) return emptyList()
|
||||
val declarationNames = declarations.map { it.name!! }.toSet()
|
||||
|
||||
val stubTexts = declarations.map { MoveDeclarationsTransferableData.STUB_RENDERER.render(it.resolveToDescriptor()) }
|
||||
val stubTexts = declarations.map { MoveDeclarationsTransferableData.STUB_RENDERER.render(it.unsafeResolveToDescriptor()) }
|
||||
return listOf(MoveDeclarationsTransferableData(file.virtualFile.url, sourceObjectFqName, stubTexts, declarationNames))
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.openapi.vfs.VirtualFileManager
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiManager
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.runRefactoringAndKeepDelayedRequests
|
||||
import org.jetbrains.kotlin.idea.conversion.copy.range
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*
|
||||
@@ -73,7 +73,7 @@ class MoveDeclarationsProcessor(
|
||||
// check that declarations were cut (not copied)
|
||||
val filteredDeclarations = sourceContainer.declarations.filter { it.name in data.declarationNames }
|
||||
val stubs = data.stubTexts.toSet()
|
||||
if (filteredDeclarations.any { MoveDeclarationsTransferableData.STUB_RENDERER.render(it.resolveToDescriptor()) in stubs }) return null
|
||||
if (filteredDeclarations.any { MoveDeclarationsTransferableData.STUB_RENDERER.render(it.unsafeResolveToDescriptor()) in stubs }) return null
|
||||
|
||||
return MoveDeclarationsProcessor(project, sourceContainer, targetPsiFile, declarations, data.stubTexts)
|
||||
}
|
||||
|
||||
+2
-2
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInliner.CallableUsageReplacementStrategy
|
||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
@@ -62,7 +62,7 @@ class KotlinInlineFunctionHandler: InlineActionHandler() {
|
||||
return
|
||||
}
|
||||
|
||||
val descriptor = element.resolveToDescriptor() as SimpleFunctionDescriptor
|
||||
val descriptor = element.unsafeResolveToDescriptor() as SimpleFunctionDescriptor
|
||||
val codeToInline = buildCodeToInline(
|
||||
element,
|
||||
descriptor.returnType,
|
||||
|
||||
+2
-2
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.builtins.isFunctionType
|
||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.replaced
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
@@ -67,7 +67,7 @@ class KotlinInlineTypeAliasHandler : InlineActionHandler() {
|
||||
val aliasBody = typeAlias.getTypeReference() ?: return
|
||||
val file = typeAlias.containingKtFile
|
||||
|
||||
val typeAliasDescriptor = typeAlias.resolveToDescriptor() as TypeAliasDescriptor
|
||||
val typeAliasDescriptor = typeAlias.unsafeResolveToDescriptor() as TypeAliasDescriptor
|
||||
val typeToInline = typeAliasDescriptor.expandedType
|
||||
val typeConstructorsToInline = typeAliasDescriptor.typeConstructor.parameters.map { it.typeConstructor }
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.intellij.refactoring.util.CommonRefactoringUtil
|
||||
import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.descriptors.ValueDescriptor
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInliner.CodeToInline
|
||||
import org.jetbrains.kotlin.idea.codeInliner.PropertyUsageReplacementStrategy
|
||||
import org.jetbrains.kotlin.idea.project.builtIns
|
||||
@@ -87,7 +87,7 @@ class KotlinInlineValHandler(private val withPrompt: Boolean) : InlineActionHand
|
||||
val readReplacement: CodeToInline?
|
||||
val writeReplacement: CodeToInline?
|
||||
val assignmentToDelete: KtBinaryExpression?
|
||||
val descriptor = declaration.resolveToDescriptor() as ValueDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as ValueDescriptor
|
||||
val isTypeExplicit = declaration.typeReference != null
|
||||
if (getter == null && setter == null) {
|
||||
val initialization = extractInitialization(declaration, referenceExpressions, project, editor) ?: return
|
||||
|
||||
@@ -31,7 +31,7 @@ import com.intellij.usageView.UsageInfo
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.idea.analysis.analyzeInContext
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInliner.CodeToInline
|
||||
import org.jetbrains.kotlin.idea.codeInliner.CodeToInlineBuilder
|
||||
import org.jetbrains.kotlin.idea.core.copied
|
||||
@@ -134,7 +134,7 @@ internal fun buildCodeToInline(
|
||||
expectedType = expectedType)
|
||||
}
|
||||
|
||||
val descriptor = declaration.resolveToDescriptor()
|
||||
val descriptor = declaration.unsafeResolveToDescriptor()
|
||||
val builder = CodeToInlineBuilder(descriptor as CallableDescriptor, declaration.getResolutionFacade())
|
||||
if (isBlockBody) {
|
||||
bodyCopy as KtBlockExpression
|
||||
|
||||
+2
-2
@@ -35,7 +35,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.actions.NewKotlinFileAction
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.performDelayedRefactoringRequests
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
@@ -297,7 +297,7 @@ class ExtractSuperRefactoring(
|
||||
handler.getErrorMessage(originalClass)?.let { throw CommonRefactoringUtil.RefactoringErrorHintException(it) }
|
||||
|
||||
val superClassEntry = if (!extractInfo.isInterface) {
|
||||
val originalClassDescriptor = originalClass.resolveToDescriptor() as ClassDescriptor
|
||||
val originalClassDescriptor = originalClass.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val superClassDescriptor = originalClassDescriptor.getSuperClassNotAny()
|
||||
originalClass.superTypeListEntries.firstOrNull {
|
||||
bindingContext[BindingContext.TYPE, it.typeReference]?.constructor?.declarationDescriptor == superClassDescriptor
|
||||
|
||||
+2
-2
@@ -35,7 +35,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle
|
||||
@@ -458,7 +458,7 @@ open class KotlinIntroduceLambdaParameterHandler(
|
||||
lambdaExtractionDescriptor: ExtractableCodeDescriptor
|
||||
): KotlinIntroduceParameterDialog? {
|
||||
val callable = lambdaExtractionDescriptor.extractionData.targetSibling as KtNamedDeclaration
|
||||
val descriptor = callable.resolveToDescriptor()
|
||||
val descriptor = callable.unsafeResolveToDescriptor()
|
||||
val callableDescriptor = descriptor.toFunctionDescriptor(callable)
|
||||
val originalRange = lambdaExtractionDescriptor.extractionData.originalRange
|
||||
val parametersUsages = findInternalUsagesOfParametersAndReceiver(callable, callableDescriptor) ?: return null
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.dropOverrideKeywordIfNecessary
|
||||
import org.jetbrains.kotlin.idea.refactoring.j2k
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.*
|
||||
@@ -54,7 +54,7 @@ class KotlinIntroduceParameterMethodUsageProcessor : IntroduceParameterMethodUsa
|
||||
|
||||
private fun createChangeInfo(data: IntroduceParameterData, method: PsiElement): KotlinChangeInfo? {
|
||||
val psiMethodDescriptor = when (method) {
|
||||
is KtFunction -> method.resolveToDescriptor() as? FunctionDescriptor
|
||||
is KtFunction -> method.unsafeResolveToDescriptor() as? FunctionDescriptor
|
||||
is PsiMethod -> method.getJavaMethodDescriptor()
|
||||
else -> null
|
||||
} ?: return null
|
||||
|
||||
+2
-2
@@ -24,7 +24,7 @@ import com.intellij.util.containers.LinkedMultiMap
|
||||
import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||
import org.jetbrains.kotlin.idea.analysis.analyzeInContext
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.CollectingNameValidator
|
||||
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
||||
@@ -157,7 +157,7 @@ fun IntroduceTypeAliasDescriptor.validate(): IntroduceTypeAliasDescriptorWithCon
|
||||
fun findDuplicates(typeAlias: KtTypeAlias): Map<KotlinPsiRange, () -> Unit> {
|
||||
val aliasName = typeAlias.name?.quoteIfNeeded() ?: return emptyMap()
|
||||
val aliasRange = typeAlias.textRange
|
||||
val typeAliasDescriptor = typeAlias.resolveToDescriptor() as TypeAliasDescriptor
|
||||
val typeAliasDescriptor = typeAlias.unsafeResolveToDescriptor() as TypeAliasDescriptor
|
||||
|
||||
val unifierParameters = typeAliasDescriptor.declaredTypeParameters.map { UnifierParameter(it, null) }
|
||||
val unifier = KotlinPsiUnifier(unifierParameters)
|
||||
|
||||
@@ -72,7 +72,7 @@ import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaMemberDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
@@ -579,7 +579,7 @@ fun createJavaField(property: KtNamedDeclaration, targetClass: PsiClass): PsiFie
|
||||
}
|
||||
|
||||
fun createJavaClass(klass: KtClass, targetClass: PsiClass?, forcePlainClass: Boolean = false): PsiClass {
|
||||
val kind = if (forcePlainClass) ClassKind.CLASS else (klass.resolveToDescriptor() as ClassDescriptor).kind
|
||||
val kind = if (forcePlainClass) ClassKind.CLASS else (klass.unsafeResolveToDescriptor() as ClassDescriptor).kind
|
||||
|
||||
val factory = PsiElementFactory.SERVICE.getInstance(klass.project)
|
||||
val className = klass.name!!
|
||||
@@ -886,7 +886,7 @@ fun checkSuperMethods(
|
||||
}
|
||||
|
||||
|
||||
val declarationDescriptor = declaration.resolveToDescriptor() as CallableDescriptor
|
||||
val declarationDescriptor = declaration.unsafeResolveToDescriptor() as CallableDescriptor
|
||||
|
||||
if (declarationDescriptor is LocalVariableDescriptor) return listOf(declaration)
|
||||
|
||||
@@ -974,6 +974,6 @@ internal fun KtDeclaration.withHeaderImplementations(): List<KtDeclaration> {
|
||||
}
|
||||
|
||||
internal fun KtDeclaration.resolveToHeaderDescriptorIfPossible(): DeclarationDescriptor {
|
||||
val descriptor = resolveToDescriptor()
|
||||
val descriptor = unsafeResolveToDescriptor()
|
||||
return descriptor.liftToHeader() ?: descriptor
|
||||
}
|
||||
+2
-2
@@ -21,7 +21,7 @@ import com.intellij.refactoring.classMembers.ClassMembersRefactoringSupport
|
||||
import com.intellij.refactoring.classMembers.DependentMembersCollectorBase
|
||||
import com.intellij.refactoring.classMembers.MemberInfoBase
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.pullUp.KotlinPullUpData
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -57,7 +57,7 @@ class KotlinClassMembersRefactoringSupport : ClassMembersRefactoringSupport {
|
||||
if (containingClassOrObject !in possibleContainingClasses) return
|
||||
|
||||
if (pullUpData != null) {
|
||||
val memberDescriptor = referencedMember.resolveToDescriptor() as? CallableMemberDescriptor ?: return
|
||||
val memberDescriptor = referencedMember.unsafeResolveToDescriptor() as? CallableMemberDescriptor ?: return
|
||||
val memberInSuper = memberDescriptor.substitute(pullUpData.sourceToTargetClassSubstitutor) ?: return
|
||||
if (pullUpData.targetClassDescriptor.findCallableMemberBySignature(memberInSuper as CallableMemberDescriptor) != null) return
|
||||
}
|
||||
|
||||
+3
-3
@@ -24,7 +24,7 @@ import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.isToBeShortened
|
||||
import org.jetbrains.kotlin.idea.refactoring.move.*
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
@@ -92,7 +92,7 @@ sealed class MoveDeclarationsDelegate {
|
||||
is KotlinMoveTargetForCompanion -> true
|
||||
is KotlinMoveTargetForExistingElement -> {
|
||||
val targetClass = moveTarget.targetElement as? KtClassOrObject ?: return false
|
||||
val targetClassDescriptor = targetClass.resolveToDescriptor() as ClassDescriptor
|
||||
val targetClassDescriptor = targetClass.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val companionClassDescriptor = companionDescriptor.containingDeclaration as? ClassDescriptor ?: return false
|
||||
targetClassDescriptor.isSubclassOf(companionClassDescriptor)
|
||||
}
|
||||
@@ -139,7 +139,7 @@ sealed class MoveDeclarationsDelegate {
|
||||
}
|
||||
|
||||
if (outerInstanceParameterName != null) {
|
||||
val type = (containingClassOrObject!!.resolveToDescriptor() as ClassDescriptor).defaultType
|
||||
val type = (containingClassOrObject!!.unsafeResolveToDescriptor() as ClassDescriptor).defaultType
|
||||
val parameter = KtPsiFactory(project)
|
||||
.createParameter("private val $outerInstanceParameterName: ${IdeDescriptorRenderers.SOURCE_CODE.renderType(type)}")
|
||||
createPrimaryConstructorParameterListIfAbsent().addParameter(parameter).isToBeShortened = true
|
||||
|
||||
+3
-3
@@ -332,7 +332,7 @@ class MoveConflictChecker(
|
||||
if (!declarationToContainers.getOrPut(referencedElement) { HashSet<PsiElement>() }.add(container)) continue
|
||||
|
||||
val referencingDescriptor = when (container) {
|
||||
is KtDeclaration -> container.resolveToDescriptor()
|
||||
is KtDeclaration -> container.unsafeResolveToDescriptor()
|
||||
is PsiMember -> container.getJavaMemberDescriptor()
|
||||
else -> null
|
||||
} ?: continue
|
||||
@@ -381,7 +381,7 @@ class MoveConflictChecker(
|
||||
if (targetVisibility == Visibilities.PUBLIC) return true
|
||||
|
||||
val referrer = ref.element.getStrictParentOfType<KtNamedDeclaration>()
|
||||
val referrerDescriptor = referrer?.resolveToDescriptor() ?: return true
|
||||
val referrerDescriptor = referrer?.unsafeResolveToDescriptor() ?: return true
|
||||
|
||||
if (!isVisibleIn(referrerDescriptor)) return true
|
||||
|
||||
@@ -399,7 +399,7 @@ class MoveConflictChecker(
|
||||
if (isToBeMoved(target)) return@forEach
|
||||
|
||||
val targetDescriptor = when (target) {
|
||||
is KtDeclaration -> target.resolveToDescriptor()
|
||||
is KtDeclaration -> target.unsafeResolveToDescriptor()
|
||||
is PsiMember -> target.getJavaMemberDescriptor()
|
||||
else -> null
|
||||
} as? DeclarationDescriptorWithVisibility ?: return@forEach
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ public class MoveKotlinNestedClassesToUpperLevelDialog extends MoveDialogBase {
|
||||
this.project = project;
|
||||
this.innerClass = innerClass;
|
||||
this.targetContainer = targetContainer;
|
||||
this.innerClassDescriptor = (ClassDescriptor) ResolutionUtils.resolveToDescriptor(innerClass, BodyResolveMode.FULL);
|
||||
this.innerClassDescriptor = (ClassDescriptor) ResolutionUtils.unsafeResolveToDescriptor(innerClass, BodyResolveMode.FULL);
|
||||
setTitle("Move Nested Classes to Upper Level");
|
||||
init();
|
||||
packageNameLabel.setLabelFor(packageNameField.getChildComponent());
|
||||
|
||||
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.addDelayedImportRequest
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
@@ -484,7 +484,7 @@ fun traverseOuterInstanceReferences(member: KtNamedDeclaration, stopAtFirst: Boo
|
||||
|
||||
val context = member.analyzeFully()
|
||||
val containingClassOrObject = member.containingClassOrObject ?: return false
|
||||
val outerClassDescriptor = containingClassOrObject.resolveToDescriptor() as ClassDescriptor
|
||||
val outerClassDescriptor = containingClassOrObject.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
var found = false
|
||||
member.accept(
|
||||
object : PsiRecursiveElementWalkingVisitor() {
|
||||
|
||||
@@ -26,7 +26,7 @@ import com.intellij.refactoring.HelpID
|
||||
import com.intellij.refactoring.RefactoringBundle
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.refactoring.canRefactor
|
||||
import org.jetbrains.kotlin.idea.refactoring.AbstractPullPushMembersHandler
|
||||
@@ -71,7 +71,7 @@ class KotlinPullUpHandler : AbstractPullPushMembersHandler(
|
||||
return
|
||||
}
|
||||
|
||||
val classDescriptor = classOrObject.resolveToDescriptor() as ClassDescriptor
|
||||
val classDescriptor = classOrObject.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val superClasses = classDescriptor.defaultType
|
||||
.supertypes()
|
||||
.mapNotNull {
|
||||
|
||||
+3
-3
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getJavaClassDescriptor
|
||||
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.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.getOrCreateCompanionObject
|
||||
import org.jetbrains.kotlin.idea.refactoring.isInterfaceClass
|
||||
import org.jetbrains.kotlin.idea.refactoring.j2k
|
||||
@@ -53,7 +53,7 @@ class JavaToKotlinPushDownDelegate : JavaPushDownDelegate() {
|
||||
super.checkTargetClassConflicts(targetClass, pushDownData, conflicts, subClassData)
|
||||
|
||||
val ktClass = targetClass?.unwrapped as? KtClassOrObject ?: return
|
||||
val targetClassDescriptor = ktClass.resolveToDescriptor() as ClassDescriptor
|
||||
val targetClassDescriptor = ktClass.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
for (memberInfo in pushDownData.membersToMove) {
|
||||
val member = memberInfo.member ?: continue
|
||||
checkExternalUsages(conflicts, member, targetClassDescriptor, ktClass.getResolutionFacade())
|
||||
@@ -65,7 +65,7 @@ class JavaToKotlinPushDownDelegate : JavaPushDownDelegate() {
|
||||
val subClass = targetClass.unwrapped as? KtClassOrObject ?: return
|
||||
val resolutionFacade = subClass.getResolutionFacade()
|
||||
val superClassDescriptor = superClass.getJavaClassDescriptor(resolutionFacade) ?: return
|
||||
val subClassDescriptor = subClass.resolveToDescriptor() as ClassDescriptor
|
||||
val subClassDescriptor = subClass.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val substitutor = getTypeSubstitutor(superClassDescriptor.defaultType, subClassDescriptor.defaultType) ?: TypeSubstitutor.EMPTY
|
||||
val psiFactory = KtPsiFactory(subClass)
|
||||
var hasAbstractMembers = false
|
||||
|
||||
@@ -24,17 +24,14 @@ import com.intellij.refactoring.rename.naming.AutomaticRenamer
|
||||
import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.headerDescriptor
|
||||
import org.jetbrains.kotlin.idea.util.getAllAccessibleFunctions
|
||||
import org.jetbrains.kotlin.idea.util.getResolutionScope
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
import org.jetbrains.kotlin.psi.UserDataProperty
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
@@ -66,7 +63,7 @@ class AutomaticOverloadsRenamer(function: KtNamedFunction, newName: String) : Au
|
||||
private fun KtNamedFunction.getOverloads(): Collection<FunctionDescriptor> {
|
||||
val name = nameAsName ?: return emptyList()
|
||||
val resolutionFacade = getResolutionFacade()
|
||||
val descriptor = this.resolveToDescriptor() as FunctionDescriptor
|
||||
val descriptor = this.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
val context = resolutionFacade.analyze(this, BodyResolveMode.FULL)
|
||||
val scope = getResolutionScope(context, resolutionFacade)
|
||||
val extensionReceiverClass = descriptor.extensionReceiverParameter?.type?.constructor?.declarationDescriptor as? ClassDescriptor
|
||||
|
||||
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.asJava.toLightElements
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.unquote
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isAncestor
|
||||
@@ -66,7 +66,7 @@ class AutomaticVariableRenamer(
|
||||
if (parameterOrVariable.typeReference?.isAncestor(usageElement) != true) continue
|
||||
|
||||
val descriptor = try {
|
||||
parameterOrVariable.resolveToDescriptor()
|
||||
parameterOrVariable.unsafeResolveToDescriptor()
|
||||
} catch(e: NoDescriptorForDeclarationException) {
|
||||
LOG.error(e)
|
||||
continue
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration
|
||||
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtConstructor
|
||||
@@ -113,7 +113,7 @@ class RenameKotlinClassProcessor : RenameKotlinPsiProcessor() {
|
||||
) {
|
||||
if (newName == null) return
|
||||
val declaration = element.namedUnwrappedElement as? KtNamedDeclaration ?: return
|
||||
val descriptor = declaration.resolveToDescriptor() as ClassDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
|
||||
val collisions = SmartList<UsageInfo>()
|
||||
checkRedeclarations(descriptor, newName, collisions)
|
||||
|
||||
+3
-3
@@ -38,7 +38,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.liftToHeader
|
||||
import org.jetbrains.kotlin.idea.refactoring.Pass
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkSuperMethods
|
||||
@@ -71,7 +71,7 @@ class RenameKotlinFunctionProcessor : RenameKotlinPsiProcessor() {
|
||||
}
|
||||
|
||||
private fun getJvmName(element: PsiElement): String? {
|
||||
val descriptor = (element.unwrapped as? KtFunction)?.resolveToDescriptor() as? FunctionDescriptor ?: return null
|
||||
val descriptor = (element.unwrapped as? KtFunction)?.unsafeResolveToDescriptor() as? FunctionDescriptor ?: return null
|
||||
return DescriptorUtils.getJvmName(descriptor)
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ class RenameKotlinFunctionProcessor : RenameKotlinPsiProcessor() {
|
||||
) {
|
||||
if (newName == null) return
|
||||
val declaration = element.unwrapped as? KtNamedFunction ?: return
|
||||
val descriptor = declaration.resolveToDescriptor()
|
||||
val descriptor = declaration.unsafeResolveToDescriptor()
|
||||
checkConflictsAndReplaceUsageInfos(element, allRenames, result)
|
||||
checkRedeclarations(descriptor, newName, result)
|
||||
}
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ import com.intellij.refactoring.listeners.RefactoringElementListener
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
@@ -45,7 +45,7 @@ class RenameKotlinParameterProcessor : RenameKotlinPsiProcessor() {
|
||||
) {
|
||||
if (newName == null) return
|
||||
val declaration = element.namedUnwrappedElement as? KtNamedDeclaration ?: return
|
||||
val descriptor = declaration.resolveToDescriptor() as VariableDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as VariableDescriptor
|
||||
|
||||
val collisions = SmartList<UsageInfo>()
|
||||
checkRedeclarations(descriptor, newName, collisions)
|
||||
|
||||
+3
-3
@@ -41,7 +41,7 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.getDeepestSuperDeclarations
|
||||
import org.jetbrains.kotlin.idea.core.isEnumCompanionPropertyWithEntryConflict
|
||||
import org.jetbrains.kotlin.idea.refactoring.checkSuperMethodsWithPopup
|
||||
@@ -84,7 +84,7 @@ class RenameKotlinPropertyProcessor : RenameKotlinPsiProcessor() {
|
||||
}
|
||||
|
||||
private fun getJvmNames(element: PsiElement): Pair<String?, String?> {
|
||||
val descriptor = (element.unwrapped as? KtDeclaration)?.resolveToDescriptor() as? PropertyDescriptor ?: return null to null
|
||||
val descriptor = (element.unwrapped as? KtDeclaration)?.unsafeResolveToDescriptor() as? PropertyDescriptor ?: return null to null
|
||||
val getterName = descriptor.getter?.let { DescriptorUtils.getJvmName(it) }
|
||||
val setterName = descriptor.setter?.let { DescriptorUtils.getJvmName(it) }
|
||||
return getterName to setterName
|
||||
@@ -199,7 +199,7 @@ class RenameKotlinPropertyProcessor : RenameKotlinPsiProcessor() {
|
||||
) {
|
||||
if (newName == null) return
|
||||
val declaration = element.namedUnwrappedElement as? KtNamedDeclaration ?: return
|
||||
val descriptor = declaration.resolveToDescriptor() as VariableDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as VariableDescriptor
|
||||
|
||||
val collisions = SmartList<UsageInfo>()
|
||||
checkRedeclarations(descriptor, newName, collisions)
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.idea.refactoring.rename
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtTypeParameter
|
||||
|
||||
class RenameKotlinTypeParameterProcessor : RenameKotlinPsiProcessor() {
|
||||
@@ -32,7 +32,7 @@ class RenameKotlinTypeParameterProcessor : RenameKotlinPsiProcessor() {
|
||||
) {
|
||||
if (newName == null) return
|
||||
val declaration = element as? KtTypeParameter ?: return
|
||||
val descriptor = declaration.resolveToDescriptor()
|
||||
val descriptor = declaration.unsafeResolveToDescriptor()
|
||||
checkRedeclarations(descriptor, newName, result)
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ import com.intellij.usageView.UsageViewUtil
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.idea.analysis.analyzeInContext
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.NewDeclarationNameValidator
|
||||
import org.jetbrains.kotlin.idea.core.copied
|
||||
@@ -145,7 +145,7 @@ internal fun checkRedeclarations(
|
||||
is FunctionDescriptor -> it is KtNamedFunction
|
||||
else -> false
|
||||
}
|
||||
} as? KtDeclaration)?.resolveToDescriptor()
|
||||
} as? KtDeclaration)?.unsafeResolveToDescriptor()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -322,7 +322,7 @@ internal fun checkNewNameUsagesRetargeting(
|
||||
newUsages: MutableList<UsageInfo>
|
||||
) {
|
||||
val currentName = declaration.name ?: return
|
||||
val descriptor = declaration.resolveToDescriptor()
|
||||
val descriptor = declaration.unsafeResolveToDescriptor()
|
||||
|
||||
if (declaration is KtParameter && !declaration.hasValOrVar()) {
|
||||
val ownerFunction = declaration.ownerFunction
|
||||
|
||||
@@ -25,7 +25,7 @@ import com.intellij.refactoring.util.MoveRenameUsageInfo
|
||||
import com.intellij.usageView.UsageInfo
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.dropDefaultValue
|
||||
import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle
|
||||
import org.jetbrains.kotlin.idea.references.AbstractKtReference
|
||||
@@ -56,7 +56,7 @@ fun checkConflictsAndReplaceUsageInfos(
|
||||
private fun PsiElement.getOverriddenFunctionWithDefaultValues(allRenames: Map<out PsiElement?, String>): KtNamedFunction? {
|
||||
val elementsToRename = allRenames.keys.mapNotNull { it?.unwrapped }
|
||||
val function = unwrapped as? KtNamedFunction ?: return null
|
||||
val descriptor = function.resolveToDescriptor() as FunctionDescriptor
|
||||
val descriptor = function.unsafeResolveToDescriptor() as FunctionDescriptor
|
||||
return descriptor.overriddenDescriptors
|
||||
.mapNotNull { it.source.getPsi() as? KtNamedFunction }
|
||||
.firstOrNull { it !in elementsToRename && it.valueParameters.any { it.hasDefaultValue() }}
|
||||
|
||||
@@ -24,7 +24,7 @@ import com.intellij.psi.util.PsiFormatUtilBase
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
@@ -94,11 +94,11 @@ fun formatPsiMethod(
|
||||
fun formatJavaOrLightMethod(method: PsiMethod): String {
|
||||
val originalDeclaration = method.unwrapped
|
||||
return if (originalDeclaration is KtDeclaration) {
|
||||
formatFunctionDescriptor(originalDeclaration.resolveToDescriptor())
|
||||
formatFunctionDescriptor(originalDeclaration.unsafeResolveToDescriptor())
|
||||
}
|
||||
else {
|
||||
formatPsiMethod(method, false, false)
|
||||
}
|
||||
}
|
||||
|
||||
fun formatClass(classOrObject: KtClassOrObject) = formatClassDescriptor(classOrObject.resolveToDescriptor() as ClassDescriptor)
|
||||
fun formatClass(classOrObject: KtClassOrObject) = formatClassDescriptor(classOrObject.unsafeResolveToDescriptor() as ClassDescriptor)
|
||||
+3
-3
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.asJava.elements.KtLightMethod
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.getDirectlyOverriddenDeclarations
|
||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
||||
@@ -40,7 +40,7 @@ class KotlinOverridingMethodsWithGenericsSearcher : QueryExecutor<PsiMethod, Ove
|
||||
|
||||
val declaration = method.kotlinOrigin as? KtCallableDeclaration ?: return true
|
||||
|
||||
val callDescriptor = runReadAction { declaration.resolveToDescriptor() }
|
||||
val callDescriptor = runReadAction { declaration.unsafeResolveToDescriptor() }
|
||||
if (callDescriptor !is CallableDescriptor) return true
|
||||
|
||||
// Java overriding method search can't find overloads with primitives types, so
|
||||
@@ -66,7 +66,7 @@ class KotlinOverridingMethodsWithGenericsSearcher : QueryExecutor<PsiMethod, Ove
|
||||
val methodsByName = inheritor.findMethodsByName(name, false)
|
||||
|
||||
for (lightMethodCandidate in methodsByName) {
|
||||
val candidateDescriptor = (lightMethodCandidate as? KtLightMethod)?.kotlinOrigin?.resolveToDescriptor() ?: continue
|
||||
val candidateDescriptor = (lightMethodCandidate as? KtLightMethod)?.kotlinOrigin?.unsafeResolveToDescriptor() ?: continue
|
||||
if (candidateDescriptor !is CallableMemberDescriptor) continue
|
||||
|
||||
val overriddenDescriptors = candidateDescriptor.getDirectlyOverriddenDeclarations()
|
||||
|
||||
@@ -21,7 +21,7 @@ import com.intellij.slicer.SliceUsageCellRendererBase
|
||||
import com.intellij.ui.JBColor
|
||||
import com.intellij.ui.SimpleTextAttributes
|
||||
import com.intellij.util.FontUtil
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.parents
|
||||
@@ -61,7 +61,7 @@ object KotlinSliceUsageCellRenderer : SliceUsageCellRendererBase() {
|
||||
it is KtDeclarationWithBody ||
|
||||
it is KtProperty && it.isLocal
|
||||
} as? KtDeclaration ?: return
|
||||
val descriptor = declaration.resolveToDescriptor()
|
||||
val descriptor = declaration.unsafeResolveToDescriptor()
|
||||
append(" in ${descriptorRenderer.render(descriptor)}", SimpleTextAttributes.GRAY_ATTRIBUTES)
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ import org.jetbrains.kotlin.descriptors.VariableDescriptorWithAccessors
|
||||
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinFunctionFindUsagesOptions
|
||||
import org.jetbrains.kotlin.idea.findUsages.KotlinPropertyFindUsagesOptions
|
||||
@@ -72,7 +72,7 @@ private fun KtDeclaration.processHierarchyDownward(scope: SearchScope, processor
|
||||
|
||||
private fun KtDeclaration.processHierarchyUpward(scope: AnalysisScope, processor: KtDeclaration.() -> Unit) {
|
||||
processor()
|
||||
val descriptor = resolveToDescriptor() as? CallableMemberDescriptor ?: return
|
||||
val descriptor = unsafeResolveToDescriptor() as? CallableMemberDescriptor ?: return
|
||||
DescriptorUtils
|
||||
.getAllOverriddenDescriptors(descriptor)
|
||||
.mapNotNull { it.source.getPsi() as? KtDeclaration }
|
||||
@@ -188,7 +188,7 @@ class InflowSlicer(
|
||||
val bindingContext by lazy { analyzeFully() }
|
||||
|
||||
if (hasDelegateExpression()) {
|
||||
val getter = (resolveToDescriptor() as VariableDescriptorWithAccessors).getter
|
||||
val getter = (unsafeResolveToDescriptor() as VariableDescriptorWithAccessors).getter
|
||||
val delegateGetterResolvedCall = getter?.let { bindingContext[BindingContext.DELEGATED_PROPERTY_RESOLVED_CALL, it] }
|
||||
(delegateGetterResolvedCall?.resultingDescriptor?.source?.getPsi() as? KtDeclarationWithBody)?.passToProcessor()
|
||||
return
|
||||
|
||||
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.checkers;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.rt.execution.junit.FileComparisonFailure;
|
||||
import com.intellij.spellchecker.inspections.SpellCheckingInspection;
|
||||
import com.intellij.testFramework.LightProjectDescriptor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionUtils;
|
||||
import org.jetbrains.kotlin.idea.highlighter.NameHighlighter;
|
||||
@@ -84,7 +83,7 @@ public abstract class AbstractPsiCheckerTest extends KotlinLightCodeInsightFixtu
|
||||
@Override
|
||||
public void visitDeclaration(@NotNull KtDeclaration dcl) {
|
||||
if (areDescriptorsCreatedForDeclaration(dcl)) {
|
||||
ResolutionUtils.resolveToDescriptor(dcl, BodyResolveMode.FULL); // check for exceptions
|
||||
ResolutionUtils.unsafeResolveToDescriptor(dcl, BodyResolveMode.FULL); // check for exceptions
|
||||
}
|
||||
dcl.acceptChildren(this, null);
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFullyAndGetResult
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor
|
||||
@@ -355,7 +355,7 @@ class C(param1: String = "", param2: Int = 0) {
|
||||
|
||||
val function = file.declarations[0] as KtNamedFunction
|
||||
val functionType = function.valueParameters.first().typeReference!!.typeElement as KtFunctionType
|
||||
val descriptorsForParameters = functionType.parameters.map { it.resolveToDescriptor() }
|
||||
val descriptorsForParameters = functionType.parameters.map { it.unsafeResolveToDescriptor() }
|
||||
|
||||
assert(
|
||||
listOf("key", "next", SpecialNames.NO_NAME_PROVIDED.asString()) ==
|
||||
|
||||
@@ -18,7 +18,7 @@ package org.jetbrains.kotlin.idea.kdoc
|
||||
|
||||
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.unsafeResolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
@@ -33,7 +33,7 @@ class KDocFinderTest() : LightPlatformCodeInsightFixtureTestCase() {
|
||||
fun testConstructor() {
|
||||
myFixture.configureByFile(getTestName(false) + ".kt")
|
||||
val declaration = (myFixture.file as KtFile).declarations[0]
|
||||
val descriptor = declaration.resolveToDescriptor() as ClassDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val constructorDescriptor = descriptor.unsubstitutedPrimaryConstructor!!
|
||||
val doc = constructorDescriptor.findKDoc()
|
||||
Assert.assertEquals("Doc for constructor of class C.", doc!!.getContent())
|
||||
@@ -42,7 +42,7 @@ class KDocFinderTest() : LightPlatformCodeInsightFixtureTestCase() {
|
||||
fun testAnnotated() {
|
||||
myFixture.configureByFile(getTestName(false) + ".kt")
|
||||
val declaration = (myFixture.file as KtFile).declarations[0]
|
||||
val descriptor = declaration.resolveToDescriptor() as ClassDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val overriddenFunctionDescriptor = descriptor.defaultType.memberScope.getContributedFunctions(Name.identifier("xyzzy"), NoLookupLocation.FROM_TEST).single()
|
||||
val doc = overriddenFunctionDescriptor.findKDoc()
|
||||
Assert.assertEquals("Doc for method xyzzy", doc!!.getContent())
|
||||
@@ -51,7 +51,7 @@ class KDocFinderTest() : LightPlatformCodeInsightFixtureTestCase() {
|
||||
fun testOverridden() {
|
||||
myFixture.configureByFile(getTestName(false) + ".kt")
|
||||
val declaration = (myFixture.file as KtFile).declarations.single { it.name == "Bar" }
|
||||
val descriptor = declaration.resolveToDescriptor() as ClassDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val overriddenFunctionDescriptor = descriptor.defaultType.memberScope.getContributedFunctions(Name.identifier("xyzzy"), NoLookupLocation.FROM_TEST).single()
|
||||
val doc = overriddenFunctionDescriptor.findKDoc()
|
||||
Assert.assertEquals("Doc for method xyzzy", doc!!.getContent())
|
||||
@@ -60,7 +60,7 @@ class KDocFinderTest() : LightPlatformCodeInsightFixtureTestCase() {
|
||||
fun testOverriddenWithSubstitutedType() {
|
||||
myFixture.configureByFile(getTestName(false) + ".kt")
|
||||
val declaration = (myFixture.file as KtFile).declarations.single { it.name == "Bar" }
|
||||
val descriptor = declaration.resolveToDescriptor() as ClassDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val overriddenFunctionDescriptor = descriptor.defaultType.memberScope.getContributedFunctions(Name.identifier("xyzzy"), NoLookupLocation.FROM_TEST).single()
|
||||
val doc = overriddenFunctionDescriptor.findKDoc()
|
||||
Assert.assertEquals("Doc for method xyzzy", doc!!.getContent())
|
||||
@@ -69,7 +69,7 @@ class KDocFinderTest() : LightPlatformCodeInsightFixtureTestCase() {
|
||||
fun testProperty() {
|
||||
myFixture.configureByFile(getTestName(false) + ".kt")
|
||||
val declaration = (myFixture.file as KtFile).declarations.single { it.name == "Foo" }
|
||||
val descriptor = declaration.resolveToDescriptor() as ClassDescriptor
|
||||
val descriptor = declaration.unsafeResolveToDescriptor() as ClassDescriptor
|
||||
val propertyDescriptor = descriptor.defaultType.memberScope.getContributedVariables(Name.identifier("xyzzy"), NoLookupLocation.FROM_TEST).single()
|
||||
val doc = propertyDescriptor.findKDoc()
|
||||
Assert.assertEquals("Doc for property xyzzy", doc!!.getContent())
|
||||
|
||||
Reference in New Issue
Block a user