From fee824bd78a2c0572fef8885328134026963256a Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 4 Apr 2011 21:11:15 +0400 Subject: [PATCH] Tests for basic control flow structures --- .../jet/lang/cfg/JetControlFlowBuilder.java | 2 + .../cfg/JetControlFlowBuilderAdapter.java | 5 + .../lang/cfg/JetControlFlowGraphBuilder.java | 348 ------------------ .../jet/lang/cfg/JetControlFlowProcessor.java | 63 +++- .../cfg/pseudocode/InstructionVisitor.java | 4 + .../JetControlFlowInstructionsGenerator.java | 5 + .../jet/lang/cfg/pseudocode/Pseudocode.java | 15 - .../cfg/pseudocode/WriteValueInstruction.java | 32 ++ .../lang/resolve/ClassDescriptorResolver.java | 15 +- .../jet/lang/resolve/TopDownAnalyzer.java | 50 ++- .../lang/types/FunctionDescriptorImpl.java | 7 +- idea/testData/cfg/Assignments.instructions | 38 ++ idea/testData/cfg/Assignments.jet | 9 + idea/testData/cfg/Basic.instructions | 91 +++++ idea/testData/cfg/Basic.jet | 24 +- idea/testData/cfg/LazyBooleans.instructions | 68 ++++ idea/testData/cfg/LazyBooleans.jet | 17 + idea/testData/cfg/Nonlocals.instructions | 88 +++++ idea/testData/cfg/Nonlocals.jet | 17 + .../jetbrains/jet/cfg/JetControlFlowTest.java | 103 +++--- 20 files changed, 570 insertions(+), 431 deletions(-) delete mode 100644 idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowGraphBuilder.java create mode 100644 idea/src/org/jetbrains/jet/lang/cfg/pseudocode/WriteValueInstruction.java create mode 100644 idea/testData/cfg/Assignments.instructions create mode 100644 idea/testData/cfg/Assignments.jet create mode 100644 idea/testData/cfg/LazyBooleans.instructions create mode 100644 idea/testData/cfg/LazyBooleans.jet create mode 100644 idea/testData/cfg/Nonlocals.instructions create mode 100644 idea/testData/cfg/Nonlocals.jet diff --git a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java index 17a4ccd154d..eebc570e058 100644 --- a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java +++ b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilder.java @@ -49,6 +49,8 @@ public interface JetControlFlowBuilder { void returnValue(@NotNull JetElement subroutine); void returnNoValue(@NotNull JetElement subroutine); + void writeNode(@NotNull JetElement assignment, @NotNull JetElement lValue); + // Other void unsupported(JetElement element); } diff --git a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java index d6c163d71f8..41e3ece4a20 100644 --- a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java +++ b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowBuilderAdapter.java @@ -118,4 +118,9 @@ public class JetControlFlowBuilderAdapter implements JetControlFlowBuilder { public void unsupported(JetElement element) { builder.unsupported(element); } + + @Override + public void writeNode(@NotNull JetElement assignment, @NotNull JetElement lValue) { + builder.writeNode(assignment, lValue); + } } diff --git a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowGraphBuilder.java b/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowGraphBuilder.java deleted file mode 100644 index 57dd42e1fbc..00000000000 --- a/idea/src/org/jetbrains/jet/lang/cfg/JetControlFlowGraphBuilder.java +++ /dev/null @@ -1,348 +0,0 @@ -package org.jetbrains.jet.lang.cfg; - -/** - * @author abreslav - */ -//public class JetControlFlowGraphBuilder extends AbstractControlFlowBuilder { -// -// private final List nodes = new ArrayList(); -// -// private final List edges = new ArrayList(); -// private final Map labelsToNodes = new HashMap(); -// // toLabel -> edge -// private final Map> pendingEdges = new HashMap>(); -// -// private List