diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt index 0b19a1de957..f394324d112 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeParameterInspection.kt @@ -54,13 +54,15 @@ class CanBeParameterInspection : AbstractKotlinInspection() { var parameterUser: PsiElement = nameExpression do { parameterUser = PsiTreeUtil.getParentOfType(parameterUser, KtProperty::class.java, KtPropertyAccessor::class.java, - KtClassInitializer::class.java, KtSecondaryConstructor::class.java) ?: return true + KtClassInitializer::class.java, KtSecondaryConstructor::class.java, + KtFunctionLiteral::class.java) ?: return true } while (parameterUser is KtProperty && parameterUser.isLocal) return when (parameterUser) { is KtProperty -> parameterUser.containingClassOrObject !== klass is KtPropertyAccessor -> true is KtClassInitializer -> parameterUser.containingDeclaration !== klass is KtSecondaryConstructor -> parameterUser.getContainingClassOrObject() !== klass + is KtFunctionLiteral -> true else -> true } } diff --git a/idea/testData/inspections/canBeParameter/test.kt b/idea/testData/inspections/canBeParameter/test.kt index 83a6c806946..87237af46e3 100644 --- a/idea/testData/inspections/canBeParameter/test.kt +++ b/idea/testData/inspections/canBeParameter/test.kt @@ -103,3 +103,17 @@ class ModifiedInInit(var x: Int) { open class UsedInOverride(val x: Int) class UserInOverride(override val x: Int) : UsedInOverride(x) +// NO +class UsedInLambda(val x: Int) { + init { + run { + val y = x + } + } +} +// NO +class UsedInDelegate(val x: Int) { + val y: Int by lazy { + x * x + } +} \ No newline at end of file