Reformat: KotlinPullUpHelper
This commit is contained in:
@@ -101,7 +101,8 @@ class KotlinPullUpHelper(
|
|||||||
currentInitializer: KtExpression?,
|
currentInitializer: KtExpression?,
|
||||||
scope: KtBlockExpression?,
|
scope: KtBlockExpression?,
|
||||||
propertyDescriptor: PropertyDescriptor,
|
propertyDescriptor: PropertyDescriptor,
|
||||||
elementsToRemove: MutableSet<KtElement>): KtExpression? {
|
elementsToRemove: MutableSet<KtElement>
|
||||||
|
): KtExpression? {
|
||||||
if (scope == null) return currentInitializer
|
if (scope == null) return currentInitializer
|
||||||
|
|
||||||
var initializerCandidate: KtExpression? = null
|
var initializerCandidate: KtExpression? = null
|
||||||
@@ -121,15 +122,13 @@ class KotlinPullUpHelper(
|
|||||||
|
|
||||||
initializerCandidate = statement
|
initializerCandidate = statement
|
||||||
elementsToRemove.add(statement)
|
elementsToRemove.add(statement)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (!KotlinPsiUnifier.DEFAULT.unify(statement, currentInitializer).matched) return null
|
if (!KotlinPsiUnifier.DEFAULT.unify(statement, currentInitializer).matched) return null
|
||||||
|
|
||||||
initializerCandidate = currentInitializer
|
initializerCandidate = currentInitializer
|
||||||
elementsToRemove.add(statement)
|
elementsToRemove.add(statement)
|
||||||
}
|
}
|
||||||
}
|
} else if (!KotlinPsiUnifier.DEFAULT.unify(statement, initializerCandidate).matched) return null
|
||||||
else if (!KotlinPsiUnifier.DEFAULT.unify(statement, initializerCandidate).matched) return null
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -143,9 +142,11 @@ class KotlinPullUpHelper(
|
|||||||
val elementsToRemove: Set<KtElement>
|
val elementsToRemove: Set<KtElement>
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun getInitializerInfo(property: KtProperty,
|
private fun getInitializerInfo(
|
||||||
|
property: KtProperty,
|
||||||
propertyDescriptor: PropertyDescriptor,
|
propertyDescriptor: PropertyDescriptor,
|
||||||
targetConstructor: KtElement): InitializerInfo? {
|
targetConstructor: KtElement
|
||||||
|
): InitializerInfo? {
|
||||||
val sourceConstructors = targetToSourceConstructors[targetConstructor] ?: return null
|
val sourceConstructors = targetToSourceConstructors[targetConstructor] ?: return null
|
||||||
val elementsToRemove = LinkedHashSet<KtElement>()
|
val elementsToRemove = LinkedHashSet<KtElement>()
|
||||||
val commonInitializer = sourceConstructors.fold(null as KtExpression?) { commonInitializer, constructor ->
|
val commonInitializer = sourceConstructors.fold(null as KtExpression?) { commonInitializer, constructor ->
|
||||||
@@ -272,7 +273,11 @@ class KotlinPullUpHelper(
|
|||||||
|
|
||||||
private fun liftToProtected(declaration: KtNamedDeclaration, ignoreUsages: Boolean = false) {
|
private fun liftToProtected(declaration: KtNamedDeclaration, ignoreUsages: Boolean = false) {
|
||||||
if (!declaration.hasModifier(KtTokens.PRIVATE_KEYWORD)) return
|
if (!declaration.hasModifier(KtTokens.PRIVATE_KEYWORD)) return
|
||||||
if (ignoreUsages || willBeUsedInSourceClass(declaration, data.sourceClass, data.membersToMove)) declaration.addModifier(KtTokens.PROTECTED_KEYWORD)
|
if (ignoreUsages || willBeUsedInSourceClass(
|
||||||
|
declaration,
|
||||||
|
data.sourceClass,
|
||||||
|
data.membersToMove
|
||||||
|
)) declaration.addModifier(KtTokens.PROTECTED_KEYWORD)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun setCorrectVisibility(info: MemberInfoBase<PsiMember>) {
|
override fun setCorrectVisibility(info: MemberInfoBase<PsiMember>) {
|
||||||
@@ -306,8 +311,10 @@ class KotlinPullUpHelper(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun fixOverrideAndGetClashingSuper(sourceMember: KtCallableDeclaration,
|
private fun fixOverrideAndGetClashingSuper(
|
||||||
targetMember: KtCallableDeclaration): KtCallableDeclaration? {
|
sourceMember: KtCallableDeclaration,
|
||||||
|
targetMember: KtCallableDeclaration
|
||||||
|
): KtCallableDeclaration? {
|
||||||
val memberDescriptor = data.memberDescriptors[sourceMember] as CallableMemberDescriptor
|
val memberDescriptor = data.memberDescriptors[sourceMember] as CallableMemberDescriptor
|
||||||
|
|
||||||
if (memberDescriptor.overriddenDescriptors.isEmpty()) {
|
if (memberDescriptor.overriddenDescriptors.isEmpty()) {
|
||||||
@@ -329,7 +336,13 @@ class KotlinPullUpHelper(
|
|||||||
when (data.targetClass) {
|
when (data.targetClass) {
|
||||||
is KtClass -> {
|
is KtClass -> {
|
||||||
data.sourceClass.removeSuperTypeListEntry(currentSpecifier)
|
data.sourceClass.removeSuperTypeListEntry(currentSpecifier)
|
||||||
addSuperTypeEntry(currentSpecifier, data.targetClass, data.targetClassDescriptor, data.sourceClassContext, data.sourceToTargetClassSubstitutor)
|
addSuperTypeEntry(
|
||||||
|
currentSpecifier,
|
||||||
|
data.targetClass,
|
||||||
|
data.targetClassDescriptor,
|
||||||
|
data.sourceClassContext,
|
||||||
|
data.sourceToTargetClassSubstitutor
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
is PsiClass -> {
|
is PsiClass -> {
|
||||||
@@ -357,8 +370,7 @@ class KotlinPullUpHelper(
|
|||||||
private fun removeOriginalMemberOrAddOverride(member: KtCallableDeclaration) {
|
private fun removeOriginalMemberOrAddOverride(member: KtCallableDeclaration) {
|
||||||
if (member.isAbstract()) {
|
if (member.isAbstract()) {
|
||||||
member.deleteWithCompanion()
|
member.deleteWithCompanion()
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
member.addModifier(KtTokens.OVERRIDE_KEYWORD)
|
member.addModifier(KtTokens.OVERRIDE_KEYWORD)
|
||||||
KtTokens.VISIBILITY_MODIFIERS.types.forEach { member.removeModifier(it as KtModifierKeywordToken) }
|
KtTokens.VISIBILITY_MODIFIERS.types.forEach { member.removeModifier(it as KtModifierKeywordToken) }
|
||||||
(member as? KtNamedFunction)?.valueParameters?.forEach { it.dropDefaultValue() }
|
(member as? KtNamedFunction)?.valueParameters?.forEach { it.dropDefaultValue() }
|
||||||
@@ -388,8 +400,7 @@ class KotlinPullUpHelper(
|
|||||||
}
|
}
|
||||||
if (member is KtParameter) {
|
if (member is KtParameter) {
|
||||||
(member.parent as? KtParameterList)?.removeParameter(member)
|
(member.parent as? KtParameterList)?.removeParameter(member)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
member.deleteWithCompanion()
|
member.deleteWithCompanion()
|
||||||
}
|
}
|
||||||
newField
|
newField
|
||||||
@@ -465,11 +476,17 @@ class KotlinPullUpHelper(
|
|||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
val classToAddTo = if (member.isCompanionMemberOf(data.sourceClass)) data.targetClass.getOrCreateCompanionObject() else data.targetClass
|
val classToAddTo =
|
||||||
|
if (member.isCompanionMemberOf(data.sourceClass)) data.targetClass.getOrCreateCompanionObject() else data.targetClass
|
||||||
|
|
||||||
if (toAbstract) {
|
if (toAbstract) {
|
||||||
if (!originalIsAbstract) {
|
if (!originalIsAbstract) {
|
||||||
makeAbstract(memberCopy, data.memberDescriptors[member] as CallableMemberDescriptor, data.sourceToTargetClassSubstitutor, data.targetClass)
|
makeAbstract(
|
||||||
|
memberCopy,
|
||||||
|
data.memberDescriptors[member] as CallableMemberDescriptor,
|
||||||
|
data.sourceToTargetClassSubstitutor,
|
||||||
|
data.targetClass
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
movedMember = doAddCallableMember(memberCopy, clashingSuper, classToAddTo)
|
movedMember = doAddCallableMember(memberCopy, clashingSuper, classToAddTo)
|
||||||
@@ -478,8 +495,7 @@ class KotlinPullUpHelper(
|
|||||||
}
|
}
|
||||||
|
|
||||||
removeOriginalMemberOrAddOverride(member)
|
removeOriginalMemberOrAddOverride(member)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
movedMember = doAddCallableMember(memberCopy, clashingSuper, classToAddTo)
|
movedMember = doAddCallableMember(memberCopy, clashingSuper, classToAddTo)
|
||||||
if (member is KtParameter && movedMember is KtParameter) {
|
if (member is KtParameter && movedMember is KtParameter) {
|
||||||
member.valOrVarKeyword?.delete()
|
member.valOrVarKeyword?.delete()
|
||||||
@@ -495,18 +511,17 @@ class KotlinPullUpHelper(
|
|||||||
|
|
||||||
val parameterIndex = movedMember.parameterIndex()
|
val parameterIndex = movedMember.parameterIndex()
|
||||||
val prevParameterDescriptor = superResolvedCall.resultingDescriptor.valueParameters.getOrNull(parameterIndex - 1)
|
val prevParameterDescriptor = superResolvedCall.resultingDescriptor.valueParameters.getOrNull(parameterIndex - 1)
|
||||||
val prevArgument = superResolvedCall.valueArguments[prevParameterDescriptor]?.arguments?.singleOrNull() as? KtValueArgument
|
val prevArgument =
|
||||||
|
superResolvedCall.valueArguments[prevParameterDescriptor]?.arguments?.singleOrNull() as? KtValueArgument
|
||||||
val newArgumentName = if (prevArgument != null && prevArgument.isNamed()) Name.identifier(member.name!!) else null
|
val newArgumentName = if (prevArgument != null && prevArgument.isNamed()) Name.identifier(member.name!!) else null
|
||||||
val newArgument = psiFactory.createArgument(psiFactory.createExpression(member.name!!), newArgumentName)
|
val newArgument = psiFactory.createArgument(psiFactory.createExpression(member.name!!), newArgumentName)
|
||||||
if (prevArgument == null) {
|
if (prevArgument == null) {
|
||||||
argumentList.addArgument(newArgument)
|
argumentList.addArgument(newArgument)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
argumentList.addArgumentAfter(newArgument, prevArgument)
|
argumentList.addArgumentAfter(newArgument, prevArgument)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
member.deleteWithCompanion()
|
member.deleteWithCompanion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -532,8 +547,7 @@ class KotlinPullUpHelper(
|
|||||||
|
|
||||||
applyMarking(movedMember, data.sourceToTargetClassSubstitutor, data.targetClassDescriptor)
|
applyMarking(movedMember, data.sourceToTargetClassSubstitutor, data.targetClassDescriptor)
|
||||||
addMovedMember(movedMember)
|
addMovedMember(movedMember)
|
||||||
}
|
} finally {
|
||||||
finally {
|
|
||||||
clearMarking(markedElements)
|
clearMarking(markedElements)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -582,7 +596,10 @@ class KotlinPullUpHelper(
|
|||||||
info.usedParameters.forEach {
|
info.usedParameters.forEach {
|
||||||
val newParameter = addParameter(it)
|
val newParameter = addParameter(it)
|
||||||
val originalType = data.sourceClassContext[BindingContext.VALUE_PARAMETER, it]!!.type
|
val originalType = data.sourceClassContext[BindingContext.VALUE_PARAMETER, it]!!.type
|
||||||
newParameter.setType(data.sourceToTargetClassSubstitutor.substitute(originalType, Variance.INVARIANT) ?: originalType, false)
|
newParameter.setType(
|
||||||
|
data.sourceToTargetClassSubstitutor.substitute(originalType, Variance.INVARIANT) ?: originalType,
|
||||||
|
false
|
||||||
|
)
|
||||||
newParameter.typeReference!!.addToShorteningWaitSet()
|
newParameter.typeReference!!.addToShorteningWaitSet()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -593,8 +610,7 @@ class KotlinPullUpHelper(
|
|||||||
is KtSecondaryConstructor -> {
|
is KtSecondaryConstructor -> {
|
||||||
if (it.hasImplicitDelegationCall()) {
|
if (it.hasImplicitDelegationCall()) {
|
||||||
it.replaceImplicitDelegationCallWithExplicit(false)
|
it.replaceImplicitDelegationCallWithExplicit(false)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
it.getDelegationCall()
|
it.getDelegationCall()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user