fixes in GenerateSealedTypesWorkaround

This commit is contained in:
2025-01-15 13:22:07 +06:00
parent 647daa8627
commit 24977822c9
5 changed files with 49 additions and 5 deletions

View File

@@ -2,6 +2,10 @@
## 0.24.3
* `Ksp`:
* `Sealed`:
* Fixes in processing of `GenerateSealedTypesWorkaround` annotations
## 0.24.2
* `Versions`:

View File

@@ -116,9 +116,9 @@ class Processor(
allowNonSealed = annotation ?.includeNonSealedSubTypes ?: false
).distinct()
val subClassesNames = subClasses.filter {
it.getAnnotationsByType(GenerateSealedWorkaround.Exclude::class).count() == 0
it.getAnnotationsByType(GenerateSealedTypesWorkaround.Exclude::class).count() == 0
}.sortedBy {
(it.getAnnotationsByType(GenerateSealedWorkaround.Order::class).firstOrNull()) ?.order ?: 0
(it.getAnnotationsByType(GenerateSealedTypesWorkaround.Order::class).firstOrNull()) ?.order ?: 0
}.map {
it.toClassName()
}.toList()

View File

@@ -7,10 +7,10 @@ import dev.inmo.micro_utils.ksp.sealed.GenerateSealedWorkaround
@GenerateSealedTypesWorkaround
sealed interface Test {
@GenerateSealedWorkaround.Order(2)
@GenerateSealedTypesWorkaround.Order(2)
@GenerateSealedTypesWorkaround.Exclude
object A : Test
@GenerateSealedWorkaround.Exclude
@GenerateSealedTypesWorkaround.Exclude
@GenerateSealedTypesWorkaround.Order(2)
object B : Test
@GenerateSealedWorkaround.Order(0)
@GenerateSealedTypesWorkaround.Order(0)

View File

@@ -7,6 +7,6 @@ import kotlin.collections.Set
import kotlin.reflect.KClass
private val subtypes: Set<KClass<out Test>> = setOf(Test.C::class,
Test.A::class)
Test.B::class)
public fun Test.Companion.subtypes(): Set<KClass<out Test>> = subtypes

View File

@@ -0,0 +1,40 @@
import dev.inmo.micro_utils.ksp.sealed.generator.test.subtypes
import dev.inmo.micro_utils.ksp.sealed.generator.test.values
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class TestTests {
@Test
fun testThatAfterCompilationTestWorkaroundsHaveCorrectValues() {
val correctValues = arrayOf(
dev.inmo.micro_utils.ksp.sealed.generator.test.Test.C,
dev.inmo.micro_utils.ksp.sealed.generator.test.Test.A,
)
val correctSubtypes = arrayOf(
dev.inmo.micro_utils.ksp.sealed.generator.test.Test.C::class,
dev.inmo.micro_utils.ksp.sealed.generator.test.Test.B::class,
)
assertEquals(
correctValues.size, dev.inmo.micro_utils.ksp.sealed.generator.test.Test.values().size
)
correctValues.forEachIndexed { index, value ->
assertTrue(
value === dev.inmo.micro_utils.ksp.sealed.generator.test.Test.values().elementAt(index)
)
}
assertEquals(
correctSubtypes.size, dev.inmo.micro_utils.ksp.sealed.generator.test.Test.subtypes().size
)
correctSubtypes.forEachIndexed { index, value ->
assertTrue(
value.qualifiedName != null
)
assertTrue(
value.qualifiedName === dev.inmo.micro_utils.ksp.sealed.generator.test.Test.subtypes().elementAt(index).qualifiedName
)
}
}
}