From 66f3e266d9d7e7f8752325f161c7471ace4852ec Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 25 Oct 2016 15:06:02 +0300 Subject: [PATCH] Var can be val: correct handling of initialization in lambda #KT-14065 Fixed --- .../kotlin/idea/inspections/CanBeValInspection.kt | 2 +- .../inspections/canBeVal/lambdaInitialization.kt | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspections/canBeVal/lambdaInitialization.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt index 0f2097ddc43..672fe39c1e9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt @@ -83,7 +83,7 @@ class CanBeValInspection : AbstractKotlinInspection() { val writeInstructions = pseudocode.collectWriteInstructions(descriptor) if (writeInstructions.isEmpty()) return false // incorrect code - do not report - return writeInstructions.none { canReach(it, writeInstructions) } + return writeInstructions.none { it.owner !== pseudocode || canReach(it, writeInstructions) } } } diff --git a/idea/testData/inspections/canBeVal/lambdaInitialization.kt b/idea/testData/inspections/canBeVal/lambdaInitialization.kt new file mode 100644 index 00000000000..83989ea2fd1 --- /dev/null +++ b/idea/testData/inspections/canBeVal/lambdaInitialization.kt @@ -0,0 +1,9 @@ +fun run(f: () -> Unit) = f() + +fun foo() { + var a: Int + + run { + a = 20 + } +} \ No newline at end of file