FIR: Get rid of CompositeTransformResult
This commit is contained in:
@@ -1,31 +1,16 @@
|
||||
sealed class CompositeTransformResult<out T : Any> {
|
||||
|
||||
class Single<out T : Any>(val _single: T) : CompositeTransformResult<T>()
|
||||
|
||||
class Multiple<out T : Any>(val _list: List<T>) : CompositeTransformResult<T>()
|
||||
|
||||
companion object {
|
||||
fun <T : Any> single(t: T) = Single(t)
|
||||
fun <T : Any> many(l: List<T>) = Multiple(l)
|
||||
}
|
||||
|
||||
val single: T
|
||||
get() = (this as Single<*>)._single as T
|
||||
}
|
||||
|
||||
interface FirElement {
|
||||
fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R
|
||||
|
||||
fun accept(visitor: FirVisitorVoid) = accept(visitor, null)
|
||||
|
||||
fun <E : FirElement, D> transform(visitor: FirTransformer<D>, data: D): CompositeTransformResult<E>
|
||||
fun <E : FirElement, D> transform(visitor: FirTransformer<D>, data: D): E
|
||||
}
|
||||
|
||||
abstract class FirVisitor<out R, in D>
|
||||
|
||||
abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>()
|
||||
|
||||
abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirElement>, D>()
|
||||
abstract class FirTransformer<in D> : FirVisitor<FirElement, D>()
|
||||
|
||||
interface FirAnnotationContainer : FirElement {
|
||||
abstract override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R
|
||||
@@ -59,7 +44,7 @@ private class FirApplySupertypesTransformer() : FirTransformer<Nothing?>()
|
||||
|
||||
fun <F : FirClass<F>> F.runSupertypeResolvePhaseForLocalClass(): F {
|
||||
val applySupertypesTransformer = FirApplySupertypesTransformer()
|
||||
return this.transform<F, Nothing?>(applySupertypesTransformer, null).single
|
||||
return this.transform<F, Nothing?>(applySupertypesTransformer, null)
|
||||
}
|
||||
|
||||
abstract class FirPureAbstractElement : FirElement
|
||||
|
||||
Reference in New Issue
Block a user