[FE 1.0] Fix reporting of UNINITIALIZED_ENUM_ENTRY on qualified enums

^KT-41124
^KT-50758 Fixed
This commit is contained in:
Dmitriy Novozhilov
2022-01-12 17:03:30 +03:00
committed by teamcity
parent 50f6825775
commit bb6c6dc45d
9 changed files with 254 additions and 1 deletions
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.AccessTarget
import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.InstructionWithValue
import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MagicKind
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageFeature.ProhibitQualifiedAccessToUninitializedEnumEntry
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.contracts.description.EventOccurrencesRange
import org.jetbrains.kotlin.contracts.description.canBeRevisited
@@ -283,7 +284,12 @@ class ControlFlowProcessor(
generateCall(resolvedCall.variableCall)
} else {
if (resolvedCall == null) {
val qualifier = trace.bindingContext[BindingContext.QUALIFIER, expression]
val qualifierExpression =
when (languageVersionSettings.supportsFeature(ProhibitQualifiedAccessToUninitializedEnumEntry)) {
true -> expression.getTopmostParentQualifiedExpressionForSelector() ?: expression
false -> expression
}
val qualifier = trace.bindingContext[BindingContext.QUALIFIER, qualifierExpression]
if (qualifier != null && generateQualifier(expression, qualifier)) return
}
if (!generateCall(expression) && expression.parent !is KtCallExpression) {