Refactoring: return not-null from doCreateActions()

This commit is contained in:
Nikolay Krasko
2015-10-09 18:10:52 +03:00
parent 9ef8370871
commit 4adcf3f114
4 changed files with 13 additions and 12 deletions
@@ -24,12 +24,12 @@ import java.util.Collections
// TODO: Replace with trait when all subclasses are translated to Kotlin // TODO: Replace with trait when all subclasses are translated to Kotlin
public abstract class JetIntentionActionsFactory { public abstract class JetIntentionActionsFactory {
protected open fun isApplicableForCodeFragment(): Boolean = false protected open fun isApplicableForCodeFragment(): Boolean = false
protected abstract fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction>? protected abstract fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction>
public fun createActions(diagnostic: Diagnostic): List<IntentionAction> { public fun createActions(diagnostic: Diagnostic): List<IntentionAction> {
if (diagnostic.getPsiElement().getContainingFile() is JetCodeFragment && !isApplicableForCodeFragment()) { if (diagnostic.getPsiElement().getContainingFile() is JetCodeFragment && !isApplicableForCodeFragment()) {
return emptyList() return emptyList()
} }
return doCreateActions(diagnostic) ?: emptyList() return doCreateActions(diagnostic)
} }
} }
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement
import org.jetbrains.kotlin.psi.psiUtil.startOffset import org.jetbrains.kotlin.psi.psiUtil.startOffset
public object KotlinAddOrderEntryActionFactory : JetIntentionActionsFactory() { public object KotlinAddOrderEntryActionFactory : JetIntentionActionsFactory() {
override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction>? { override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
val simpleExpression = diagnostic.psiElement as? JetSimpleNameExpression ?: return emptyList() val simpleExpression = diagnostic.psiElement as? JetSimpleNameExpression ?: return emptyList()
val refElement = simpleExpression.getQualifiedElement() val refElement = simpleExpression.getQualifiedElement()
@@ -52,6 +52,7 @@ public object KotlinAddOrderEntryActionFactory : JetIntentionActionsFactory() {
return simpleExpression.mainReference.bindToElement(element, ShorteningMode.FORCED_SHORTENING) return simpleExpression.mainReference.bindToElement(element, ShorteningMode.FORCED_SHORTENING)
} }
} }
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
return OrderEntryFix.registerFixes(QuickFixActionRegistrarImpl(null), reference) as List<IntentionAction>? ?: emptyList() return OrderEntryFix.registerFixes(QuickFixActionRegistrarImpl(null), reference) as List<IntentionAction>? ?: emptyList()
} }
@@ -62,10 +62,10 @@ abstract class KotlinIntentionActionFactoryWithDelegate<E : JetElement, D : Any>
protected abstract fun extractFixData(element: E, diagnostic: Diagnostic): D? protected abstract fun extractFixData(element: E, diagnostic: Diagnostic): D?
override final fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction>? { override final fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
val diagnosticMessage = DefaultErrorMessages.render(diagnostic) val diagnosticMessage = DefaultErrorMessages.render(diagnostic)
val diagnosticElementPointer = diagnostic.psiElement.createSmartPointer() val diagnosticElementPointer = diagnostic.psiElement.createSmartPointer()
val originalElement = getElementOfInterest(diagnostic) ?: return null val originalElement = getElementOfInterest(diagnostic) ?: return emptyList()
val originalElementPointer = originalElement.createSmartPointer() val originalElementPointer = originalElement.createSmartPointer()
val file = originalElement.containingFile val file = originalElement.containingFile
@@ -48,18 +48,18 @@ import java.util.*
public object SuperClassNotInitialized : JetIntentionActionsFactory() { public object SuperClassNotInitialized : JetIntentionActionsFactory() {
private val DISPLAY_MAX_PARAMS = 5 private val DISPLAY_MAX_PARAMS = 5
override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction>? { override fun doCreateActions(diagnostic: Diagnostic): List<IntentionAction> {
val delegator = diagnostic.getPsiElement() as JetDelegatorToSuperClass val delegator = diagnostic.getPsiElement() as JetDelegatorToSuperClass
val classOrObjectDeclaration = delegator.getParent().getParent() as? JetClassOrObject ?: return null val classOrObjectDeclaration = delegator.getParent().getParent() as? JetClassOrObject ?: return emptyList()
val typeRef = delegator.getTypeReference() ?: return null val typeRef = delegator.getTypeReference() ?: return emptyList()
val type = typeRef.analyze()[BindingContext.TYPE, typeRef] ?: return null val type = typeRef.analyze()[BindingContext.TYPE, typeRef] ?: return emptyList()
if (type.isError()) return null if (type.isError()) return emptyList()
val superClass = (type.getConstructor().getDeclarationDescriptor() as? ClassDescriptor) ?: return null val superClass = (type.getConstructor().getDeclarationDescriptor() as? ClassDescriptor) ?: return emptyList()
val classDescriptor = delegator.getResolutionFacade().resolveToDescriptor(classOrObjectDeclaration) as ClassDescriptor val classDescriptor = delegator.getResolutionFacade().resolveToDescriptor(classOrObjectDeclaration) as ClassDescriptor
val constructors = superClass.getConstructors().filter { it.isVisible(classDescriptor) } val constructors = superClass.getConstructors().filter { it.isVisible(classDescriptor) }
if (constructors.isEmpty()) return null // no accessible constructor if (constructors.isEmpty()) return emptyList() // no accessible constructor
val fixes = ArrayList<IntentionAction>() val fixes = ArrayList<IntentionAction>()