Create actual refactoring: get rid of actualNeeded

This commit is contained in:
Mikhail Glukhikh
2018-11-21 16:12:35 +03:00
parent d54b5b68cc
commit 17e0e529e0
2 changed files with 4 additions and 14 deletions
@@ -53,7 +53,7 @@ class AddActualFix(
if (missedDeclarations.isEmpty()) return if (missedDeclarations.isEmpty()) return
val factory = KtPsiFactory(element) val factory = KtPsiFactory(element)
val pureActualClass = factory.generateClassOrObjectByExpectedClass( val pureActualClass = factory.generateClassOrObjectByExpectedClass(
project, expectedClass, actualNeeded = true, project, expectedClass,
missedDeclarations = missedDeclarations missedDeclarations = missedDeclarations
) )
@@ -136,7 +136,7 @@ class CreateActualClassFix(
actualModule: Module, actualModule: Module,
actualPlatform: MultiTargetPlatform.Specific actualPlatform: MultiTargetPlatform.Specific
) : CreateActualFix<KtClassOrObject>(klass, actualModule, actualPlatform, { project, element -> ) : CreateActualFix<KtClassOrObject>(klass, actualModule, actualPlatform, { project, element ->
generateClassOrObjectByExpectedClass(project, element, actualNeeded = true) generateClassOrObjectByExpectedClass(project, element)
}) })
class CreateActualPropertyFix( class CreateActualPropertyFix(
@@ -157,19 +157,9 @@ class CreateActualFunctionFix(
descriptor?.let { generateFunction(project, element, descriptor) } descriptor?.let { generateFunction(project, element, descriptor) }
}) })
private fun KtModifierListOwner.replaceExpectModifier(actualNeeded: Boolean) {
if (actualNeeded) {
addModifier(KtTokens.ACTUAL_KEYWORD)
} else {
removeModifier(KtTokens.HEADER_KEYWORD)
removeModifier(KtTokens.EXPECT_KEYWORD)
}
}
internal fun KtPsiFactory.generateClassOrObjectByExpectedClass( internal fun KtPsiFactory.generateClassOrObjectByExpectedClass(
project: Project, project: Project,
expectedClass: KtClassOrObject, expectedClass: KtClassOrObject,
actualNeeded: Boolean,
// If null, all expect class declarations are missed (so none from them exists) // If null, all expect class declarations are missed (so none from them exists)
missedDeclarations: List<KtDeclaration>? = null missedDeclarations: List<KtDeclaration>? = null
): KtClassOrObject { ): KtClassOrObject {
@@ -209,14 +199,14 @@ internal fun KtPsiFactory.generateClassOrObjectByExpectedClass(
} }
} }
if (actualClass !is KtEnumEntry) { if (actualClass !is KtEnumEntry) {
actualClass.replaceExpectModifier(actualNeeded) actualClass.addModifier(KtTokens.ACTUAL_KEYWORD)
} }
declLoop@ for (expectedDeclaration in expectedClass.declarations.filter { !it.exists() }) { declLoop@ for (expectedDeclaration in expectedClass.declarations.filter { !it.exists() }) {
val descriptor = expectedDeclaration.toDescriptor() ?: continue val descriptor = expectedDeclaration.toDescriptor() ?: continue
val actualDeclaration: KtDeclaration = when (expectedDeclaration) { val actualDeclaration: KtDeclaration = when (expectedDeclaration) {
is KtClassOrObject -> { is KtClassOrObject -> {
generateClassOrObjectByExpectedClass(project, expectedDeclaration, actualNeeded = true) generateClassOrObjectByExpectedClass(project, expectedDeclaration)
} }
is KtCallableDeclaration -> { is KtCallableDeclaration -> {
when (expectedDeclaration) { when (expectedDeclaration) {