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)
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) ->
@@ -186,15 +186,7 @@ private fun KtPsiFactory.generateClassOrObjectByActualClass(
actualClass: KtClassOrObject,
outerExpectedClasses: List<KtClassOrObject>
): 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) ->
@@ -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()
}
}