From 2f0b05254086ce92cbe039ef085990c84dbe24b0 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 13 Apr 2016 17:18:31 +0300 Subject: [PATCH] Fix infinite loop in CanBeValInspection Obviously there should be 'return' instead of 'continue' Otherwise the loop will not end #KT-11891 Fixed --- .../kotlin/idea/inspections/CanBeValInspection.kt | 2 +- .../inspections/canBeVal/inspectionData/expected.xml | 9 +++++++++ idea/testData/inspections/canBeVal/kt11891.kt | 12 ++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 idea/testData/inspections/canBeVal/kt11891.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt index 535fd846733..696cf73ed0a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/CanBeValInspection.kt @@ -98,7 +98,7 @@ class CanBeValInspection : AbstractKotlinInspection() { var instruction = from while (instruction is InstructionWithNext) { val next = instruction.next ?: return false - if (next in visited) continue + if (next in visited) return false if (next in targets) return true visited.add(next) instruction = next diff --git a/idea/testData/inspections/canBeVal/inspectionData/expected.xml b/idea/testData/inspections/canBeVal/inspectionData/expected.xml index 5ec5cf9612d..1d57b430a09 100644 --- a/idea/testData/inspections/canBeVal/inspectionData/expected.xml +++ b/idea/testData/inspections/canBeVal/inspectionData/expected.xml @@ -61,4 +61,13 @@ Local 'var' can be declared as 'val' Can be declared as 'val' + + + kt11891.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/kt11891.kt b/idea/testData/inspections/canBeVal/kt11891.kt new file mode 100644 index 00000000000..6849cdd794e --- /dev/null +++ b/idea/testData/inspections/canBeVal/kt11891.kt @@ -0,0 +1,12 @@ +fun main(args: Array) { + var a: String? + + if (args.size == 1) { + a = args[0] + } + else { + a = args.toString() + } + + if (a != null && a.equals("cde")) return +}