Delete companion manually during pull up

This commit is contained in:
Mikhail Glukhikh
2018-01-30 16:14:48 +03:00
parent 7c6a217579
commit d88b5746c7
2 changed files with 17 additions and 17 deletions
@@ -28,10 +28,10 @@ import com.intellij.usageView.UsageViewBundle
import com.intellij.usageView.UsageViewDescriptor
import org.jetbrains.kotlin.idea.codeInliner.UsageReplacementStrategy
import org.jetbrains.kotlin.idea.codeInliner.replaceUsages
import org.jetbrains.kotlin.idea.refactoring.pullUp.deleteWithCompanion
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
class KotlinInlineCallableProcessor(
project: Project,
@@ -70,14 +70,7 @@ class KotlinInlineCallableProcessor(
postAction = {
if (deleteAfter) {
if (usages.size == simpleNameUsages.size) {
val containingClass = declaration.containingClassOrObject
if (containingClass is KtObjectDeclaration
&& containingClass.isCompanion()
&& containingClass.declarations.size == 1) {
containingClass.delete()
} else {
declaration.delete()
}
declaration.deleteWithCompanion()
statementToDelete?.delete()
} else {
CommonRefactoringUtil.showErrorHint(
@@ -50,10 +50,7 @@ import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.allChildren
import org.jetbrains.kotlin.psi.psiUtil.asAssignment
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
@@ -359,7 +356,7 @@ class KotlinPullUpHelper(
private fun removeOriginalMemberOrAddOverride(member: KtCallableDeclaration) {
if (member.isAbstract()) {
member.delete()
member.deleteWithCompanion()
}
else {
member.addModifier(KtTokens.OVERRIDE_KEYWORD)
@@ -393,7 +390,7 @@ class KotlinPullUpHelper(
(member.parent as? KtParameterList)?.removeParameter(member)
}
else {
member.delete()
member.deleteWithCompanion()
}
newField
}
@@ -448,7 +445,7 @@ class KotlinPullUpHelper(
}
val movedMember = addMemberToTarget(memberCopy, data.targetClass as KtClass) as KtClassOrObject
member.delete()
member.deleteWithCompanion()
return movedMember
}
@@ -510,7 +507,7 @@ class KotlinPullUpHelper(
}
}
else {
member.delete()
member.deleteWithCompanion()
}
}
@@ -642,3 +639,13 @@ class KotlinPullUpHelper(
}
}
internal fun KtNamedDeclaration.deleteWithCompanion() {
val containingClass = this.containingClassOrObject
if (containingClass is KtObjectDeclaration && containingClass.isCompanion() && containingClass.declarations.size == 1) {
containingClass.delete()
} else {
this.delete()
}
}