diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt index 00e7c3478ea..535fd846733 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt @@ -108,7 +108,7 @@ class CanBeValInspection : AbstractKotlinInspection() { if (next in visited) continue if (next in targets) return true visited.add(next) - if (canReach(next, targets)) return true + if (canReach(next, targets, visited)) return true } return false } diff --git a/idea/testData/inspections/canBeVal/inspectionData/expected.xml b/idea/testData/inspections/canBeVal/inspectionData/expected.xml index 124baef166b..5ec5cf9612d 100644 --- a/idea/testData/inspections/canBeVal/inspectionData/expected.xml +++ b/idea/testData/inspections/canBeVal/inspectionData/expected.xml @@ -52,4 +52,13 @@ Local 'var' can be declared as 'val' Can be declared as 'val' + + + stackOverflowBug.kt + 2 + light_idea_test_case + + Local 'var' can be declared as 'val' + Can be declared as 'val' + diff --git a/idea/testData/inspections/canBeVal/stackOverflowBug.kt b/idea/testData/inspections/canBeVal/stackOverflowBug.kt new file mode 100644 index 00000000000..3e194993199 --- /dev/null +++ b/idea/testData/inspections/canBeVal/stackOverflowBug.kt @@ -0,0 +1,6 @@ +fun foo() { + var a: Int + a = 1 + for (i in 1..10) + print(i) +}