Quick-Fixes: Support "Change function return type" quick-fix for non-local returns

#KT-6910 Fixed
This commit is contained in:
Alexey Sedunov
2015-03-13 18:46:35 +03:00
parent 842eaa86a4
commit f5107be315
7 changed files with 51 additions and 3 deletions
@@ -26,7 +26,9 @@ import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
import org.jetbrains.kotlin.psi.JetDeclarationWithBody
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
import org.jetbrains.kotlin.psi.JetCallableDeclaration
import org.jetbrains.kotlin.psi.JetExpression
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
import org.jetbrains.kotlin.resolve.calls.context.ResolutionContext
@@ -43,6 +45,10 @@ public fun JetReturnExpression.getTargetFunctionDescriptor(context: BindingConte
.firstOrNull()
}
public fun JetReturnExpression.getTargetFunction(context: BindingContext): JetCallableDeclaration? {
return getTargetFunctionDescriptor(context)?.let { DescriptorToSourceUtils.descriptorToDeclaration(it) as? JetCallableDeclaration }
}
public fun JetExpression.isUsedAsExpression(context: BindingContext): Boolean = context[BindingContext.USED_AS_EXPRESSION, this]!!
public fun JetExpression.isUsedAsStatement(context: BindingContext): Boolean = !isUsedAsExpression(context)