From 2a71679bc47010a3801f9116e917714a943b68b9 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 30 Oct 2014 18:25:47 +0100 Subject: [PATCH] initialized twice should not make use of computed constants (IDEA-63226) --- .../impl/analysis/HighlightControlFlowUtil.java | 2 +- .../LocalVariableInitialization.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java index 41172013718e..7036b5d5ea1a 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightControlFlowUtil.java @@ -531,7 +531,7 @@ public class HighlightControlFlowUtil { Collection codeBlockProblems = finalVarProblems.get(codeBlock); if (codeBlockProblems == null) { try { - final ControlFlow controlFlow = getControlFlow(codeBlock); + final ControlFlow controlFlow = getControlFlowNoConstantEvaluate(codeBlock); codeBlockProblems = ControlFlowUtil.getInitializedTwice(controlFlow); } catch (AnalysisCanceledException e) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/LocalVariableInitialization.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/LocalVariableInitialization.java index dddaa1dc4e51..b74387111cd5 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/LocalVariableInitialization.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting/LocalVariableInitialization.java @@ -339,7 +339,7 @@ public class a { final int k; if (false) { k = 0; - k = 1; + k = 1; System.out.println(k); } } @@ -415,4 +415,15 @@ class SwitchTest return ""; } } +} + +class NotDefinitelyUnassigned { + final int i; + + NotDefinitelyUnassigned() { + if (false) { + i = 0; + } + i = 1; + } } \ No newline at end of file