From 61dc110cc7da0d281ca211937bf1df6b8dd78e92 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Mon, 1 Sep 2014 19:01:47 +0400 Subject: [PATCH] Report 'break or continue outside a loop' for break/continue outside a loop body (e.g. in loop condition) #KT-5724 Fixed --- .../jet/lang/cfg/BreakableBlockInfo.java | 9 +- .../jet/lang/cfg/JetControlFlowBuilder.java | 9 +- .../cfg/JetControlFlowBuilderAdapter.java | 16 +- .../jet/lang/cfg/JetControlFlowProcessor.java | 40 ++-- .../org/jetbrains/jet/lang/cfg/LoopInfo.java | 30 ++- .../JetControlFlowInstructionsGenerator.java | 34 +-- .../lang/cfg/pseudocode/PseudocodeImpl.java | 7 +- .../varInitializationInIfInCycle.instructions | 25 +-- .../lexicalScopes/doWhileScope.instructions | 3 +- .../lexicalScopes/forScope.instructions | 15 +- .../lexicalScopes/whileScope.instructions | 3 +- .../cfg/bugs/jumpToOuterScope.instructions | 39 ++-- .../controlStructures/Finally.instructions | 200 +++++++++--------- .../FinallyTestCopy.instructions | 60 +++--- .../cfg/controlStructures/For.instructions | 19 +- .../OnlyWhileInFunctionBody.instructions | 6 +- .../continueInDoWhile.instructions | 15 +- .../continueInFor.instructions | 31 +-- .../continueInWhile.instructions | 19 +- .../breakOrContinueInLoopCondition.kt | 34 +++ .../checkers/JetDiagnosticsTestGenerated.java | 5 + .../loopWithBreakContinueReturnInCondition.kt | 11 - 22 files changed, 355 insertions(+), 275 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/controlFlowAnalysis/breakOrContinueInLoopCondition.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/BreakableBlockInfo.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/BreakableBlockInfo.java index 4a41b1e7762..09ccd5584ab 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/BreakableBlockInfo.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/BreakableBlockInfo.java @@ -19,19 +19,24 @@ package org.jetbrains.jet.lang.cfg; import com.google.common.collect.Sets; import org.jetbrains.jet.lang.psi.JetElement; +import java.util.Collections; import java.util.Set; public class BreakableBlockInfo extends BlockInfo { private final JetElement element; private final Label entryPoint; private final Label exitPoint; - protected final Set