[extract method] IDEA-262123: return default variable value on unconditional exits

GitOrigin-RevId: eaf46751769ecddd3711de96c48b62f209878b27
This commit is contained in:
Alexandr Suhinin
2024-06-20 17:01:05 +03:00
committed by intellij-monorepo-bot
parent 7c0af63e54
commit ac42764da7
5 changed files with 44 additions and 2 deletions

View File

@@ -32,7 +32,8 @@ class BodyBuilder(private val factory: PsiElementFactory) {
is EmptyOutput -> throw IllegalStateException()
}
is UnconditionalFlow -> when (dataOutput) {
is VariableOutput, is EmptyOutput -> "return;"
is VariableOutput -> "return ${dataOutput.variable.name};"
is EmptyOutput -> "return;"
is ExpressionOutput -> "return $returnExpression;"
ArtificialBooleanOutput -> throw IllegalStateException()
}

View File

@@ -47,7 +47,6 @@ fun findExtractOptions(elements: List<PsiElement>, inferNullity: Boolean = true)
variableData.nullability != Nullability.NOT_NULL && flowOutput is ConditionalFlow -> null
flowOutput is ConditionalFlow && ! canExtractStatementsFromScope(flowOutput.statements, elements) -> null
flowOutput is ConditionalFlow -> variableData.copy(nullability = Nullability.NULLABLE)
flowOutput is UnconditionalFlow -> null
else -> variableData
}
else -> findFlowData(analyzer, flowOutput)