From 47ea25dbc2ec1975b1b39006a73324caa4992a6d Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 29 Nov 2013 15:20:54 +0400 Subject: [PATCH] Rearranged declarations, added missing annotations in JetControlFlowBuilder --- .../jet/lang/cfg/JetControlFlowBuilder.java | 62 ++++++++++--------- .../cfg/JetControlFlowBuilderAdapter.java | 7 ++- .../JetControlFlowInstructionsGenerator.java | 10 ++- 3 files changed, 44 insertions(+), 35 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java index 3441f29d747..de9860299ba 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java @@ -21,14 +21,31 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; import org.jetbrains.jet.lang.psi.*; -import java.util.Collection; import java.util.List; public interface JetControlFlowBuilder { - void read(@NotNull JetElement element); - void readUnit(@NotNull JetExpression expression); + // Subroutines + void enterSubroutine(@NotNull JetElement subroutine); - // General label management + @NotNull + Pseudocode exitSubroutine(@NotNull JetElement subroutine); + + @NotNull + JetElement getCurrentSubroutine(); + @Nullable + JetElement getReturnSubroutine(); + + // Entry/exit points + @NotNull + Label getEntryPoint(@NotNull JetElement labelElement); + @NotNull + Label getExitPoint(@NotNull JetElement labelElement); + + // Declarations + void declare(@NotNull JetParameter parameter); + void declare(@NotNull JetVariableDeclaration property); + + // Labels @NotNull Label createUnboundLabel(); @NotNull @@ -40,13 +57,14 @@ public interface JetControlFlowBuilder { void jump(@NotNull Label label); void jumpOnFalse(@NotNull Label label); void jumpOnTrue(@NotNull Label label); - void nondeterministicJump(Label label); // Maybe, jump to label - void nondeterministicJump(List