Add getter: don't suggest when property has no type or initializer

So #KT-24632 Fixed
This commit is contained in:
Toshiaki Kameyama
2018-05-29 16:13:33 +03:00
committed by Mikhail Glukhikh
parent 8969e7a6e1
commit b4962a1880
6 changed files with 37 additions and 4 deletions
@@ -27,21 +27,22 @@ import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtPsiFactory
abstract class AbstractAddAccessorsIntention(
private val addGetter: Boolean,
private val addSetter: Boolean
private val addGetter: Boolean,
private val addSetter: Boolean
) : SelfTargetingRangeIntention<KtProperty>(KtProperty::class.java, createFamilyName(addGetter, addSetter)) {
override fun applicabilityRange(element: KtProperty): TextRange? {
if (element.isLocal || element.isAbstract() || element.hasDelegate() ||
element.hasModifier(KtTokens.LATEINIT_KEYWORD) ||
element.hasModifier(KtTokens.CONST_KEYWORD)) {
element.hasModifier(KtTokens.CONST_KEYWORD)
) {
return null
}
val descriptor = element.resolveToDescriptorIfAny() as? CallableMemberDescriptor ?: return null
if (descriptor.isExpect) return null
if (addSetter && (!element.isVar || element.setter != null)) return null
if (addGetter && element.getter != null) return null
if (addGetter && ((element.typeReference == null && element.initializer == null) || element.getter != null)) return null
return element.nameIdentifier?.textRange
}