Pull Up: Minor: Extract local functions

This commit is contained in:
Alexey Sedunov
2015-07-28 14:00:39 +03:00
parent 7280be7bbc
commit 421f082d43
@@ -509,10 +509,7 @@ class KotlinPullUpHelper(
addAfter(JetPsiFactory(this).createWhiteSpace(), getModifierList()) addAfter(JetPsiFactory(this).createWhiteSpace(), getModifierList())
} }
override fun move(info: MemberInfoBase<PsiMember>, substitutor: PsiSubstitutor) { private fun moveSuperInterface(member: JetClass) {
val member = info.getMember().namedUnwrappedElement as? JetNamedDeclaration ?: return
if (member is JetClass && info.getOverrides() != null) {
val psiFactory = JetPsiFactory(member) val psiFactory = JetPsiFactory(member)
val classDescriptor = data.memberDescriptors[member] as? ClassDescriptor ?: return val classDescriptor = data.memberDescriptors[member] as? ClassDescriptor ?: return
@@ -524,7 +521,6 @@ class KotlinPullUpHelper(
val referencedType = data.sourceClassContext[BindingContext.TYPE, it.getTypeReference()] val referencedType = data.sourceClassContext[BindingContext.TYPE, it.getTypeReference()]
referencedType?.getConstructor()?.getDeclarationDescriptor() == classDescriptor referencedType?.getConstructor()?.getDeclarationDescriptor() == classDescriptor
} ?: return } ?: return
data.sourceClass.removeDelegationSpecifier(currentSpecifier) data.sourceClass.removeDelegationSpecifier(currentSpecifier)
if (!DescriptorUtils.isSubclass(data.targetClassDescriptor, classDescriptor)) { if (!DescriptorUtils.isSubclass(data.targetClassDescriptor, classDescriptor)) {
@@ -536,18 +532,32 @@ class KotlinPullUpHelper(
} }
} }
return
}
override fun move(info: MemberInfoBase<PsiMember>, substitutor: PsiSubstitutor) {
val member = info.getMember().namedUnwrappedElement as? JetNamedDeclaration ?: return
if (member is JetClass && info.getOverrides() != null) {
moveSuperInterface(member)
return return
} }
val markedElements = markElements(member) val markedElements = markElements(member)
val memberCopy = member.copy() as JetNamedDeclaration val memberCopy = member.copy() as JetNamedDeclaration
try { fun moveClassMember(member: JetClassOrObject, memberCopy: JetClassOrObject): JetClassOrObject {
var movedMember: JetNamedDeclaration if (data.targetClass.isInterface()) {
when (member) { memberCopy.removeModifier(JetTokens.INNER_KEYWORD)
is JetCallableDeclaration -> { }
val clashingSuper = fixOverrideAndGetClashingSuper(member, memberCopy as JetCallableDeclaration) val movedMember = addMemberToTarget(memberCopy) as JetClassOrObject
member.delete()
return movedMember
}
fun moveCallableMember(member: JetCallableDeclaration, memberCopy: JetCallableDeclaration): JetCallableDeclaration {
val movedMember: JetCallableDeclaration
val clashingSuper = fixOverrideAndGetClashingSuper(member, memberCopy)
val originalIsAbstract = member.hasModifier(JetTokens.ABSTRACT_KEYWORD) val originalIsAbstract = member.hasModifier(JetTokens.ABSTRACT_KEYWORD)
val toAbstract = when { val toAbstract = when {
@@ -586,21 +596,17 @@ class KotlinPullUpHelper(
&& (movedMember.hasModifier(JetTokens.ABSTRACT_KEYWORD))) { && (movedMember.hasModifier(JetTokens.ABSTRACT_KEYWORD))) {
data.targetClass.addModifierWithSpace(JetTokens.ABSTRACT_KEYWORD) data.targetClass.addModifierWithSpace(JetTokens.ABSTRACT_KEYWORD)
} }
return movedMember
} }
is JetClassOrObject -> { try {
if (data.targetClass.isInterface()) { val movedMember = when (member) {
memberCopy.removeModifier(JetTokens.INNER_KEYWORD) is JetCallableDeclaration -> moveCallableMember(member, memberCopy as JetCallableDeclaration)
} is JetClassOrObject -> moveClassMember(member, memberCopy as JetClassOrObject)
movedMember = addMemberToTarget(memberCopy) as JetClassOrObject
member.delete()
}
else -> return else -> return
} }
processMarkedElements(movedMember) processMarkedElements(movedMember)
addMovedMember(movedMember) addMovedMember(movedMember)
} }
finally { finally {