Introduce KtClassOrObject.resolveToDescriptorIfAny()
This commit is contained in:
@@ -132,7 +132,7 @@ class KotlinQuickDocumentationProvider : AbstractDocumentationProvider() {
|
||||
if (quickNavigation) return renderedDecl
|
||||
|
||||
val declarationDescriptor = element.resolveToDescriptorIfAny()
|
||||
val enumDescriptor = (declarationDescriptor as? ClassDescriptor)?.getSuperClassNotAny() ?: return renderedDecl
|
||||
val enumDescriptor = declarationDescriptor?.getSuperClassNotAny() ?: return renderedDecl
|
||||
|
||||
val enumDeclaration =
|
||||
DescriptorToSourceUtilsIde.getAnyDeclaration(element.project, enumDescriptor) as? KtDeclaration ?: return renderedDecl
|
||||
|
||||
@@ -12,7 +12,6 @@ import com.intellij.codeInspection.ProblemDescriptor
|
||||
import com.intellij.codeInspection.ProblemsHolder
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.idea.actions.generate.KotlinGenerateEqualsAndHashcodeAction
|
||||
import org.jetbrains.kotlin.idea.actions.generate.findDeclaredEquals
|
||||
@@ -30,7 +29,7 @@ object DeleteEqualsAndHashCodeFix : LocalQuickFix {
|
||||
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
|
||||
if (!FileModificationService.getInstance().preparePsiElementForWrite(descriptor.psiElement)) return
|
||||
val objectDeclaration = descriptor.psiElement.getStrictParentOfType<KtObjectDeclaration>() ?: return
|
||||
val classDescriptor = objectDeclaration.resolveToDescriptorIfAny() as? ClassDescriptor ?: return
|
||||
val classDescriptor = objectDeclaration.resolveToDescriptorIfAny() ?: return
|
||||
classDescriptor.findDeclaredEquals(false)?.source?.getPsi()?.delete()
|
||||
classDescriptor.findDeclaredHashCode(false)?.source?.getPsi()?.delete()
|
||||
}
|
||||
@@ -59,7 +58,7 @@ class EqualsOrHashCodeInspection : AbstractKotlinInspection() {
|
||||
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
|
||||
return classOrObjectVisitor(fun(classOrObject) {
|
||||
val nameIdentifier = classOrObject.nameIdentifier ?: return
|
||||
val classDescriptor = classOrObject.resolveToDescriptorIfAny() as? ClassDescriptor ?: return
|
||||
val classDescriptor = classOrObject.resolveToDescriptorIfAny() ?: return
|
||||
val hasEquals = classDescriptor.findDeclaredEquals(false) != null
|
||||
val hasHashCode = classDescriptor.findDeclaredHashCode(false) != null
|
||||
if (!hasEquals && !hasHashCode) return
|
||||
|
||||
@@ -25,7 +25,6 @@ import com.intellij.psi.codeStyle.CodeStyleManager
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil
|
||||
import com.intellij.refactoring.util.RefactoringDescriptionLocation
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.highlighter.markers.liftToExpected
|
||||
import org.jetbrains.kotlin.idea.runSynchronouslyWithProgress
|
||||
@@ -46,7 +45,7 @@ class ConvertSealedClassToEnumIntention : SelfTargetingRangeIntention<KtClass>(K
|
||||
val nameIdentifier = element.nameIdentifier ?: return null
|
||||
val sealedKeyword = element.modifierList?.getModifier(KtTokens.SEALED_KEYWORD) ?: return null
|
||||
|
||||
val classDescriptor = element.resolveToDescriptorIfAny() as? ClassDescriptor ?: return null
|
||||
val classDescriptor = element.resolveToDescriptorIfAny() ?: return null
|
||||
if (classDescriptor.getSuperClassNotAny() != null) return null
|
||||
|
||||
return TextRange(sealedKeyword.startOffset, nameIdentifier.endOffset)
|
||||
|
||||
@@ -85,7 +85,7 @@ abstract class ImplementAbstractMemberIntentionBase :
|
||||
is KtEnumEntry -> subClass.resolveToDescriptorIfAny()
|
||||
is PsiClass -> subClass.getJavaClassDescriptor()
|
||||
else -> null
|
||||
} as? ClassDescriptor ?: return false
|
||||
} ?: return false
|
||||
return acceptSubClass(classDescriptor, memberDescriptor)
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@ abstract class ImplementAbstractMemberIntentionBase :
|
||||
protected abstract val preferConstructorParameters: Boolean
|
||||
|
||||
private fun implementInKotlinClass(editor: Editor?, member: KtNamedDeclaration, targetClass: KtClassOrObject) {
|
||||
val subClassDescriptor = targetClass.resolveToDescriptorIfAny() as? ClassDescriptor ?: return
|
||||
val subClassDescriptor = targetClass.resolveToDescriptorIfAny() ?: return
|
||||
val superMemberDescriptor = member.resolveToDescriptorIfAny() as? CallableMemberDescriptor ?: return
|
||||
val superClassDescriptor = superMemberDescriptor.containingDeclaration as? ClassDescriptor ?: return
|
||||
val substitutor = getTypeSubstitutor(superClassDescriptor.defaultType, subClassDescriptor.defaultType)
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ class MoveMemberOutOfCompanionObjectIntention : MoveMemberOutOfObjectIntention("
|
||||
it.parents
|
||||
.filterIsInstance<KtClassOrObject>()
|
||||
.none {
|
||||
val classDescriptor = it.resolveToDescriptorIfAny() as? ClassDescriptor
|
||||
val classDescriptor = it.resolveToDescriptorIfAny()
|
||||
if (classDescriptor != null && classDescriptor.isSubclassOf(targetClassDescriptor)) return@none true
|
||||
if (it.isTopLevel() || it is KtObjectDeclaration || (it is KtClass && !it.isInner())) return@filter true
|
||||
false
|
||||
|
||||
@@ -60,8 +60,7 @@ object SuperClassNotInitialized : KotlinIntentionActionsFactory() {
|
||||
if (type.isError) return emptyList()
|
||||
|
||||
val superClass = (type.constructor.declarationDescriptor as? ClassDescriptor) ?: return emptyList()
|
||||
val classDescriptor = classOrObjectDeclaration.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? ClassDescriptor
|
||||
?: return emptyList()
|
||||
val classDescriptor = classOrObjectDeclaration.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return emptyList()
|
||||
val constructors = superClass.constructors.filter { it.isVisible(classDescriptor) }
|
||||
if (constructors.isEmpty()) return emptyList() // no accessible constructor
|
||||
|
||||
|
||||
+1
-1
@@ -483,7 +483,7 @@ class CallableBuilder(val config: CallableBuilderConfiguration) {
|
||||
}
|
||||
|
||||
val isExpectClassMember by lazy {
|
||||
containingElement is KtClassOrObject && (containingElement.resolveToDescriptorIfAny() as? ClassDescriptor)?.isExpect ?: false
|
||||
containingElement is KtClassOrObject && containingElement.resolveToDescriptorIfAny()?.isExpect ?: false
|
||||
}
|
||||
|
||||
val declaration: KtNamedDeclaration = when (callableInfo.kind) {
|
||||
|
||||
+1
-2
@@ -17,7 +17,6 @@
|
||||
package org.jetbrains.kotlin.idea.quickfix.createFromUsage.createCallable
|
||||
|
||||
import com.intellij.psi.PsiClass
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
@@ -45,7 +44,7 @@ object CreateConstructorFromDelegationCallActionFactory : CreateCallableMemberFr
|
||||
|
||||
val project = currentClass.project
|
||||
|
||||
val classDescriptor = currentClass.resolveToDescriptorIfAny() as? ClassDescriptor ?: return null
|
||||
val classDescriptor = currentClass.resolveToDescriptorIfAny() ?: return null
|
||||
|
||||
val targetClass = if (calleeExpression.isThis) {
|
||||
currentClass
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ open class CreateParameterFromUsageFix<E : KtElement>(
|
||||
if (element !is KtSimpleNameExpression) return null
|
||||
|
||||
val classOrObject = element.getStrictParentOfType<KtClassOrObject>() ?: return null
|
||||
receiverClassDescriptor = classOrObject.resolveToDescriptorIfAny() as? ClassDescriptor ?: return null
|
||||
receiverClassDescriptor = classOrObject.resolveToDescriptorIfAny() ?: return null
|
||||
|
||||
val paramInfo = CreateParameterByRefActionFactory.extractFixData(element)?.parameterInfo
|
||||
if (paramInfo?.callableDescriptor == receiverClassDescriptor.unsubstitutedPrimaryConstructor) return null
|
||||
|
||||
Reference in New Issue
Block a user