FIR: Do not leave cyclic upper bounds of type parameters

This commit is contained in:
Denis Zharkov
2020-07-30 15:37:23 +03:00
parent a5a93d00a7
commit 8b71f5e558
5 changed files with 44 additions and 9 deletions
@@ -38,5 +38,7 @@ abstract class FirTypeParameter : FirPureAbstractElement(), FirTypeParameterRef,
abstract override fun replaceResolvePhase(newResolvePhase: FirResolvePhase)
abstract fun replaceBounds(newBounds: List<FirTypeRef>)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypeParameter
}
@@ -60,4 +60,9 @@ internal class FirTypeParameterImpl(
override fun replaceResolvePhase(newResolvePhase: FirResolvePhase) {
resolvePhase = newResolvePhase
}
override fun replaceBounds(newBounds: List<FirTypeRef>) {
bounds.clear()
bounds.addAll(newBounds)
}
}
@@ -291,7 +291,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
+symbol("FirTypeParameterSymbol")
+field(varianceType)
+booleanField("isReified")
+fieldList("bounds", typeRef)
+fieldList("bounds", typeRef, withReplace = true)
+annotations
}