diff --git a/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt b/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt index 02a4349b035..36d6a1e5e4f 100644 --- a/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt +++ b/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilderTestCase.kt @@ -148,7 +148,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase( } else { element.transformChildren(this, Unit) } - return CompositeTransformResult(element) + return CompositeTransformResult.single(element) } } diff --git a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/CompositeTransformResult.kt b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/CompositeTransformResult.kt index b5bb881d113..218043bca96 100644 --- a/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/CompositeTransformResult.kt +++ b/compiler/fir/tree/visitors/org/jetbrains/kotlin/fir/visitors/CompositeTransformResult.kt @@ -7,28 +7,42 @@ package org.jetbrains.kotlin.fir.visitors import org.jetbrains.kotlin.fir.FirElement -class CompositeTransformResult(val a: Any) { +sealed class CompositeTransformResult() { + + class Single(val _single: T) : CompositeTransformResult() + + class Multiple(val _list: List) : CompositeTransformResult() + companion object { - fun empty() = CompositeTransformResult(emptyList()) - fun single(t: T) = CompositeTransformResult(t) - fun many(l: List) = CompositeTransformResult(l) + fun empty() = CompositeTransformResult.Multiple(emptyList()) + fun single(t: T) = CompositeTransformResult.Single(t) + fun many(l: List) = CompositeTransformResult.Multiple(l) + + } - val isSingle get() = a !is List<*> - val isEmpty get() = a is List<*> && a.isEmpty() + val list: List + get() = when (this) { + is CompositeTransformResult.Multiple<*> -> _list as List + else -> error("!") + } + val single: T - get() { - assert(isSingle) - return a as T + get() = when (this) { + is CompositeTransformResult.Single<*> -> _single as T + else -> error("!") } - val list: List - get() { - return a as List - } + val isSingle + get() = this is CompositeTransformResult.Single<*> + + val isEmpty + get() = this is CompositeTransformResult.Multiple<*> && this.list.isEmpty() + + } @Suppress("NOTHING_TO_INLINE")