Generate actual nested classes for actual owner class #KT-19937 Fixed

This commit is contained in:
Mikhail Glukhikh
2017-10-03 11:35:14 +03:00
parent e47feaf0b8
commit 1e79d9791d
3 changed files with 18 additions and 12 deletions
@@ -201,7 +201,6 @@ private fun KtPsiFactory.generateClassOrObject(
if (expectedClass !is KtClass || !expectedClass.isInterface()) {
actualClass.declarations.forEach {
if (it !is KtEnumEntry &&
it !is KtClassOrObject &&
!it.hasModifier(KtTokens.ABSTRACT_KEYWORD)) {
it.delete()
}
@@ -211,6 +210,13 @@ private fun KtPsiFactory.generateClassOrObject(
if (expectedDeclaration.hasModifier(KtTokens.ABSTRACT_KEYWORD)) continue
val descriptor = expectedDeclaration.toDescriptor() ?: continue
val actualDeclaration: KtDeclaration = when (expectedDeclaration) {
is KtClassOrObject ->
if (expectedDeclaration !is KtEnumEntry) {
generateClassOrObject(project, expectedDeclaration, actualNeeded = true)
}
else {
continue@declLoop
}
is KtFunction -> generateFunction(project, expectedDeclaration, descriptor as FunctionDescriptor, actualNeeded = true)
is KtProperty -> generateProperty(project, expectedDeclaration, descriptor as PropertyDescriptor, actualNeeded = true)
else -> continue@declLoop
@@ -1,15 +1,15 @@
// WithNested: to be implemented
actual class WithNested {
class Nested {
fun bar()
}
inner class Inner {
fun baz()
}
actual fun foo(): Int {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
actual class Nested {
actual fun bar() {}
}
actual inner class Inner {
actual fun baz() {}
}
}
@@ -1,6 +1,6 @@
// Sealed: to be implemented
actual sealed class Sealed {
object Obj : Sealed
actual object Obj : Sealed
actual class Klass(x: Int) : Sealed
class Klass(x: Int) : Sealed
}