Create actual refactoring: get rid of actualNeeded
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user