diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt
index 2be89662300..6ffe3639249 100644
--- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHints.kt
@@ -55,16 +55,29 @@ private fun getNameOfFunctionThatTakesLambda(expression: KtExpression): String?
}
private fun allowLabelOnExpressionPart(expression: KtExpression): Boolean {
- val parent = expression.parent
- return parent is KtAnnotatedExpression && parent.baseExpression == expression && parent.lineSeparatorBeforeBase()
+ val parent = expression.parent as? KtExpression ?: return false
+ return expression == expressionStatementPart(parent)
}
private fun forceLabelOnExpressionPart(expression: KtExpression): Boolean {
- return expression is KtAnnotatedExpression && expression.lineSeparatorBeforeBase()
+ return expressionStatementPart(expression) != null
}
-private fun KtAnnotatedExpression.lineSeparatorBeforeBase(): Boolean {
- val base = baseExpression ?: return false
- val whiteSpace = base.node.treePrev?.psi as? PsiWhiteSpace ?: return false
+private fun expressionStatementPart(expression: KtExpression): KtExpression? {
+ val splitPart: KtExpression = when (expression) {
+ is KtAnnotatedExpression -> expression.baseExpression
+ is KtLabeledExpression -> expression.baseExpression
+ else -> null
+ } ?: return null
+
+ if (!isNewLineBeforeExpression(splitPart)) {
+ return null
+ }
+
+ return splitPart
+}
+
+private fun isNewLineBeforeExpression(expression: KtExpression): Boolean {
+ val whiteSpace = expression.node.treePrev?.psi as? PsiWhiteSpace ?: return false
return whiteSpace.text.contains("\n")
}
diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHintsTest.kt b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHintsTest.kt
index 7cd9b96cc7e..5d1daa643b0 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHintsTest.kt
+++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/LambdaReturnValueHintsTest.kt
@@ -158,4 +158,23 @@ class LambdaReturnValueHintsTest : KotlinLightCodeInsightFixtureTestCase() {
"""
)
}
+
+ fun testLabeledStatement() {
+ check(
+ """
+ fun test() {
+ run {
+ val files: Any? = null
+ run@
+ 12
+ }
+
+ run {
+ val files: Any? = null
+ run@12
+ }
+ }
+ """
+ )
+ }
}