From c7e4f1d02eceab09c492773f0af67eed26e6fe8f Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 3 Jun 2014 14:26:23 +0400 Subject: [PATCH] Pseudocode: Divide instruction classes into packages --- .../lang/cfg/JetFlowInformationProvider.java | 12 +++++++++++- .../jet/lang/cfg/PseudocodeTraverser.kt | 4 ++++ .../lang/cfg/PseudocodeVariableDataCollector.kt | 10 +++------- .../jet/lang/cfg/PseudocodeVariablesData.java | 9 ++++++++- .../jet/lang/cfg/TailRecursionDetector.java | 9 ++++++++- .../JetControlFlowInstructionsGenerator.java | 5 +++++ .../jet/lang/cfg/pseudocode/PseudoValue.kt | 4 +--- .../jet/lang/cfg/pseudocode/PseudoValueImpl.kt | 1 + .../jet/lang/cfg/pseudocode/Pseudocode.java | 6 +++++- .../jet/lang/cfg/pseudocode/PseudocodeImpl.java | 8 ++++++++ .../jet/lang/cfg/pseudocode/PseudocodeUtil.java | 4 ++++ .../{ => instructions}/Instruction.kt | 12 ++++++------ .../{ => instructions}/InstructionImpl.kt | 4 +++- .../{ => instructions}/InstructionVisitor.kt | 7 ++++++- .../InstructionVisitorWithResult.kt | 7 ++++++- .../{ => instructions}/InstructionWithNext.kt | 3 +-- .../{ => instructions}/JetElementInstruction.kt | 2 +- .../JetElementInstructionImpl.kt | 2 +- .../{ => instructions}/LexicalScope.kt | 2 +- .../eval}/InstructionWithReceiver.kt | 5 ++++- .../eval}/LoadUnitValueInstruction.kt | 7 ++++++- .../eval}/ReadValueInstruction.kt | 10 ++++++++-- .../eval}/WriteValueInstruction.kt | 11 ++++++++--- .../eval}/operationInstructions.kt | 9 +++++++-- .../jumps}/AbstractJumpInstruction.kt | 13 +++++++++---- .../jumps}/ConditionalJumpInstruction.kt | 13 +++++++++---- .../{ => instructions/jumps}/JumpInstruction.kt | 6 ++++-- .../jumps}/NondeterministicJumpInstruction.kt | 17 +++++++++++------ .../jumps}/ReturnNoValueInstruction.kt | 9 ++++++--- .../jumps}/ReturnValueInstruction.kt | 8 ++++++-- .../jumps}/ThrowExceptionInstruction.kt | 10 +++++++--- .../jumps}/UnconditionalJumpInstruction.kt | 7 ++++--- .../special}/CompilationErrorInstruction.kt | 6 +++++- .../LocalFunctionDeclarationInstruction.kt | 14 ++++++++++---- .../special}/MarkInstruction.kt | 9 +++++---- .../special}/SubroutineEnterInstruction.kt | 9 +++++++-- .../special}/SubroutineExitInstruction.kt | 9 +++++++-- .../special}/SubroutineSinkInstruction.kt | 9 +++++++-- .../special}/UnsupportedElementInstruction.kt | 9 +++++++-- .../special}/VariableDeclarationInstruction.kt | 11 ++++++++--- .../jet/cfg/AbstractControlFlowTest.java | 4 ++-- .../jetbrains/jet/cfg/AbstractDataFlowTest.java | 4 ++-- .../jet/cfg/AbstractPseudocodeTest.java | 7 ++++++- .../jet/cfg/CFGraphToDotFilePrinter.java | 8 +++++++- .../extractFunction/extractFunctionUtils.kt | 12 ++++++++++++ 45 files changed, 257 insertions(+), 90 deletions(-) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/Instruction.kt (79%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/InstructionImpl.kt (93%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/InstructionVisitor.kt (92%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/InstructionVisitorWithResult.kt (92%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/InstructionWithNext.kt (93%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/JetElementInstruction.kt (92%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/JetElementInstructionImpl.kt (94%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions}/LexicalScope.kt (95%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/eval}/InstructionWithReceiver.kt (78%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/eval}/LoadUnitValueInstruction.kt (73%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/eval}/ReadValueInstruction.kt (78%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/eval}/WriteValueInstruction.kt (77%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/eval}/operationInstructions.kt (90%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/AbstractJumpInstruction.kt (74%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/ConditionalJumpInstruction.kt (84%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/JumpInstruction.kt (77%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/NondeterministicJumpInstruction.kt (83%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/ReturnNoValueInstruction.kt (81%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/ReturnValueInstruction.kt (81%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/ThrowExceptionInstruction.kt (82%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/jumps}/UnconditionalJumpInstruction.kt (91%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/CompilationErrorInstruction.kt (76%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/LocalFunctionDeclarationInstruction.kt (76%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/MarkInstruction.kt (75%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/SubroutineEnterInstruction.kt (72%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/SubroutineExitInstruction.kt (78%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/SubroutineSinkInstruction.kt (75%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/UnsupportedElementInstruction.kt (73%) rename compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/{ => instructions/special}/VariableDeclarationInstruction.kt (78%) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java index 333dc8eb4b2..37d275a1e71 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java @@ -29,7 +29,17 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableInitState; import org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableUseState; -import org.jetbrains.jet.lang.cfg.pseudocode.*; +import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; +import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeUtil; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.MarkInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction; import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.Edges; import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.PseudocodeTraverserPackage; import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeTraverser.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeTraverser.kt index 14ad372507e..892aea97202 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeTraverser.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeTraverser.kt @@ -19,6 +19,10 @@ package org.jetbrains.jet.lang.cfg.pseudocodeTraverser import org.jetbrains.jet.lang.cfg.pseudocode.* import java.util.* import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder.FORWARD +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineEnterInstruction fun Pseudocode.traverse( traversalOrder: TraversalOrder, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt index cd111645a8f..5846edffed5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt @@ -16,20 +16,16 @@ package org.jetbrains.jet.lang.cfg -import org.jetbrains.jet.lang.cfg.pseudocode.Instruction -import org.jetbrains.jet.lang.cfg.pseudocode.LocalFunctionDeclarationInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode import org.jetbrains.jet.lang.descriptors.VariableDescriptor import org.jetbrains.jet.lang.resolve.BindingContext import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.* -import org.jetbrains.jet.lang.cfg.pseudocode.LexicalScope -import org.jetbrains.jet.lang.cfg.pseudocode.VariableDeclarationInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction import org.jetbrains.jet.utils.addToStdlib.* -import kotlin.properties.Delegates - import java.util.* -import org.jetbrains.jet.lang.psi.JetDeclaration public class PseudocodeVariableDataCollector( private val bindingContext: BindingContext, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java index 9b6d8ad45c9..035220e08d2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java @@ -22,9 +22,16 @@ import kotlin.Function1; import kotlin.Unit; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; +import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeUtil; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.ReadValueInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.WriteValueInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction; import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.Edges; import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.PseudocodeTraverserPackage; -import org.jetbrains.jet.lang.cfg.pseudocode.*; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.psi.JetDeclaration; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/TailRecursionDetector.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/TailRecursionDetector.java index d7f9a71ab8b..cb465a98b18 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/TailRecursionDetector.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/TailRecursionDetector.java @@ -18,7 +18,14 @@ package org.jetbrains.jet.lang.cfg; import kotlin.Function1; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.cfg.pseudocode.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MagicInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.AbstractJumpInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.ThrowExceptionInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.MarkInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction; import org.jetbrains.jet.lang.psi.JetElement; public class TailRecursionDetector extends InstructionVisitorWithResult implements Function1 { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java index b2cdba1147d..377e847396d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetControlFlowInstructionsGenerator.java @@ -20,6 +20,11 @@ import com.intellij.util.containers.Stack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.cfg.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.*; import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.psi.*; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValue.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValue.kt index 95033c50201..83bfa53d6c8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValue.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValue.kt @@ -16,10 +16,8 @@ package org.jetbrains.jet.lang.cfg.pseudocode -import java.util.Collections -import org.jetbrains.jet.lang.psi.JetExpression -import kotlin.properties.Delegates import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction public trait PseudoValue { public val debugName: String diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValueImpl.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValueImpl.kt index 5bdef65fbfe..c902c58456d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValueImpl.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudoValueImpl.kt @@ -17,6 +17,7 @@ package org.jetbrains.jet.lang.cfg.pseudocode import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction class PseudoValueImpl( public override val debugName: String, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java index 8f63b5112d5..e86b008fd7d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java @@ -18,8 +18,12 @@ package org.jetbrains.jet.lang.cfg.pseudocode; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineEnterInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction; import org.jetbrains.jet.lang.psi.JetElement; -import org.jetbrains.jet.lang.psi.JetExpression; import java.util.List; import java.util.Set; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java index 9b3bd171b58..650d9123af3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java @@ -21,6 +21,14 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.cfg.Label; import org.jetbrains.jet.lang.cfg.LoopInfo; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.AbstractJumpInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.ConditionalJumpInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.NondeterministicJumpInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineEnterInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction; import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.PseudocodeTraverserPackage; import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetExpression; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeUtil.java index cea24a6f0c6..8ad89af03b5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeUtil.java @@ -19,6 +19,10 @@ package org.jetbrains.jet.lang.cfg.pseudocode; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.cfg.JetControlFlowProcessor; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.ReadValueInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.WriteValueInstruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.psi.JetDeclaration; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Instruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/Instruction.kt similarity index 79% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Instruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/Instruction.kt index a063fc7c66c..e1b0a13c7da 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Instruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/Instruction.kt @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions -import kotlin.jvm.KotlinSignature -import org.jetbrains.annotations.Nullable -import org.jetbrains.annotations.ReadOnly +import org.jetbrains.jet.lang.cfg.pseudocode +import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue public trait Instruction { public var owner: Pseudocode @@ -29,10 +29,10 @@ public trait Instruction { public val lexicalScope: LexicalScope public val inputValues: List - public val outputValue: PseudoValue? + public val outputValue: pseudocode.PseudoValue? public fun getCopies(): Collection public fun accept(visitor: InstructionVisitor) public fun accept(visitor: InstructionVisitorWithResult): R -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionImpl.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionImpl.kt similarity index 93% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionImpl.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionImpl.kt index 522a7e08d67..05a1fd2f873 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionImpl.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionImpl.kt @@ -14,12 +14,14 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions import java.util.Collections import java.util.LinkedHashSet import java.util.HashSet import com.google.common.collect.Sets +import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue public abstract class InstructionImpl(public override val lexicalScope: LexicalScope): Instruction { private var _owner: Pseudocode? = null diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionVisitor.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionVisitor.kt similarity index 92% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionVisitor.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionVisitor.kt index 97be10a594a..7089b660f5e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionVisitor.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionVisitor.kt @@ -14,7 +14,12 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions + +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.* public open class InstructionVisitor() { public open fun visitInstructionWithReceiver(instruction: InstructionWithReceiver) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionVisitorWithResult.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionVisitorWithResult.kt similarity index 92% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionVisitorWithResult.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionVisitorWithResult.kt index f2f4d298b8c..6170cbf4a56 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionVisitorWithResult.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionVisitorWithResult.kt @@ -14,7 +14,12 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions + +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.* public abstract class InstructionVisitorWithResult() { public abstract fun visitInstruction(instruction: Instruction): R diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionWithNext.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionWithNext.kt similarity index 93% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionWithNext.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionWithNext.kt index dcf1757d50f..2ac3a4b4025 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionWithNext.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/InstructionWithNext.kt @@ -14,10 +14,9 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions import org.jetbrains.jet.lang.psi.JetElement -import java.util.Collections import com.intellij.util.containers.ContainerUtil public abstract class InstructionWithNext( diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetElementInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/JetElementInstruction.kt similarity index 92% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetElementInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/JetElementInstruction.kt index 8457a90b189..035ffd12b9a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetElementInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/JetElementInstruction.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions import org.jetbrains.jet.lang.psi.JetElement diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetElementInstructionImpl.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/JetElementInstructionImpl.kt similarity index 94% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetElementInstructionImpl.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/JetElementInstructionImpl.kt index 0be12a3ef17..c6867191893 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JetElementInstructionImpl.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/JetElementInstructionImpl.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions import com.intellij.psi.PsiElement import org.jetbrains.jet.lang.psi.JetElement diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LexicalScope.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/LexicalScope.kt similarity index 95% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LexicalScope.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/LexicalScope.kt index 8bedda02d2c..772610833c4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LexicalScope.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/LexicalScope.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetDeclaration diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionWithReceiver.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/InstructionWithReceiver.kt similarity index 78% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionWithReceiver.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/InstructionWithReceiver.kt index f79b40e2437..be5038b5732 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/InstructionWithReceiver.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/InstructionWithReceiver.kt @@ -14,9 +14,12 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import com.intellij.util.containers.ContainerUtil public abstract class InstructionWithReceiver( diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LoadUnitValueInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/LoadUnitValueInstruction.kt similarity index 73% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LoadUnitValueInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/LoadUnitValueInstruction.kt index 07ae36c789a..ee47e2a72d4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LoadUnitValueInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/LoadUnitValueInstruction.kt @@ -14,9 +14,14 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval import org.jetbrains.jet.lang.psi.JetExpression +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public class LoadUnitValueInstruction( expression: JetExpression, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReadValueInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/ReadValueInstruction.kt similarity index 78% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReadValueInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/ReadValueInstruction.kt index 0ffd103bba1..03aad9b692b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReadValueInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/ReadValueInstruction.kt @@ -14,10 +14,16 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval -import org.jetbrains.annotations.Nullable import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValueFactory +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.InstructionWithReceiver +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl public class ReadValueInstruction private ( element: JetElement, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/WriteValueInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/WriteValueInstruction.kt similarity index 77% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/WriteValueInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/WriteValueInstruction.kt index e302b4fb411..c8e7e266db9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/WriteValueInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/WriteValueInstruction.kt @@ -14,13 +14,18 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval -import org.jetbrains.annotations.Nullable import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetNamedDeclaration -import java.util.Arrays import java.util.Collections +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.InstructionWithReceiver +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import java.util.Arrays +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl public class WriteValueInstruction( assignment: JetElement, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/operationInstructions.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/operationInstructions.kt similarity index 90% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/operationInstructions.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/operationInstructions.kt index 8ce37242dc3..cb82b3942c2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/operationInstructions.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/eval/operationInstructions.kt @@ -14,11 +14,16 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall -import kotlin.properties.Delegates +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValueFactory +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public abstract class OperationInstruction protected( element: JetElement, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/AbstractJumpInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/AbstractJumpInstruction.kt similarity index 74% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/AbstractJumpInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/AbstractJumpInstruction.kt index 55add4e3ad7..6c0fb0ceb47 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/AbstractJumpInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/AbstractJumpInstruction.kt @@ -14,11 +14,15 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.Label import java.util.Collections +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstructionImpl +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction public abstract class AbstractJumpInstruction( element: JetElement, @@ -40,5 +44,6 @@ public abstract class AbstractJumpInstruction( return createCopy(targetLabel, lexicalScope) } - override val nextInstructions: Collection get() = Collections.singleton(resolvedTarget) -} + override val nextInstructions: Collection + get() = Collections.singleton(resolvedTarget) +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ConditionalJumpInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ConditionalJumpInstruction.kt similarity index 84% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ConditionalJumpInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ConditionalJumpInstruction.kt index a1db150a334..d0e215ef59e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ConditionalJumpInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ConditionalJumpInstruction.kt @@ -14,12 +14,17 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -import com.intellij.util.containers.ContainerUtil -import org.jetbrains.jet.lang.cfg.Label +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.Label import java.util.Arrays +import com.intellij.util.containers.ContainerUtil +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor public class ConditionalJumpInstruction( element: JetElement, @@ -64,4 +69,4 @@ public class ConditionalJumpInstruction( override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction = ConditionalJumpInstruction(element, onTrue, lexicalScope, newLabel, conditionValue) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JumpInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/JumpInstruction.kt similarity index 77% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JumpInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/JumpInstruction.kt index 55cb198d9ec..2ec8a31badf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/JumpInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/JumpInstruction.kt @@ -14,6 +14,8 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -public trait JumpInstruction : Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction + +public trait JumpInstruction : Instruction \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/NondeterministicJumpInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/NondeterministicJumpInstruction.kt similarity index 83% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/NondeterministicJumpInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/NondeterministicJumpInstruction.kt index e6d95794f4b..0166c5b463a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/NondeterministicJumpInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/NondeterministicJumpInstruction.kt @@ -14,15 +14,20 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -import com.google.common.collect.Lists -import com.google.common.collect.Maps -import org.jetbrains.annotations.Nullable -import org.jetbrains.jet.lang.cfg.Label +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.jet.lang.psi.JetElement -import java.util.* +import org.jetbrains.jet.lang.cfg.Label +import com.google.common.collect.Maps +import com.google.common.collect.Lists import com.intellij.util.containers.ContainerUtil +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstructionImpl +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl public class NondeterministicJumpInstruction( element: JetElement, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReturnNoValueInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ReturnNoValueInstruction.kt similarity index 81% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReturnNoValueInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ReturnNoValueInstruction.kt index 2ab4eda1ad4..41875e59f1e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReturnNoValueInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ReturnNoValueInstruction.kt @@ -14,10 +14,13 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.Label +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public class ReturnNoValueInstruction( element: JetElement, @@ -36,4 +39,4 @@ public class ReturnNoValueInstruction( override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction = ReturnNoValueInstruction(element, lexicalScope, newLabel) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReturnValueInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ReturnValueInstruction.kt similarity index 81% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReturnValueInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ReturnValueInstruction.kt index 1fc9eafcb4d..20aa3961a4a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ReturnValueInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ReturnValueInstruction.kt @@ -14,11 +14,15 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -import org.jetbrains.jet.lang.cfg.Label +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.jet.lang.psi.JetExpression +import org.jetbrains.jet.lang.cfg.Label import java.util.Collections +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public class ReturnValueInstruction( returnExpression: JetExpression, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ThrowExceptionInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ThrowExceptionInstruction.kt similarity index 82% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ThrowExceptionInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ThrowExceptionInstruction.kt index 11dc0171538..e462d20ab26 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/ThrowExceptionInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/ThrowExceptionInstruction.kt @@ -14,11 +14,15 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -import org.jetbrains.jet.lang.cfg.Label +import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.jet.lang.psi.JetThrowExpression +import org.jetbrains.jet.lang.cfg.Label import java.util.Collections +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public class ThrowExceptionInstruction( expression: JetThrowExpression, @@ -43,4 +47,4 @@ public class ThrowExceptionInstruction( override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction { return ThrowExceptionInstruction((element as JetThrowExpression), lexicalScope, newLabel, thrownValue) } -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/UnconditionalJumpInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/UnconditionalJumpInstruction.kt similarity index 91% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/UnconditionalJumpInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/UnconditionalJumpInstruction.kt index f7f7cdcd28e..55e0e0ee4c1 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/UnconditionalJumpInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/jumps/UnconditionalJumpInstruction.kt @@ -14,10 +14,11 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps -import org.jetbrains.jet.lang.cfg.Label +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.Label public class UnconditionalJumpInstruction( element: JetElement, @@ -36,4 +37,4 @@ public class UnconditionalJumpInstruction( override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction = UnconditionalJumpInstruction(element, newLabel, lexicalScope) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/CompilationErrorInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/CompilationErrorInstruction.kt similarity index 76% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/CompilationErrorInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/CompilationErrorInstruction.kt index 3571941bbcf..9ce457f5ae6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/CompilationErrorInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/CompilationErrorInstruction.kt @@ -14,9 +14,13 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public class CompilationErrorInstruction( element: JetElement, diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LocalFunctionDeclarationInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/LocalFunctionDeclarationInstruction.kt similarity index 76% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LocalFunctionDeclarationInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/LocalFunctionDeclarationInstruction.kt index df468cf6bda..177ad24e86b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/LocalFunctionDeclarationInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/LocalFunctionDeclarationInstruction.kt @@ -14,11 +14,17 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special -import com.google.common.collect.Lists import org.jetbrains.jet.lang.psi.JetElement -import java.util.ArrayList +import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode +import com.google.common.collect.Lists +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl public class LocalFunctionDeclarationInstruction( element: JetElement, @@ -52,4 +58,4 @@ public class LocalFunctionDeclarationInstruction( override fun createCopy(): InstructionImpl = LocalFunctionDeclarationInstruction(element, body, lexicalScope) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/MarkInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/MarkInstruction.kt similarity index 75% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/MarkInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/MarkInstruction.kt index e13e6086be8..3265c588f62 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/MarkInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/MarkInstruction.kt @@ -14,13 +14,14 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult -// This instruciton is used to let the dead code detector know the syntactic structure of unreachable code -// otherwise only individual parts of expression would be reported as unreachable -// e.g. for (i in foo) {} -- only i and foo would be marked unreachable public class MarkInstruction( element: JetElement, lexicalScope: LexicalScope diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineEnterInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineEnterInstruction.kt similarity index 72% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineEnterInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineEnterInstruction.kt index 2d1eb014f79..4dfc2cea46a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineEnterInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineEnterInstruction.kt @@ -14,9 +14,14 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl public class SubroutineEnterInstruction( public val subroutine: JetElement, @@ -34,4 +39,4 @@ public class SubroutineEnterInstruction( override fun createCopy(): InstructionImpl = SubroutineEnterInstruction(subroutine, lexicalScope) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineExitInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineExitInstruction.kt similarity index 78% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineExitInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineExitInstruction.kt index 369e948c00b..a5c05db4eb3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineExitInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineExitInstruction.kt @@ -14,10 +14,15 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special import org.jetbrains.jet.lang.psi.JetElement import java.util.Collections +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public class SubroutineExitInstruction( public val subroutine: JetElement, @@ -47,4 +52,4 @@ public class SubroutineExitInstruction( override fun createCopy(): InstructionImpl = SubroutineExitInstruction(subroutine, lexicalScope, isError) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineSinkInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineSinkInstruction.kt similarity index 75% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineSinkInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineSinkInstruction.kt index df04460df74..0e86713449f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/SubroutineSinkInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/SubroutineSinkInstruction.kt @@ -14,10 +14,15 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special import org.jetbrains.jet.lang.psi.JetElement import java.util.Collections +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult public class SubroutineSinkInstruction( public val subroutine: JetElement, @@ -38,4 +43,4 @@ public class SubroutineSinkInstruction( override fun createCopy(): InstructionImpl = SubroutineSinkInstruction(subroutine, lexicalScope, debugLabel) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/UnsupportedElementInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/UnsupportedElementInstruction.kt similarity index 73% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/UnsupportedElementInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/UnsupportedElementInstruction.kt index 3b9dd0094d0..9997c0be26a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/UnsupportedElementInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/UnsupportedElementInstruction.kt @@ -14,9 +14,14 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special import org.jetbrains.jet.lang.psi.JetElement +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl public class UnsupportedElementInstruction( element: JetElement, @@ -35,4 +40,4 @@ public class UnsupportedElementInstruction( override fun createCopy(): InstructionImpl = UnsupportedElementInstruction(element, lexicalScope) -} +} \ No newline at end of file diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/VariableDeclarationInstruction.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/VariableDeclarationInstruction.kt similarity index 78% rename from compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/VariableDeclarationInstruction.kt rename to compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/VariableDeclarationInstruction.kt index 0f8667b13ac..c378d628a80 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/VariableDeclarationInstruction.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/instructions/special/VariableDeclarationInstruction.kt @@ -14,11 +14,16 @@ * limitations under the License. */ -package org.jetbrains.jet.lang.cfg.pseudocode +package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special import org.jetbrains.jet.lang.psi.JetDeclaration -import org.jetbrains.jet.lang.psi.JetParameter import org.jetbrains.jet.lang.psi.JetVariableDeclaration +import org.jetbrains.jet.lang.psi.JetParameter +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl public class VariableDeclarationInstruction( element: JetDeclaration, @@ -43,4 +48,4 @@ public class VariableDeclarationInstruction( override fun createCopy(): InstructionImpl = VariableDeclarationInstruction(variableDeclarationElement, lexicalScope) -} +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/cfg/AbstractControlFlowTest.java b/compiler/tests/org/jetbrains/jet/cfg/AbstractControlFlowTest.java index f5321f89295..64a552fb074 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/AbstractControlFlowTest.java +++ b/compiler/tests/org/jetbrains/jet/cfg/AbstractControlFlowTest.java @@ -19,8 +19,8 @@ package org.jetbrains.jet.cfg; import kotlin.Function3; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.cfg.pseudocode.Instruction; -import org.jetbrains.jet.lang.cfg.pseudocode.InstructionImpl; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl; import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; import org.jetbrains.jet.lang.resolve.BindingContext; diff --git a/compiler/tests/org/jetbrains/jet/cfg/AbstractDataFlowTest.java b/compiler/tests/org/jetbrains/jet/cfg/AbstractDataFlowTest.java index d414d7b6a30..64b095a31ed 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/AbstractDataFlowTest.java +++ b/compiler/tests/org/jetbrains/jet/cfg/AbstractDataFlowTest.java @@ -21,8 +21,9 @@ import com.intellij.openapi.util.text.StringUtil; import kotlin.Function3; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.cfg.PseudocodeVariablesData; -import org.jetbrains.jet.lang.cfg.pseudocode.Instruction; import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.Edges; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.resolve.BindingContext; @@ -30,7 +31,6 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.Edges; import static org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableInitState; import static org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableUseState; diff --git a/compiler/tests/org/jetbrains/jet/cfg/AbstractPseudocodeTest.java b/compiler/tests/org/jetbrains/jet/cfg/AbstractPseudocodeTest.java index 8b5d8cbdb7b..1d8315db966 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/AbstractPseudocodeTest.java +++ b/compiler/tests/org/jetbrains/jet/cfg/AbstractPseudocodeTest.java @@ -25,7 +25,12 @@ import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment; -import org.jetbrains.jet.lang.cfg.pseudocode.*; +import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; +import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; +import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeUtil; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment; diff --git a/compiler/tests/org/jetbrains/jet/cfg/CFGraphToDotFilePrinter.java b/compiler/tests/org/jetbrains/jet/cfg/CFGraphToDotFilePrinter.java index 2b04195b309..4dc51c2b970 100644 --- a/compiler/tests/org/jetbrains/jet/cfg/CFGraphToDotFilePrinter.java +++ b/compiler/tests/org/jetbrains/jet/cfg/CFGraphToDotFilePrinter.java @@ -19,7 +19,13 @@ package org.jetbrains.jet.cfg; import com.google.common.collect.Sets; import com.intellij.openapi.util.io.FileUtil; import org.jetbrains.jet.JetTestUtils; -import org.jetbrains.jet.lang.cfg.pseudocode.*; +import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; +import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.*; +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.*; import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetNamedDeclaration; diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt b/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt index 01ea5c2ecee..eac0647d964 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/extractFunction/extractFunctionUtils.kt @@ -56,6 +56,18 @@ import org.jetbrains.jet.lang.diagnostics.Errors import org.jetbrains.jet.lang.psi.psiUtil.replaced import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.Status import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.ErrorMessage +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.WriteValueInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.CallInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.OperationInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.ReadValueInstruction +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.* +import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* +import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.getNextInstructions private val DEFAULT_FUNCTION_NAME = "myFun" private val DEFAULT_RETURN_TYPE = KotlinBuiltIns.getInstance().getUnitType()