Delete companion manually during pull up
This commit is contained in:
+2
-9
@@ -28,10 +28,10 @@ import com.intellij.usageView.UsageViewBundle
|
|||||||
import com.intellij.usageView.UsageViewDescriptor
|
import com.intellij.usageView.UsageViewDescriptor
|
||||||
import org.jetbrains.kotlin.idea.codeInliner.UsageReplacementStrategy
|
import org.jetbrains.kotlin.idea.codeInliner.UsageReplacementStrategy
|
||||||
import org.jetbrains.kotlin.idea.codeInliner.replaceUsages
|
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.references.KtSimpleNameReference
|
||||||
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
import org.jetbrains.kotlin.idea.util.application.runReadAction
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
|
||||||
|
|
||||||
class KotlinInlineCallableProcessor(
|
class KotlinInlineCallableProcessor(
|
||||||
project: Project,
|
project: Project,
|
||||||
@@ -70,14 +70,7 @@ class KotlinInlineCallableProcessor(
|
|||||||
postAction = {
|
postAction = {
|
||||||
if (deleteAfter) {
|
if (deleteAfter) {
|
||||||
if (usages.size == simpleNameUsages.size) {
|
if (usages.size == simpleNameUsages.size) {
|
||||||
val containingClass = declaration.containingClassOrObject
|
declaration.deleteWithCompanion()
|
||||||
if (containingClass is KtObjectDeclaration
|
|
||||||
&& containingClass.isCompanion()
|
|
||||||
&& containingClass.declarations.size == 1) {
|
|
||||||
containingClass.delete()
|
|
||||||
} else {
|
|
||||||
declaration.delete()
|
|
||||||
}
|
|
||||||
statementToDelete?.delete()
|
statementToDelete?.delete()
|
||||||
} else {
|
} else {
|
||||||
CommonRefactoringUtil.showErrorHint(
|
CommonRefactoringUtil.showErrorHint(
|
||||||
|
|||||||
@@ -50,10 +50,7 @@ import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
|||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.allChildren
|
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||||
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.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||||
@@ -359,7 +356,7 @@ class KotlinPullUpHelper(
|
|||||||
|
|
||||||
private fun removeOriginalMemberOrAddOverride(member: KtCallableDeclaration) {
|
private fun removeOriginalMemberOrAddOverride(member: KtCallableDeclaration) {
|
||||||
if (member.isAbstract()) {
|
if (member.isAbstract()) {
|
||||||
member.delete()
|
member.deleteWithCompanion()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
member.addModifier(KtTokens.OVERRIDE_KEYWORD)
|
member.addModifier(KtTokens.OVERRIDE_KEYWORD)
|
||||||
@@ -393,7 +390,7 @@ class KotlinPullUpHelper(
|
|||||||
(member.parent as? KtParameterList)?.removeParameter(member)
|
(member.parent as? KtParameterList)?.removeParameter(member)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
member.delete()
|
member.deleteWithCompanion()
|
||||||
}
|
}
|
||||||
newField
|
newField
|
||||||
}
|
}
|
||||||
@@ -448,7 +445,7 @@ class KotlinPullUpHelper(
|
|||||||
}
|
}
|
||||||
|
|
||||||
val movedMember = addMemberToTarget(memberCopy, data.targetClass as KtClass) as KtClassOrObject
|
val movedMember = addMemberToTarget(memberCopy, data.targetClass as KtClass) as KtClassOrObject
|
||||||
member.delete()
|
member.deleteWithCompanion()
|
||||||
return movedMember
|
return movedMember
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -510,7 +507,7 @@ class KotlinPullUpHelper(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user