FIR checker: report UNINITIALIZED_ENUM_(ENTRY|COMPANION)

This commit is contained in:
Jinseong Jeon
2021-04-02 10:50:10 -07:00
committed by Mikhail Glukhikh
parent ad9b962536
commit 619360fe4d
22 changed files with 500 additions and 25 deletions
@@ -27,6 +27,7 @@ enum class Fruit(personal: Int) {
}
val score = personal + <!UNINITIALIZED_VARIABLE!>common<!>
val score2 = { personal + common }()
}
// Another example from KT-11769
@@ -53,3 +54,28 @@ enum class EnumCompanion3(val x: Int) {
companion object
}
interface ExtractableCodeDescriptor {
fun isInterface(): Boolean
}
enum class ExtractionTarget(val targetName: String) {
FUNCTION("function") {
override fun isAvailable(descriptor: ExtractableCodeDescriptor) = true
},
LAZY_PROPERTY("lazy property") {
override fun isAvailable(descriptor: ExtractableCodeDescriptor): Boolean {
// Should not report UNINITIALIZED_ENUM_COMPANION
return checkNotTrait(descriptor)
}
};
abstract fun isAvailable(descriptor: ExtractableCodeDescriptor): Boolean
companion object {
fun checkNotTrait(descriptor: ExtractableCodeDescriptor): Boolean {
return !descriptor.isInterface()
}
}
}