[FE] Always report UNINITIALIZED_ENUM_COMPANION_WARNING

^KT-54055
This commit is contained in:
Dmitriy Novozhilov
2022-09-15 14:23:45 +03:00
committed by Space
parent 3a5a6e5587
commit a2c12aa711
2 changed files with 4 additions and 20 deletions
@@ -67,22 +67,6 @@ object EnumCompanionInEnumConstructorCallChecker : DeclarationChecker {
val dispatchIsCompanion = dispatchDescriptor == companionDescriptor
val extensionIsCompanion = extensionDescriptor == companionDescriptor
val dispatchIsImplicit = resolvedCall.dispatchReceiver is ImplicitClassReceiver
val extensionIsImplicit = resolvedCall.extensionReceiver is ImplicitClassReceiver
/*
* ControlFlowInformationProviderImpl already reports UNINITIALIZED_ENUM_COMPANION for extension function calls
* with implicit companion receiver, so we should skip reporting a warning
*
* If feature is enabled then ControlFlowInformationProviderImpl won't report an error, to keep all checks
* in one place (in this checker)
*/
if (
!reportError &&
expression is KtCallExpression &&
(dispatchIsCompanion && dispatchIsImplicit || extensionIsCompanion && extensionIsImplicit)
) return false
if (dispatchIsCompanion || extensionIsCompanion) {
val reportOn = when (val receiverExpression = (expression as? KtQualifiedExpression)?.receiverExpression) {
is KtSimpleNameExpression -> receiverExpression
@@ -2,7 +2,7 @@
// ISSUE: KT-49110, KT-54055
enum class SomeEnum(val x: Int) {
A(<!UNINITIALIZED_ENUM_COMPANION!>companionFun<!>().length),// UNINITIALIZED_ENUM_COMPANION
A(<!UNINITIALIZED_ENUM_COMPANION_WARNING!><!UNINITIALIZED_ENUM_COMPANION!>companionFun<!>()<!>.length),// UNINITIALIZED_ENUM_COMPANION
B(<!UNINITIALIZED_ENUM_COMPANION_WARNING, UNINITIALIZED_VARIABLE!>companionProp<!>.length), // UNINITIALIZED_VARIABLE
C(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>SomeEnum<!>.companionFun().length),
@@ -18,7 +18,7 @@ enum class SomeEnum(val x: Int) {
}
enum class OtherEnum(val x: Int) {
G(<!UNINITIALIZED_ENUM_COMPANION!>extensionFun<!>().length), // UNINITIALIZED_ENUM_COMPANION
G(<!UNINITIALIZED_ENUM_COMPANION_WARNING!><!UNINITIALIZED_ENUM_COMPANION!>extensionFun<!>()<!>.length), // UNINITIALIZED_ENUM_COMPANION
H(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>extensionProp<!>.length),
I(<!UNINITIALIZED_ENUM_COMPANION_WARNING!>OtherEnum<!>.extensionFun().length),
@@ -39,13 +39,13 @@ val OtherEnum.Companion.extensionProp: String
enum class EnumWithLambda(val lambda: () -> Unit) {
M({
companionFun().length
<!UNINITIALIZED_ENUM_COMPANION_WARNING!>companionFun()<!>.length
<!UNINITIALIZED_ENUM_COMPANION_WARNING!>companionProp<!>.length
<!UNINITIALIZED_ENUM_COMPANION_WARNING!>EnumWithLambda<!>.companionFun().length
<!UNINITIALIZED_ENUM_COMPANION_WARNING!>EnumWithLambda<!>.companionProp.length
extensionFun().length
<!UNINITIALIZED_ENUM_COMPANION_WARNING!>extensionFun()<!>.length
<!UNINITIALIZED_ENUM_COMPANION_WARNING!>extensionProp<!>.length
<!UNINITIALIZED_ENUM_COMPANION_WARNING!>EnumWithLambda<!>.extensionFun().length