How to let IntelliJ show error when value is not met requirement [Kotlin]
This is an simplified example of what I try to do but still failed
class Definition {
@Target(AnnotationTarget.TYPE, AnnotationTarget.VALUE_PARAMETER)
@IntDef(View.VISIBLE, View.INVISIBLE, View.GONE)
//only 0,4,8 are allowed
@Retention(AnnotationRetention.SOURCE)
annotation class Visibility
}
fun isVisibleView(@Definition.Visibility visibility: Int, viewList: ArrayList<View>, ) {
for (view in viewList) {
view.visibility = visibility
}
}
//I want the ide to SHOW ERROR here since 2 is not in 0,4,8 (show before compile)
isVisibleView(2, visibleItems)
I think this question is about IDE config or Kotlin syntax
In short Enum is enough.
IntDef is android specific so you'd have to find an Android rule for IntelliJ to analyze those annotations.
Even you can make it work it only on java not Kotlin. It seems like the warning will be generated by lint but only if you write the annotation in Java, not Kotlin
As state in this issue https://youtrack.jetbrains.com/issue/KTIJ-18693
https://developer.android.com/studio/write/annotations?fbclid=IwAR2duPFqsMx1VPDlK0nyt8-mAKJyLw_WAjY5GQMIHH__-FMpRV9SNJpqY6k
Credit: Anton Malinsky