From adf845b2fd38b4747292bf234be2fa3360043a5b Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Thu, 25 Apr 2019 14:23:41 +0300 Subject: [PATCH] FIR: provide resolved super-type as the type of enum entry reference --- .../transformers/FirBodyResolveTransformer.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index e73417271d3..865adaff973 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -166,10 +166,19 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn if (symbol is ConeCallableSymbol) { jump.tryCalculateReturnType(symbol.firUnsafe()) } else if (symbol is ConeClassifierSymbol) { - FirResolvedTypeRefImpl( - session, null, symbol.constructType(emptyArray(), isNullable = false), - isMarkedNullable = false, annotations = emptyList() - ) + val firUnsafe = symbol.firUnsafe() + // TODO: unhack + if (firUnsafe is FirEnumEntry) { + (firUnsafe.superTypeRefs.firstOrNull() as? FirResolvedTypeRef) ?: FirErrorTypeRefImpl( + session, + null, + "no enum item supertype" + ) + } else + FirResolvedTypeRefImpl( + session, null, symbol.constructType(emptyArray(), isNullable = false), + isMarkedNullable = false, annotations = emptyList() + ) } else { error("WTF ! $symbol") }