From 933d10e75d0473cb5e99912aeb2576902fb0f29d Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 21 Nov 2018 15:07:41 +0300 Subject: [PATCH] Create expect / actual refactoring: remove all declarations at start --- .../idea/quickfix/expectactual/CreateActualFix.kt | 9 +-------- .../idea/quickfix/expectactual/CreateExpectedFix.kt | 10 +--------- .../idea/quickfix/expectactual/ExpectActualUtils.kt | 5 ++++- 3 files changed, 6 insertions(+), 18 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt index f2e25ad2b63..7ca64a7aec6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateActualFix.kt @@ -198,14 +198,7 @@ internal fun KtPsiFactory.generateClassOrObjectByExpectedClass( } } - val actualClass = createClassCopyByText(expectedClass) - actualClass.declarations.forEach { - when (it) { - is KtClassOrObject -> it.delete() - is KtCallableDeclaration -> it.delete() - } - } - actualClass.primaryConstructor?.delete() + val actualClass = createClassHeaderCopyByText(expectedClass) val context = expectedClass.analyzeWithContent() actualClass.superTypeListEntries.zip(expectedClass.superTypeListEntries).forEach { (actualEntry, expectedEntry) -> diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt index 98cadda2cd6..1daf1897220 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/CreateExpectedFix.kt @@ -186,15 +186,7 @@ private fun KtPsiFactory.generateClassOrObjectByActualClass( actualClass: KtClassOrObject, outerExpectedClasses: List ): KtClassOrObject { - val expectedClass = createClassCopyByText(actualClass) - expectedClass.declarations.forEach { - when (it) { - is KtClassOrObject -> it.delete() - is KtCallableDeclaration -> it.delete() - is KtAnonymousInitializer -> it.delete() - } - } - expectedClass.primaryConstructor?.delete() + val expectedClass = createClassHeaderCopyByText(actualClass) val context = actualClass.analyzeWithContent() expectedClass.superTypeListEntries.zip(actualClass.superTypeListEntries).forEach { (expectedEntry, actualEntry) -> diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt index 067ab4ea259..5f7f50c4a03 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/expectactual/ExpectActualUtils.kt @@ -47,7 +47,7 @@ fun createFileForDeclaration(module: Module, declaration: KtNamedDeclaration): K } } -fun KtPsiFactory.createClassCopyByText(originalClass: KtClassOrObject): KtClassOrObject { +fun KtPsiFactory.createClassHeaderCopyByText(originalClass: KtClassOrObject): KtClassOrObject { val text = originalClass.text return when (originalClass) { is KtObjectDeclaration -> if (originalClass.isCompanion()) { @@ -57,6 +57,9 @@ fun KtPsiFactory.createClassCopyByText(originalClass: KtClassOrObject): KtClassO } is KtEnumEntry -> createEnumEntry(text) else -> createClass(text) + }.apply { + declarations.forEach(KtDeclaration::delete) + primaryConstructor?.delete() } }