[FIR] Fix reporting of UNINITIALIZED_ENUM_ENTRY in init blocks
^KT-41126 Fixed
This commit is contained in:
committed by
Space Team
parent
c596c1ad73
commit
a9248569a6
+2
-2
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -30,7 +30,7 @@ abstract class FirAnonymousInitializer : FirDeclaration(), FirControlFlowGraphOw
|
||||
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||
abstract val body: FirBlock?
|
||||
abstract override val symbol: FirAnonymousInitializerSymbol
|
||||
abstract val dispatchReceiverType: ConeSimpleKotlinType?
|
||||
abstract val dispatchReceiverType: ConeClassLikeType?
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitAnonymousInitializer(this, data)
|
||||
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
|
||||
/*
|
||||
@@ -40,7 +40,7 @@ class FirAnonymousInitializerBuilder : FirDeclarationBuilder, FirAnnotationConta
|
||||
override var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||
var body: FirBlock? = null
|
||||
var symbol: FirAnonymousInitializerSymbol = FirAnonymousInitializerSymbol()
|
||||
var dispatchReceiverType: ConeSimpleKotlinType? = null
|
||||
var dispatchReceiverType: ConeClassLikeType? = null
|
||||
|
||||
override fun build(): FirAnonymousInitializer {
|
||||
return FirAnonymousInitializerImpl(
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.FirAnnotation
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.visitors.*
|
||||
import org.jetbrains.kotlin.fir.MutableOrEmptyList
|
||||
import org.jetbrains.kotlin.fir.builder.toMutableOrEmpty
|
||||
@@ -36,7 +36,7 @@ internal class FirAnonymousInitializerImpl(
|
||||
override val attributes: FirDeclarationAttributes,
|
||||
override var body: FirBlock?,
|
||||
override val symbol: FirAnonymousInitializerSymbol,
|
||||
override val dispatchReceiverType: ConeSimpleKotlinType?,
|
||||
override val dispatchReceiverType: ConeClassLikeType?,
|
||||
) : FirAnonymousInitializer() {
|
||||
override val annotations: List<FirAnnotation> get() = emptyList()
|
||||
override var controlFlowGraphReference: FirControlFlowGraphReference? = null
|
||||
|
||||
+4
@@ -7,7 +7,11 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
|
||||
class FirAnonymousInitializerSymbol : FirBasedSymbol<FirAnonymousInitializer>() {
|
||||
override fun toString(): String = "${this::class.simpleName} <init>"
|
||||
|
||||
val dispatchReceiverType: ConeSimpleKotlinType?
|
||||
get() = fir.dispatchReceiverType
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.expressions.FirAnonymousObjectExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
@@ -94,7 +95,10 @@ class FirFieldSymbol(callableId: CallableId) : FirVariableSymbol<FirField>(calla
|
||||
get() = fir.isVar
|
||||
}
|
||||
|
||||
class FirEnumEntrySymbol(callableId: CallableId) : FirVariableSymbol<FirEnumEntry>(callableId)
|
||||
class FirEnumEntrySymbol(callableId: CallableId) : FirVariableSymbol<FirEnumEntry>(callableId) {
|
||||
val initializerObjectSymbol: FirAnonymousObjectSymbol?
|
||||
get() = (fir.initializer as? FirAnonymousObjectExpression)?.anonymousObject?.symbol
|
||||
}
|
||||
|
||||
class FirValueParameterSymbol(name: Name) : FirVariableSymbol<FirValueParameter>(CallableId(name)) {
|
||||
val hasDefaultValue: Boolean
|
||||
|
||||
+1
-1
@@ -453,7 +453,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
||||
anonymousInitializer.configure {
|
||||
+body(nullable = true, withReplace = true)
|
||||
+symbol("FirAnonymousInitializerSymbol")
|
||||
+field("dispatchReceiverType", coneSimpleKotlinTypeType, nullable = true)
|
||||
+field("dispatchReceiverType", coneClassLikeTypeType, nullable = true)
|
||||
}
|
||||
|
||||
danglingModifierList.configure {
|
||||
|
||||
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
|
||||
import org.jetbrains.kotlin.fir.tree.generator.context.generatedType
|
||||
import org.jetbrains.kotlin.fir.tree.generator.context.type
|
||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
@@ -44,6 +45,7 @@ val annotationUseSiteTargetType = type(AnnotationUseSiteTarget::class)
|
||||
val operationKindType = type("fir.expressions", "LogicOperationKind")
|
||||
val coneKotlinTypeType = type(ConeKotlinType::class)
|
||||
val coneSimpleKotlinTypeType = type(ConeSimpleKotlinType::class)
|
||||
val coneClassLikeTypeType = type(ConeClassLikeType::class)
|
||||
|
||||
val whenRefType = generatedType("", "FirExpressionRef<FirWhenExpression>")
|
||||
val referenceToSimpleExpressionType = generatedType("", "FirExpressionRef<FirExpression>")
|
||||
|
||||
Reference in New Issue
Block a user