From 92215b41b9bac993c9685d7d51771001a9174184 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 12 Sep 2017 12:15:27 +0300 Subject: [PATCH] Replace resolveToDescriptor with unsafeResolveToDescriptor Now unsafeResolveToDescriptor is equivalent to resolveToDescriptorIfAny but throws exception in case no descriptor is found. Old version of resolveToDescriptor is kept intact but made deprecated. Some clarifying comments were added --- .../idea/caches/resolve/resolutionApi.kt | 21 ++++++++++++++++++- .../idea/core/quickfix/QuickFixUtil.java | 2 +- .../resolve/IDELightClassGenerationSupport.kt | 2 +- .../caches/resolve/JavaResolveExtension.kt | 2 +- .../shorten/delayedRequestsWaitingSet.kt | 4 ++-- .../idea/kdoc/IdeSampleResolutionService.kt | 4 ++-- .../declarationsSearch/overridersSearch.kt | 8 +++---- .../jetbrains/kotlin/android/AndroidUtil.kt | 4 ++-- .../KotlinAndroidLineMarkerProvider.kt | 4 ++-- .../KotlinAndroidAddStringResource.kt | 4 ++-- .../kotlin/idea/core/KotlinIndicesHelper.kt | 2 +- .../idea/core/KotlinNameSuggestionProvider.kt | 4 ++-- .../org/jetbrains/kotlin/idea/core/Utils.kt | 5 ++--- .../kotlin/console/KotlinConsoleRunner.kt | 2 +- .../KotlinGenerateTestSupportActionBase.kt | 4 ++-- .../generate/KotlinGenerateToStringAction.kt | 4 ++-- .../kotlin/idea/actions/generate/utils.kt | 5 ++--- .../codeInsight/GotoSuperActionHandler.java | 2 +- .../KtFunctionPsiElementCellRenderer.java | 2 +- .../dialog/fieldBreakpointDialogUtil.kt | 6 +++--- .../stepping/KotlinSteppingCommandProvider.kt | 6 +++--- .../findUsages/KotlinFindUsagesProvider.kt | 4 ++-- .../calls/KotlinCallerTreeStructure.kt | 4 ++-- .../KotlinOverrideHierarchyNodeDescriptor.kt | 4 ++-- .../markers/ImplementedHeaderMarker.kt | 4 ++-- .../ConflictingExtensionPropertyInspection.kt | 4 ++-- .../ConvertFunctionToPropertyIntention.kt | 4 ++-- ...unctionTypeParameterToReceiverIntention.kt | 4 ++-- ...unctionTypeReceiverToParameterIntention.kt | 4 ++-- ...MoveMemberOutOfCompanionObjectIntention.kt | 6 +++--- .../MoveMemberToCompanionObjectIntention.kt | 12 +++++------ .../ConvertMemberToExtensionIntention.kt | 6 +++--- .../result/AddToCollectionTransformation.kt | 4 ++-- .../result/FindTransformationMatcher.kt | 4 ++-- .../sequence/IntroduceIndexMatcher.kt | 4 ++-- .../quickfix/ChangeCallableReturnTypeFix.kt | 4 ++-- .../quickfix/ChangeSuspendInHierarchyFix.kt | 8 +++---- .../idea/quickfix/ChangeVariableTypeFix.kt | 4 ++-- .../quickfix/InsertDelegationCallQuickfix.kt | 4 ++-- .../RemoveUnusedFunctionParameterFix.kt | 4 ++-- .../CreateCallableFromCallActionFactory.kt | 4 ++-- .../KotlinChangeSignatureData.kt | 6 +++--- .../KotlinChangeSignatureUsageProcessor.kt | 2 +- .../changeSignature/ui/KotlinCallerChooser.kt | 6 +++--- .../usages/KotlinCallableDefinitionUsage.kt | 6 +++--- .../MoveDeclarationsCopyPasteProcessor.kt | 4 ++-- .../cutPaste/MoveDeclarationsProcessor.kt | 4 ++-- .../inline/KotlinInlineFunctionHandler.kt | 4 ++-- .../inline/KotlinInlineTypeAliasHandler.kt | 4 ++-- .../inline/KotlinInlineValHandler.kt | 4 ++-- .../idea/refactoring/inline/inlineUtils.kt | 4 ++-- .../extractClass/ExtractSuperRefactoring.kt | 4 ++-- .../KotlinIntroduceParameterHandler.kt | 4 ++-- ...nIntroduceParameterMethodUsageProcessor.kt | 4 ++-- .../introduceTypeAliasImpl.kt | 4 ++-- .../idea/refactoring/kotlinRefactoringUtil.kt | 8 +++---- .../KotlinClassMembersRefactoringSupport.kt | 4 ++-- .../MoveDeclarationsDelegate.kt | 6 +++--- .../moveDeclarations/moveConflictUtils.kt | 6 +++--- ...KotlinNestedClassesToUpperLevelDialog.java | 2 +- .../kotlin/idea/refactoring/move/moveUtils.kt | 4 ++-- .../refactoring/pullUp/KotlinPullUpHandler.kt | 4 ++-- .../pushDown/JavaToKotlinPushDownDelegate.kt | 6 +++--- .../rename/AutomaticOverloadsRenamer.kt | 7 ++----- .../rename/AutomaticVariableRenamer.kt | 4 ++-- .../rename/RenameKotlinClassProcessor.kt | 4 ++-- .../rename/RenameKotlinFunctionProcessor.kt | 6 +++--- .../rename/RenameKotlinParameterProcessor.kt | 4 ++-- .../rename/RenameKotlinPropertyProcessor.kt | 6 +++--- .../RenameKotlinTypeParameterProcessor.kt | 4 ++-- .../refactoring/rename/renameConflictUtils.kt | 6 +++--- .../idea/refactoring/rename/renameUtil.kt | 4 ++-- .../kotlin/idea/refactoring/renderingUtils.kt | 6 +++--- ...inOverridingMethodsWithGenericsSearcher.kt | 6 +++--- .../slicer/KotlinSliceUsageCellRenderer.kt | 4 ++-- .../jetbrains/kotlin/idea/slicer/Slicer.kt | 6 +++--- .../checkers/AbstractPsiCheckerTest.java | 3 +-- .../kotlin/idea/ResolveElementCacheTest.kt | 4 ++-- .../kotlin/idea/kdoc/KDocFinderTest.kt | 12 +++++------ 79 files changed, 196 insertions(+), 183 deletions(-) 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())