Create expect / actual refactoring: remove all declarations at start

This commit is contained in:
Mikhail Glukhikh
2018-11-21 15:07:41 +03:00
parent d3fada89b7
commit 933d10e75d
3 changed files with 6 additions and 18 deletions
@@ -198,14 +198,7 @@ internal fun KtPsiFactory.generateClassOrObjectByExpectedClass(
} }
} }
val actualClass = createClassCopyByText(expectedClass) val actualClass = createClassHeaderCopyByText(expectedClass)
actualClass.declarations.forEach {
when (it) {
is KtClassOrObject -> it.delete()
is KtCallableDeclaration -> it.delete()
}
}
actualClass.primaryConstructor?.delete()
val context = expectedClass.analyzeWithContent() val context = expectedClass.analyzeWithContent()
actualClass.superTypeListEntries.zip(expectedClass.superTypeListEntries).forEach { (actualEntry, expectedEntry) -> actualClass.superTypeListEntries.zip(expectedClass.superTypeListEntries).forEach { (actualEntry, expectedEntry) ->
@@ -186,15 +186,7 @@ private fun KtPsiFactory.generateClassOrObjectByActualClass(
actualClass: KtClassOrObject, actualClass: KtClassOrObject,
outerExpectedClasses: List<KtClassOrObject> outerExpectedClasses: List<KtClassOrObject>
): KtClassOrObject { ): KtClassOrObject {
val expectedClass = createClassCopyByText(actualClass) val expectedClass = createClassHeaderCopyByText(actualClass)
expectedClass.declarations.forEach {
when (it) {
is KtClassOrObject -> it.delete()
is KtCallableDeclaration -> it.delete()
is KtAnonymousInitializer -> it.delete()
}
}
expectedClass.primaryConstructor?.delete()
val context = actualClass.analyzeWithContent() val context = actualClass.analyzeWithContent()
expectedClass.superTypeListEntries.zip(actualClass.superTypeListEntries).forEach { (expectedEntry, actualEntry) -> expectedClass.superTypeListEntries.zip(actualClass.superTypeListEntries).forEach { (expectedEntry, actualEntry) ->
@@ -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 val text = originalClass.text
return when (originalClass) { return when (originalClass) {
is KtObjectDeclaration -> if (originalClass.isCompanion()) { is KtObjectDeclaration -> if (originalClass.isCompanion()) {
@@ -57,6 +57,9 @@ fun KtPsiFactory.createClassCopyByText(originalClass: KtClassOrObject): KtClassO
} }
is KtEnumEntry -> createEnumEntry(text) is KtEnumEntry -> createEnumEntry(text)
else -> createClass(text) else -> createClass(text)
}.apply {
declarations.forEach(KtDeclaration::delete)
primaryConstructor?.delete()
} }
} }