FIR: Get rid of CompositeTransformResult
This commit is contained in:
@@ -1,50 +1,4 @@
|
||||
FILE: transform.kt
|
||||
public sealed class CompositeTransformResult<out T : R|kotlin/Any|> : R|kotlin/Any| {
|
||||
protected constructor<out T : R|kotlin/Any|>(): R|CompositeTransformResult<T>| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final class Single<out T : R|kotlin/Any|> : R|CompositeTransformResult<T>| {
|
||||
public constructor<out T : R|kotlin/Any|>(_single: R|T|): R|CompositeTransformResult.Single<T>| {
|
||||
super<R|CompositeTransformResult<T>|>()
|
||||
}
|
||||
|
||||
public final val _single: R|T| = R|<local>/_single|
|
||||
public get(): R|T|
|
||||
|
||||
}
|
||||
|
||||
public final class Multiple<out T : R|kotlin/Any|> : R|CompositeTransformResult<T>| {
|
||||
public constructor<out T : R|kotlin/Any|>(_list: R|kotlin/collections/List<T>|): R|CompositeTransformResult.Multiple<T>| {
|
||||
super<R|CompositeTransformResult<T>|>()
|
||||
}
|
||||
|
||||
public final val _list: R|kotlin/collections/List<T>| = R|<local>/_list|
|
||||
public get(): R|kotlin/collections/List<T>|
|
||||
|
||||
}
|
||||
|
||||
public final companion object Companion : R|kotlin/Any| {
|
||||
private constructor(): R|CompositeTransformResult.Companion| {
|
||||
super<R|kotlin/Any|>()
|
||||
}
|
||||
|
||||
public final fun <T : R|kotlin/Any|> single(t: R|T|): R|CompositeTransformResult.Single<T>| {
|
||||
^single R|SubstitutionOverride</CompositeTransformResult.Single.Single>|<R|T|>(R|<local>/t|)
|
||||
}
|
||||
|
||||
public final fun <T : R|kotlin/Any|> many(l: R|kotlin/collections/List<T>|): R|CompositeTransformResult.Multiple<T>| {
|
||||
^many R|SubstitutionOverride</CompositeTransformResult.Multiple.Multiple>|<R|T|>(R|<local>/l|)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public final val single: R|T|
|
||||
public get(): R|T| {
|
||||
^ ((this@R|/CompositeTransformResult| as R|CompositeTransformResult.Single<*>|).R|SubstitutionOverride</CompositeTransformResult.Single._single: R|CapturedType(*)|>| as R|T|)
|
||||
}
|
||||
|
||||
}
|
||||
public abstract interface FirElement : R|kotlin/Any| {
|
||||
public abstract fun <R, D> accept(visitor: R|FirVisitor<R, D>|, data: R|D|): R|R|
|
||||
|
||||
@@ -52,7 +6,7 @@ FILE: transform.kt
|
||||
^accept this@R|/FirElement|.R|/FirElement.accept|<R|kotlin/Unit|, R|kotlin/Nothing?|>(R|<local>/visitor|, Null(null))
|
||||
}
|
||||
|
||||
public abstract fun <E : R|FirElement|, D> transform(visitor: R|FirTransformer<D>|, data: R|D|): R|CompositeTransformResult<E>|
|
||||
public abstract fun <E : R|FirElement|, D> transform(visitor: R|FirTransformer<D>|, data: R|D|): R|E|
|
||||
|
||||
}
|
||||
public abstract class FirVisitor<out R, in D> : R|kotlin/Any| {
|
||||
@@ -67,9 +21,9 @@ FILE: transform.kt
|
||||
}
|
||||
|
||||
}
|
||||
public abstract class FirTransformer<in D> : R|FirVisitor<CompositeTransformResult<FirElement>, D>| {
|
||||
public abstract class FirTransformer<in D> : R|FirVisitor<FirElement, D>| {
|
||||
public constructor<in D>(): R|FirTransformer<D>| {
|
||||
super<R|FirVisitor<CompositeTransformResult<FirElement>, D>|>()
|
||||
super<R|FirVisitor<FirElement, D>|>()
|
||||
}
|
||||
|
||||
}
|
||||
@@ -109,7 +63,7 @@ FILE: transform.kt
|
||||
}
|
||||
public final fun <F : R|FirClass<F>|> R|F|.runSupertypeResolvePhaseForLocalClass(): R|F| {
|
||||
lval applySupertypesTransformer: R|FirApplySupertypesTransformer| = R|/FirApplySupertypesTransformer.FirApplySupertypesTransformer|()
|
||||
^runSupertypeResolvePhaseForLocalClass this@R|/runSupertypeResolvePhaseForLocalClass|.R|SubstitutionOverride</FirClass.transform: R|CompositeTransformResult<E>|>|<R|F|, R|kotlin/Nothing?|>(R|<local>/applySupertypesTransformer|, Null(null)).R|SubstitutionOverride</CompositeTransformResult.single: R|F|>|
|
||||
^runSupertypeResolvePhaseForLocalClass this@R|/runSupertypeResolvePhaseForLocalClass|.R|SubstitutionOverride</FirClass.transform: R|E|>|<R|F|, R|kotlin/Nothing?|>(R|<local>/applySupertypesTransformer|, Null(null))
|
||||
}
|
||||
public abstract class FirPureAbstractElement : R|FirElement| {
|
||||
public constructor(): R|FirPureAbstractElement| {
|
||||
|
||||
@@ -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