From 006c02b5695d0620f243fd9de889c6bb469efd3e Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 28 May 2015 23:16:28 +0300 Subject: [PATCH] Getting rid of confusing methods on PsiElement's --- .../src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt | 4 ++-- .../src/org/jetbrains/kotlin/asJava/lightClassUtils.kt | 2 +- .../jetbrains/kotlin/idea/refactoring/move/moveUtils.kt | 2 +- .../jetbrains/kotlin/idea/refactoring/safeDelete/utils.kt | 7 +++---- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt index 4b1adbaa06a..81108c2beb7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/psiUtil/jetPsiUtil.kt @@ -129,7 +129,7 @@ public fun JetDeclaration.isOverridable(): Boolean { hasModifier(JetTokens.ABSTRACT_KEYWORD) || hasModifier(JetTokens.OPEN_KEYWORD) || hasModifier(JetTokens.OVERRIDE_KEYWORD) } -public fun PsiElement.isExtensionDeclaration(): Boolean { +public fun JetDeclaration.isExtensionDeclaration(): Boolean { val callable: JetCallableDeclaration? = when (this) { is JetNamedFunction, is JetProperty -> this as JetCallableDeclaration is JetPropertyAccessor -> getNonStrictParentOfType() @@ -139,7 +139,7 @@ public fun PsiElement.isExtensionDeclaration(): Boolean { return callable?.getReceiverTypeReference() != null } -public fun PsiElement.isObjectLiteral(): Boolean = this is JetObjectDeclaration && isObjectLiteral() +public fun JetClassOrObject.isObjectLiteral(): Boolean = this is JetObjectDeclaration && isObjectLiteral() //TODO: git rid of this method public fun PsiElement.deleteElementAndCleanParent() { diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt index ed9beb4c0a3..faa1b6382c9 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt @@ -70,7 +70,7 @@ public fun JetParameter.toPsiParameter(): PsiParameter? { val paramIndex = paramList.getParameters().indexOf(this) val owner = paramList.getParent() - val lightParamIndex = if (owner != null && owner.isExtensionDeclaration()) paramIndex + 1 else paramIndex + val lightParamIndex = if (owner is JetDeclaration && owner.isExtensionDeclaration()) paramIndex + 1 else paramIndex val method: PsiMethod? = when (owner) { is JetFunction -> LightClassUtil.getLightClassMethod(owner) 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 159ad1f1a57..fcbcb20a084 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -166,7 +166,7 @@ fun createMoveUsageInfoIfPossible( val endOffset = range.getEndOffset() if (reference is JetReference - && referencedElement.namedUnwrappedElement!!.isExtensionDeclaration() + && (referencedElement.namedUnwrappedElement as? JetDeclaration)?.isExtensionDeclaration() ?: false && element.getNonStrictParentOfType() == null) { return MoveRenameUsageInfoForExtension( element, reference, startOffset, endOffset, referencedElement, element.getContainingFile()!!, addImportToOriginalFile diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/utils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/utils.kt index c281983b18d..1ad062fa4b3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/utils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/utils.kt @@ -16,16 +16,15 @@ package org.jetbrains.kotlin.idea.refactoring.safeDelete -import com.intellij.psi.PsiMethod import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.lexer.JetTokens +import com.intellij.psi.PsiMethod import com.intellij.psi.search.searches.OverridingMethodsSearch import org.jetbrains.kotlin.asJava.unwrapped +import org.jetbrains.kotlin.lexer.JetTokens import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.* public fun PsiElement.canDeleteElement(): Boolean { - if (isObjectLiteral()) return false + if (this is JetObjectDeclaration && isObjectLiteral()) return false if (this is JetParameter) { val parameterList = getParent() as? JetParameterList ?: return false