diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt index f517e1d0758..47b06bd90ec 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt @@ -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) diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/core/quickfix/QuickFixUtil.java b/idea/ide-common/src/org/jetbrains/kotlin/idea/core/quickfix/QuickFixUtil.java index 706cc08ee7a..005434ba5fc 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/core/quickfix/QuickFixUtil.java +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/core/quickfix/QuickFixUtil.java @@ -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) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt index 7ba33ee9e69..d9b0ac8dbc7 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.kt @@ -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 diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt index 772071e4cbb..a07ecb6e988 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt @@ -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 diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/shorten/delayedRequestsWaitingSet.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/shorten/delayedRequestsWaitingSet.kt index 5dfc7c0c684..6cec72e59c6 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/shorten/delayedRequestsWaitingSet.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/codeInsight/shorten/delayedRequestsWaitingSet.kt @@ -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 diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/IdeSampleResolutionService.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/IdeSampleResolutionService.kt index 0a5aab47622..0cc7a37c59d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/IdeSampleResolutionService.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/kdoc/IdeSampleResolutionService.kt @@ -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 diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt index a12c7056a95..c2d963b7cf8 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/declarationsSearch/overridersSearch.kt @@ -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()!! diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/AndroidUtil.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/AndroidUtil.kt index 3b5c179a063..d78c4394d69 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/AndroidUtil.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/AndroidUtil.kt @@ -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? { 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) -> diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/KotlinAndroidLineMarkerProvider.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/KotlinAndroidLineMarkerProvider.kt index dc6b259b950..fcbc1a1c179 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/KotlinAndroidLineMarkerProvider.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/KotlinAndroidLineMarkerProvider.kt @@ -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) } } } diff --git a/idea/idea-android/src/org/jetbrains/kotlin/android/intention/KotlinAndroidAddStringResource.kt b/idea/idea-android/src/org/jetbrains/kotlin/android/intention/KotlinAndroidAddStringResource.kt index fb9bcfd2751..c7e133b4365 100644 --- a/idea/idea-android/src/org/jetbrains/kotlin/android/intention/KotlinAndroidAddStringResource.kt +++ b/idea/idea-android/src/org/jetbrains/kotlin/android/intention/KotlinAndroidAddStringResource.kt @@ -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): 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) } } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt index b0f6985fac8..f0eb0812762 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinIndicesHelper.kt @@ -237,7 +237,7 @@ class KotlinIndicesHelper( fun getKotlinEnumsByName(name: String): Collection { return KotlinClassShortNameIndex.getInstance()[name, project, scope] .filter { it is KtEnumEntry && it in scope } - .mapNotNull { it.resolveToDescriptor() } + .mapNotNull { it.unsafeResolveToDescriptor() } .filter(descriptorFilter) .toSet() } diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggestionProvider.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggestionProvider.kt index fae8e43a77d..32a7d3aa9a3 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggestionProvider.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinNameSuggestionProvider.kt @@ -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) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt index e498e21bf25..6a99d7b2ec2 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/Utils.kt @@ -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 diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt index 9a582d5c824..1d06dac1106 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt +++ b/idea/idea-repl/src/org/jetbrains/kotlin/console/KotlinConsoleRunner.kt @@ -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) diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt index 662697d934f..10554ae92e8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateTestSupportActionBase.kt @@ -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) diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt index 9271f0dfa0f..66233bb818a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateToStringAction.kt @@ -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(memberChooserObjects, true, true, project, false, headerPanel).apply { title = "Generate toString()" diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt index 9e26947bba8..7c59042ad33 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/utils.kt @@ -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().apply { classOrObject.primaryConstructorParameters.filterTo(this) { it.hasValOrVar() } classOrObject.declarations.filterIsInstance().filterTo(this) { - val descriptor = it.resolveToDescriptor() + val descriptor = it.unsafeResolveToDescriptor() when (descriptor) { is ValueParameterDescriptor -> true is PropertyDescriptor -> descriptor.getter?.isDefault ?: true diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/GotoSuperActionHandler.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/GotoSuperActionHandler.java index d5ba25703c2..abdf4855954 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/GotoSuperActionHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/GotoSuperActionHandler.java @@ -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 superDeclarations = findSuperDeclarations(descriptor); diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KtFunctionPsiElementCellRenderer.java b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KtFunctionPsiElementCellRenderer.java index 319ec0a33c7..f3189ea058c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KtFunctionPsiElementCellRenderer.java +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KtFunctionPsiElementCellRenderer.java @@ -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); diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt index 151e41f2ebd..da22f88886d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/dialog/fieldBreakpointDialogUtil.kt @@ -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 { val result = arrayListOf() this.files.forEach { it.declarations.filterIsInstance().forEach { - result.add(DescriptorMemberChooserObject(it, it.resolveToDescriptor())) + result.add(DescriptorMemberChooserObject(it, it.unsafeResolveToDescriptor())) } } return result.toTypedArray() @@ -37,7 +37,7 @@ fun PsiClass.collectProperties(): Array { val origin = this.kotlinOrigin if (origin != null) { return origin.declarations.filterIsInstance().map { - DescriptorMemberChooserObject(it, it.resolveToDescriptor()) + DescriptorMemberChooserObject(it, it.unsafeResolveToDescriptor()) }.toTypedArray() } } diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt index 7edbfed3742..18bad29ada3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/stepping/KotlinSteppingCommandProvider.kt @@ -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(false) ?: return emptyList() - val descriptor = containingFunction.resolveToDescriptor() + val descriptor = containingFunction.unsafeResolveToDescriptor() if (!InlineUtil.isInline(descriptor)) return emptyList() return DebuggerUtils.analyzeElementWithInline(containingFunction, false).filterIsInstance() diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesProvider.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesProvider.kt index ee082dd296e..6b4ff6d22b1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesProvider.kt @@ -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 diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt index 90c60f4b184..d53bc6a713f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerTreeStructure.kt @@ -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 { val element = nodeDescriptor.psiElement as? KtDeclaration ?: return ArrayUtil.EMPTY_OBJECT_ARRAY val callerToDescriptorMap = Maps.newHashMap>() - val descriptor = element.resolveToDescriptor() + val descriptor = element.unsafeResolveToDescriptor() if (descriptor is CallableMemberDescriptor) { return descriptor.getDeepestSuperDeclarations().flatMap { rootDescriptor -> val rootElement = DescriptorToSourceUtilsIde.getAnyDeclaration(myProject, rootDescriptor) diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyNodeDescriptor.kt b/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyNodeDescriptor.kt index 236afa1335c..5272040b54c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyNodeDescriptor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/overrides/KotlinOverrideHierarchyNodeDescriptor.kt @@ -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 } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt index ff94f03bb29..3f2e8deeb69 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/ImplementedHeaderMarker.kt @@ -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 { - return resolveToDescriptor().headerImplementations().mapNotNullTo(LinkedHashSet()) { + return unsafeResolveToDescriptor().headerImplementations().mapNotNullTo(LinkedHashSet()) { DescriptorToSourceUtils.descriptorToDeclaration(it) as? KtDeclaration } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/ConflictingExtensionPropertyInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/ConflictingExtensionPropertyInspection.kt index 9dcbf09e010..c98dcb7fa04 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/ConflictingExtensionPropertyInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/ConflictingExtensionPropertyInspection.kt @@ -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) { diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionToPropertyIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionToPropertyIntention.kt index e61179546cf..e2b0a511713 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionToPropertyIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionToPropertyIntention.kt @@ -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 null diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt index b86e9a71d70..81c26a97559 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeParameterToReceiverIntention.kt @@ -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? { diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt index d75d8cd5f00..b7eb85efc2c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ConvertFunctionTypeReceiverToParameterIntention.kt @@ -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(element) { diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt index 14258761072..dddba42a0fd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/MoveMemberOutOfCompanionObjectIntention.kt @@ -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() @@ -111,7 +111,7 @@ class MoveMemberOutOfCompanionObjectIntention : SelfTargetingRangeIntention { 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 { val referencedDescriptor = it.analyze(BodyResolveMode.PARTIAL)[BindingContext.TYPE, it]?.constructor?.declarationDescriptor referencedDescriptor is TypeParameterDescriptor && referencedDescriptor.containingDeclaration == containingClassDescriptor @@ -285,8 +285,8 @@ class MoveMemberToCompanionObjectIntention : SelfTargetingRangeIntention() 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 { diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt index 19e1f6ce51f..5953893e27a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/ConvertMemberToExtensionIntention.kt @@ -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 { - 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 @@ -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 { 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( diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt index ae8839fd186..645ad7b8ca3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt @@ -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'" } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/InsertDelegationCallQuickfix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/InsertDelegationCallQuickfix.kt index 552ad7ce769..d05ba4a5920 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/InsertDelegationCallQuickfix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/InsertDelegationCallQuickfix.kt @@ -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 diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveUnusedFunctionParameterFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveUnusedFunctionParameterFix.kt index d8417191969..4aed1248ed7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveUnusedFunctionParameterFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RemoveUnusedFunctionParameterFix.kt @@ -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) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt index 5de2dbc8711..720831646b6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromCallActionFactory.kt @@ -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( else { containingClass = originalExpression.getStrictParentOfType() 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 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureData.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureData.kt index 79fd30caca3..e15698dfd6a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureData.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureData.kt @@ -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()) { overridingMethod -> if (overridingMethod is KtLightMethod) { val overridingDeclaration = overridingMethod.namedUnwrappedElement as KtNamedDeclaration - val overridingDescriptor = overridingDeclaration.resolveToDescriptor() as CallableDescriptor + val overridingDescriptor = overridingDeclaration.unsafeResolveToDescriptor() as CallableDescriptor KotlinCallableDefinitionUsage(overridingDeclaration, overridingDescriptor, primaryFunction, null) } else OverriderUsageInfo(overridingMethod, baseMethod, true, true, true) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt index 85976ed85ec..5dcc079b0f2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/KotlinChangeSignatureUsageProcessor.kt @@ -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") diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinCallerChooser.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinCallerChooser.kt index 34aa00b2a6e..3c2a41b08f0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinCallerChooser.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinCallerChooser.kt @@ -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()}") } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt index 21877fc1a30..5806174e3fe 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt @@ -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( 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 } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsCopyPasteProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsCopyPasteProcessor.kt index 715899d352d..b1d63670ee2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsCopyPasteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/cutPaste/MoveDeclarationsCopyPasteProcessor.kt @@ -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 method.resolveToDescriptor() as? FunctionDescriptor + is KtFunction -> method.unsafeResolveToDescriptor() as? FunctionDescriptor is PsiMethod -> method.getJavaMethodDescriptor() else -> null } ?: return null diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt index c5b22bc5ddd..746719fa990 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceTypeAlias/introduceTypeAliasImpl.kt @@ -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 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) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt index 3f37630f339..5cc223094c5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt @@ -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 { } internal fun KtDeclaration.resolveToHeaderDescriptorIfPossible(): DeclarationDescriptor { - val descriptor = resolveToDescriptor() + val descriptor = unsafeResolveToDescriptor() return descriptor.liftToHeader() ?: descriptor } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/memberInfo/KotlinClassMembersRefactoringSupport.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/memberInfo/KotlinClassMembersRefactoringSupport.kt index cb39b4dff8b..c2ca9d5168d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/memberInfo/KotlinClassMembersRefactoringSupport.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/memberInfo/KotlinClassMembersRefactoringSupport.kt @@ -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 } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveDeclarationsDelegate.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveDeclarationsDelegate.kt index 030bd6cc8f2..75b792df31c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveDeclarationsDelegate.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveDeclarationsDelegate.kt @@ -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 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt index 4c03ae4c94b..f5ce7703948 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/moveConflictUtils.kt @@ -332,7 +332,7 @@ class MoveConflictChecker( if (!declarationToContainers.getOrPut(referencedElement) { HashSet() }.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() - 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 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java index eaa742fc682..8ed60f2e329 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinNestedClassesToUpperLevelDialog.java @@ -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()); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt index 14802dbedb4..494e6e15152 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -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() { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHandler.kt index 261234c720f..219b8028ce9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pullUp/KotlinPullUpHandler.kt @@ -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 { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt index a3531f0f46b..4ee7221b445 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/pushDown/JavaToKotlinPushDownDelegate.kt @@ -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 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticOverloadsRenamer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticOverloadsRenamer.kt index 8c7d2091131..f91890564e0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticOverloadsRenamer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticOverloadsRenamer.kt @@ -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 { 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 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt index 3092b0a2429..216381fbb70 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt @@ -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 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassProcessor.kt index 04d36e7c85f..337e5da3178 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassProcessor.kt @@ -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() checkRedeclarations(descriptor, newName, collisions) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt index 6a4ea94872f..005b70e8a2c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt @@ -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) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt index f1d9679041a..377548707bd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt @@ -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() checkRedeclarations(descriptor, newName, collisions) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt index e6228dfec30..b97feb4a202 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt @@ -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 { - 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() checkRedeclarations(descriptor, newName, collisions) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinTypeParameterProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinTypeParameterProcessor.kt index b6dc2adb45a..65a37b4b31e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinTypeParameterProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinTypeParameterProcessor.kt @@ -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) } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt index c96783cbac5..c6aae5b39f0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt @@ -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 ) { val currentName = declaration.name ?: return - val descriptor = declaration.resolveToDescriptor() + val descriptor = declaration.unsafeResolveToDescriptor() if (declaration is KtParameter && !declaration.hasValOrVar()) { val ownerFunction = declaration.ownerFunction diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameUtil.kt index 1e8928e5c3b..0ed231237ed 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameUtil.kt @@ -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): 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() }} diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/renderingUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/renderingUtils.kt index fde6f31ccef..e205c26deec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/renderingUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/renderingUtils.kt @@ -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) \ No newline at end of file +fun formatClass(classOrObject: KtClassOrObject) = formatClassDescriptor(classOrObject.unsafeResolveToDescriptor() as ClassDescriptor) \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinOverridingMethodsWithGenericsSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinOverridingMethodsWithGenericsSearcher.kt index cd7a1dc8bf0..a16cbf69b6f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinOverridingMethodsWithGenericsSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinOverridingMethodsWithGenericsSearcher.kt @@ -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 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 diff --git a/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java b/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java index b34e4ceb77c..3eaae801751 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/AbstractPsiCheckerTest.java @@ -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); } diff --git a/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt b/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt index f758c9783be..59478bebe40 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/ResolveElementCacheTest.kt @@ -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()) == diff --git a/idea/tests/org/jetbrains/kotlin/idea/kdoc/KDocFinderTest.kt b/idea/tests/org/jetbrains/kotlin/idea/kdoc/KDocFinderTest.kt index 1f1deb612eb..df7e16bfae0 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/kdoc/KDocFinderTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/kdoc/KDocFinderTest.kt @@ -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())