Rename jet -> kotlin in frontend: cfg

org.jetbrains.jet.lang.cfg, org.jetbrains.jet.cfg -> org.jetbrains.kotlin.cfg
This commit is contained in:
Alexander Udalov
2015-01-09 18:52:15 +03:00
parent 2c414d880c
commit 378d04e301
66 changed files with 361 additions and 366 deletions
@@ -26,7 +26,7 @@ import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression; import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.psi.ValueArgument; import org.jetbrains.jet.lang.psi.ValueArgument;
import org.jetbrains.jet.lang.cfg.TailRecursionKind; import org.jetbrains.kotlin.cfg.TailRecursionKind;
import org.jetbrains.jet.lang.resolve.calls.model.*; import org.jetbrains.jet.lang.resolve.calls.model.*;
import org.jetbrains.org.objectweb.asm.Type; import org.jetbrains.org.objectweb.asm.Type;
import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter; import org.jetbrains.org.objectweb.asm.commons.InstructionAdapter;
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.codegen.SamType;
import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.codegen.when.SwitchCodegenUtil; import org.jetbrains.kotlin.codegen.when.SwitchCodegenUtil;
import org.jetbrains.kotlin.codegen.when.WhenByEnumsMapping; import org.jetbrains.kotlin.codegen.when.WhenByEnumsMapping;
import org.jetbrains.jet.lang.cfg.WhenChecker; import org.jetbrains.kotlin.cfg.WhenChecker;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorImpl; import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorImpl;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
@@ -26,7 +26,7 @@ import org.jetbrains.annotations.TestOnly;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.cfg.TailRecursionKind; import org.jetbrains.kotlin.cfg.TailRecursionKind;
import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystemCompleter; import org.jetbrains.jet.lang.resolve.calls.inference.ConstraintSystemCompleter;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.smartcasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.calls.smartcasts.DataFlowInfo;
@@ -18,7 +18,7 @@ package org.jetbrains.jet.lang.resolve;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.JetFlowInformationProvider; import org.jetbrains.kotlin.cfg.JetFlowInformationProvider;
import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor; import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
@@ -14,6 +14,6 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
public abstract class BlockInfo {} public abstract class BlockInfo {}
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetElement;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
public interface GenerationTrigger { public interface GenerationTrigger {
void generate(); void generate();
@@ -14,14 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue; import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue;
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode;
import org.jetbrains.jet.lang.cfg.pseudocode.TypePredicate; import org.jetbrains.kotlin.cfg.pseudocode.TypePredicate;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
@@ -14,14 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue; import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue;
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode;
import org.jetbrains.jet.lang.cfg.pseudocode.TypePredicate; import org.jetbrains.kotlin.cfg.pseudocode.TypePredicate;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
@@ -27,10 +27,10 @@ import kotlin.Function1;
import kotlin.KotlinPackage; import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.pseudocode.*; import org.jetbrains.kotlin.cfg.pseudocode.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.AccessTarget; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.AccessTarget;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.InstructionWithValue; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.InstructionWithValue;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MagicKind; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MagicKind;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.impl.AnonymousFunctionDescriptor; import org.jetbrains.jet.lang.descriptors.impl.AnonymousFunctionDescriptor;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
@@ -54,7 +54,7 @@ import org.jetbrains.jet.lexer.JetTokens;
import java.util.*; import java.util.*;
import static org.jetbrains.jet.lang.cfg.JetControlFlowBuilder.PredefinedOperation.*; import static org.jetbrains.kotlin.cfg.JetControlFlowBuilder.PredefinedOperation.*;
import static org.jetbrains.jet.lang.diagnostics.Errors.*; import static org.jetbrains.jet.lang.diagnostics.Errors.*;
import static org.jetbrains.jet.lang.resolve.calls.callUtil.CallUtilPackage.getResolvedCall; import static org.jetbrains.jet.lang.resolve.calls.callUtil.CallUtilPackage.getResolvedCall;
import static org.jetbrains.jet.lexer.JetTokens.*; import static org.jetbrains.jet.lexer.JetTokens.*;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@@ -27,24 +27,24 @@ import kotlin.Function3;
import kotlin.Unit; import kotlin.Unit;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableInitState; import org.jetbrains.kotlin.cfg.PseudocodeVariablesData.VariableInitState;
import org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableUseState; import org.jetbrains.kotlin.cfg.PseudocodeVariablesData.VariableUseState;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue; import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue;
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodePackage; import org.jetbrains.kotlin.cfg.pseudocode.PseudocodePackage;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeUtil; import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeUtil;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor; import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.JetElementInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.MarkInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.MarkInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineExitInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.VariableDeclarationInstruction;
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.Edges; import org.jetbrains.kotlin.cfg.pseudocodeTraverser.Edges;
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.PseudocodeTraverserPackage; import org.jetbrains.kotlin.cfg.pseudocodeTraverser.PseudocodeTraverserPackage;
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder; import org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory; import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory;
@@ -65,12 +65,12 @@ import org.jetbrains.jet.plugin.MainFunctionDetector;
import java.util.*; import java.util.*;
import static org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableUseState.*; import static org.jetbrains.kotlin.cfg.PseudocodeVariablesData.VariableUseState.*;
import static org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder.FORWARD; import static org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder.FORWARD;
import static org.jetbrains.jet.lang.diagnostics.Errors.*; import static org.jetbrains.jet.lang.diagnostics.Errors.*;
import static org.jetbrains.jet.lang.resolve.BindingContext.CAPTURED_IN_CLOSURE; import static org.jetbrains.jet.lang.resolve.BindingContext.CAPTURED_IN_CLOSURE;
import static org.jetbrains.jet.lang.resolve.BindingContext.TAIL_RECURSION_CALL; import static org.jetbrains.jet.lang.resolve.BindingContext.TAIL_RECURSION_CALL;
import static org.jetbrains.jet.lang.cfg.TailRecursionKind.*; import static org.jetbrains.kotlin.cfg.TailRecursionKind.*;
import static org.jetbrains.jet.lang.resolve.calls.callUtil.CallUtilPackage.getResolvedCall; import static org.jetbrains.jet.lang.resolve.calls.callUtil.CallUtilPackage.getResolvedCall;
import static org.jetbrains.jet.lang.types.TypeUtils.NO_EXPECTED_TYPE; import static org.jetbrains.jet.lang.types.TypeUtils.NO_EXPECTED_TYPE;
import static org.jetbrains.jet.lang.types.TypeUtils.noExpectedType; import static org.jetbrains.jet.lang.types.TypeUtils.noExpectedType;
@@ -147,14 +147,14 @@ public class JetFlowInformationProvider {
for (Instruction previousInstruction : exitInstruction.getPreviousInstructions()) { for (Instruction previousInstruction : exitInstruction.getPreviousInstructions()) {
previousInstruction.accept(new InstructionVisitor() { previousInstruction.accept(new InstructionVisitor() {
@Override @Override
public void visitReturnValue(ReturnValueInstruction instruction) { public void visitReturnValue(@NotNull ReturnValueInstruction instruction) {
if (instructions.contains(instruction)) { //exclude non-local return expressions if (instructions.contains(instruction)) { //exclude non-local return expressions
returnedExpressions.add(instruction.getElement()); returnedExpressions.add(instruction.getElement());
} }
} }
@Override @Override
public void visitReturnNoValue(ReturnNoValueInstruction instruction) { public void visitReturnNoValue(@NotNull ReturnNoValueInstruction instruction) {
if (instructions.contains(instruction)) { if (instructions.contains(instruction)) {
returnedExpressions.add(instruction.getElement()); returnedExpressions.add(instruction.getElement());
} }
@@ -162,12 +162,12 @@ public class JetFlowInformationProvider {
@Override @Override
public void visitJump(AbstractJumpInstruction instruction) { public void visitJump(@NotNull AbstractJumpInstruction instruction) {
// Nothing // Nothing
} }
@Override @Override
public void visitUnconditionalJump(UnconditionalJumpInstruction instruction) { public void visitUnconditionalJump(@NotNull UnconditionalJumpInstruction instruction) {
redirectToPrevInstructions(instruction); redirectToPrevInstructions(instruction);
} }
@@ -178,17 +178,17 @@ public class JetFlowInformationProvider {
} }
@Override @Override
public void visitNondeterministicJump(NondeterministicJumpInstruction instruction) { public void visitNondeterministicJump(@NotNull NondeterministicJumpInstruction instruction) {
redirectToPrevInstructions(instruction); redirectToPrevInstructions(instruction);
} }
@Override @Override
public void visitMarkInstruction(MarkInstruction instruction) { public void visitMarkInstruction(@NotNull MarkInstruction instruction) {
redirectToPrevInstructions(instruction); redirectToPrevInstructions(instruction);
} }
@Override @Override
public void visitInstruction(Instruction instruction) { public void visitInstruction(@NotNull Instruction instruction) {
if (instruction instanceof JetElementInstruction) { if (instruction instanceof JetElementInstruction) {
JetElementInstruction elementInstruction = (JetElementInstruction) instruction; JetElementInstruction elementInstruction = (JetElementInstruction) instruction;
returnedExpressions.add(elementInstruction.getElement()); returnedExpressions.add(elementInstruction.getElement());
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import org.jetbrains.jet.lang.psi.JetLoopExpression; import org.jetbrains.jet.lang.psi.JetLoopExpression;
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocodeTraverser package org.jetbrains.kotlin.cfg.pseudocodeTraverser
import org.jetbrains.jet.lang.cfg.pseudocode.* import org.jetbrains.kotlin.cfg.pseudocode.*
import java.util.* import java.util.*
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder.FORWARD import org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder.FORWARD
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineSinkInstruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineEnterInstruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineEnterInstruction
public fun Pseudocode.traverse( public fun Pseudocode.traverse(
traversalOrder: TraversalOrder, traversalOrder: TraversalOrder,
@@ -14,16 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg package org.jetbrains.kotlin.cfg
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode
import org.jetbrains.jet.lang.descriptors.VariableDescriptor import org.jetbrains.jet.lang.descriptors.VariableDescriptor
import org.jetbrains.jet.lang.resolve.BindingContext import org.jetbrains.jet.lang.resolve.BindingContext
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.* import org.jetbrains.kotlin.cfg.pseudocodeTraverser.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.VariableDeclarationInstruction
import org.jetbrains.kotlin.utils.addToStdlib.*
import java.util.* import java.util.*
@@ -61,7 +60,7 @@ public class PseudocodeVariableDataCollector(
// Variables declared in an inner (deeper) scope can't be accessed from an outer scope. // Variables declared in an inner (deeper) scope can't be accessed from an outer scope.
// Thus they can be filtered out upon leaving the inner scope. // Thus they can be filtered out upon leaving the inner scope.
return data.filterKeys_tmp { variable -> return data.filterKeys { variable ->
val lexicalScope = lexicalScopeVariableInfo.declaredIn[variable] val lexicalScope = lexicalScopeVariableInfo.declaredIn[variable]
// '-1' for variables declared outside this pseudocode // '-1' for variables declared outside this pseudocode
val depth = lexicalScope?.depth ?: -1 val depth = lexicalScope?.depth ?: -1
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
@@ -22,16 +22,16 @@ import kotlin.Function1;
import kotlin.Unit; import kotlin.Unit;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeUtil; import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeUtil;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope; import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.ReadValueInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.ReadValueInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.WriteValueInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.WriteValueInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.VariableDeclarationInstruction;
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.Edges; import org.jetbrains.kotlin.cfg.pseudocodeTraverser.Edges;
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.PseudocodeTraverserPackage; import org.jetbrains.kotlin.cfg.pseudocodeTraverser.PseudocodeTraverserPackage;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetDeclaration;
@@ -43,8 +43,8 @@ import java.util.Collections;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import static org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder.BACKWARD; import static org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder.BACKWARD;
import static org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder.FORWARD; import static org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder.FORWARD;
public class PseudocodeVariablesData { public class PseudocodeVariablesData {
private final Pseudocode pseudocode; private final Pseudocode pseudocode;
@@ -14,19 +14,19 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import kotlin.Function1; import kotlin.Function1;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult; import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MagicInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MagicInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MergeInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MergeInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.AbstractJumpInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.AbstractJumpInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.ThrowExceptionInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.ThrowExceptionInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.MarkInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.MarkInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineExitInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineSinkInstruction;
import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetElement;
public class TailRecursionDetector extends InstructionVisitorWithResult<Boolean> implements Function1<Instruction, Boolean> { public class TailRecursionDetector extends InstructionVisitorWithResult<Boolean> implements Function1<Instruction, Boolean> {
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
public enum TailRecursionKind { public enum TailRecursionKind {
TAIL_CALL(true), TAIL_CALL(true),
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg package org.jetbrains.kotlin.cfg
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import com.intellij.openapi.util.TextRange import com.intellij.openapi.util.TextRange
@@ -86,7 +86,7 @@ class UnreachableCodeImpl(
collectSiblingsIfMeaningless(index, direction) collectSiblingsIfMeaningless(index, direction)
} }
} }
for ((index, element) in this.withIndices()) { for ((index, element) in this.withIndex()) {
if (reachableElements.contains(element)) { if (reachableElements.contains(element)) {
childrenToRemove.add(element) childrenToRemove.add(element)
collectSiblingsIfMeaningless(index, -1) collectSiblingsIfMeaningless(index, -1)
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg; package org.jetbrains.kotlin.cfg;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -14,17 +14,17 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode; package org.jetbrains.kotlin.cfg.pseudocode;
import com.intellij.util.containers.Stack; import com.intellij.util.containers.Stack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.*; import org.jetbrains.kotlin.cfg.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope; import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.*;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall;
@@ -14,10 +14,10 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode package org.jetbrains.kotlin.cfg.pseudocode
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.InstructionWithValue import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.InstructionWithValue
public trait PseudoValue { public trait PseudoValue {
public val debugName: String public val debugName: String
@@ -27,4 +27,4 @@ public trait PseudoValue {
public trait PseudoValueFactory { public trait PseudoValueFactory {
public fun newValue(element: JetElement?, instruction: InstructionWithValue?): PseudoValue public fun newValue(element: JetElement?, instruction: InstructionWithValue?): PseudoValue
} }
@@ -14,10 +14,10 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode package org.jetbrains.kotlin.cfg.pseudocode
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.InstructionWithValue import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.InstructionWithValue
class PseudoValueImpl( class PseudoValueImpl(
override val debugName: String, override val debugName: String,
@@ -33,4 +33,4 @@ open class PseudoValueFactoryImpl: PseudoValueFactory {
override fun newValue(element: JetElement?, instruction: InstructionWithValue?): PseudoValue { override fun newValue(element: JetElement?, instruction: InstructionWithValue?): PseudoValue {
return PseudoValueImpl((instruction?.let { "" } ?: "!") + "<v${lastIndex++}>", element, instruction) return PseudoValueImpl((instruction?.let { "" } ?: "!") + "<v${lastIndex++}>", element, instruction)
} }
} }
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode; package org.jetbrains.kotlin.cfg.pseudocode;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineEnterInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineEnterInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineExitInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineSinkInstruction;
import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetElement;
import java.util.List; import java.util.List;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode; package org.jetbrains.kotlin.cfg.pseudocode;
import com.google.common.collect.*; import com.google.common.collect.*;
import com.intellij.util.containers.BidirectionalMap; import com.intellij.util.containers.BidirectionalMap;
@@ -22,23 +22,23 @@ import kotlin.Function0;
import kotlin.KotlinPackage; import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.Label; import org.jetbrains.kotlin.cfg.Label;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MergeInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MergeInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.AbstractJumpInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.AbstractJumpInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.ConditionalJumpInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.ConditionalJumpInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.NondeterministicJumpInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.NondeterministicJumpInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineEnterInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineEnterInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineExitInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineExitInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.SubroutineSinkInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.SubroutineSinkInstruction;
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.PseudocodeTraverserPackage; import org.jetbrains.kotlin.cfg.pseudocodeTraverser.PseudocodeTraverserPackage;
import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetElement;
import java.util.*; import java.util.*;
import static org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder.BACKWARD; import static org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder.BACKWARD;
import static org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder.FORWARD; import static org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder.FORWARD;
public class PseudocodeImpl implements Pseudocode { public class PseudocodeImpl implements Pseudocode {
@@ -357,17 +357,17 @@ public class PseudocodeImpl implements Pseudocode {
private void processInstruction(Instruction instruction, final int currentPosition) { private void processInstruction(Instruction instruction, final int currentPosition) {
instruction.accept(new InstructionVisitor() { instruction.accept(new InstructionVisitor() {
@Override @Override
public void visitInstructionWithNext(InstructionWithNext instruction) { public void visitInstructionWithNext(@NotNull InstructionWithNext instruction) {
instruction.setNext(getNextPosition(currentPosition)); instruction.setNext(getNextPosition(currentPosition));
} }
@Override @Override
public void visitJump(AbstractJumpInstruction instruction) { public void visitJump(@NotNull AbstractJumpInstruction instruction) {
instruction.setResolvedTarget(getJumpTarget(instruction.getTargetLabel())); instruction.setResolvedTarget(getJumpTarget(instruction.getTargetLabel()));
} }
@Override @Override
public void visitNondeterministicJump(NondeterministicJumpInstruction instruction) { public void visitNondeterministicJump(@NotNull NondeterministicJumpInstruction instruction) {
instruction.setNext(getNextPosition(currentPosition)); instruction.setNext(getNextPosition(currentPosition));
List<Label> targetLabels = instruction.getTargetLabels(); List<Label> targetLabels = instruction.getTargetLabels();
for (Label targetLabel : targetLabels) { for (Label targetLabel : targetLabels) {
@@ -376,7 +376,7 @@ public class PseudocodeImpl implements Pseudocode {
} }
@Override @Override
public void visitConditionalJump(ConditionalJumpInstruction instruction) { public void visitConditionalJump(@NotNull ConditionalJumpInstruction instruction) {
Instruction nextInstruction = getNextPosition(currentPosition); Instruction nextInstruction = getNextPosition(currentPosition);
Instruction jumpTarget = getJumpTarget(instruction.getTargetLabel()); Instruction jumpTarget = getJumpTarget(instruction.getTargetLabel());
if (instruction.getOnTrue()) { if (instruction.getOnTrue()) {
@@ -391,7 +391,7 @@ public class PseudocodeImpl implements Pseudocode {
} }
@Override @Override
public void visitLocalFunctionDeclarationInstruction(LocalFunctionDeclarationInstruction instruction) { public void visitLocalFunctionDeclarationInstruction(@NotNull LocalFunctionDeclarationInstruction instruction) {
PseudocodeImpl body = (PseudocodeImpl) instruction.getBody(); PseudocodeImpl body = (PseudocodeImpl) instruction.getBody();
body.setParent(PseudocodeImpl.this); body.setParent(PseudocodeImpl.this);
body.postProcess(); body.postProcess();
@@ -399,17 +399,17 @@ public class PseudocodeImpl implements Pseudocode {
} }
@Override @Override
public void visitSubroutineExit(SubroutineExitInstruction instruction) { public void visitSubroutineExit(@NotNull SubroutineExitInstruction instruction) {
// Nothing // Nothing
} }
@Override @Override
public void visitSubroutineSink(SubroutineSinkInstruction instruction) { public void visitSubroutineSink(@NotNull SubroutineSinkInstruction instruction) {
// Nothing // Nothing
} }
@Override @Override
public void visitInstruction(Instruction instruction) { public void visitInstruction(@NotNull Instruction instruction) {
throw new UnsupportedOperationException(instruction.toString()); throw new UnsupportedOperationException(instruction.toString());
} }
}); });
@@ -494,7 +494,7 @@ public class PseudocodeImpl implements Pseudocode {
} }
} }
private Instruction copyInstruction(@NotNull Instruction instruction, @NotNull Map<Label, Label> originalToCopy) { private static Instruction copyInstruction(@NotNull Instruction instruction, @NotNull Map<Label, Label> originalToCopy) {
if (instruction instanceof AbstractJumpInstruction) { if (instruction instanceof AbstractJumpInstruction) {
Label originalTarget = ((AbstractJumpInstruction) instruction).getTargetLabel(); Label originalTarget = ((AbstractJumpInstruction) instruction).getTargetLabel();
if (originalToCopy.containsKey(originalTarget)) { if (originalToCopy.containsKey(originalTarget)) {
@@ -510,7 +510,7 @@ public class PseudocodeImpl implements Pseudocode {
} }
@NotNull @NotNull
private List<Label> copyLabels(Collection<Label> labels, Map<Label, Label> originalToCopy) { private static List<Label> copyLabels(Collection<Label> labels, Map<Label, Label> originalToCopy) {
List<Label> newLabels = Lists.newArrayList(); List<Label> newLabels = Lists.newArrayList();
for (Label label : labels) { for (Label label : labels) {
Label newLabel = originalToCopy.get(label); Label newLabel = originalToCopy.get(label);
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode; package org.jetbrains.kotlin.cfg.pseudocode;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.JetControlFlowProcessor; import org.jetbrains.kotlin.cfg.JetControlFlowProcessor;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.ReadValueInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.ReadValueInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.WriteValueInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.WriteValueInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.VariableDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.VariableDeclarationInstruction;
import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
import org.jetbrains.jet.lang.diagnostics.Diagnostic; import org.jetbrains.jet.lang.diagnostics.Diagnostic;
import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetDeclaration;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode package org.jetbrains.kotlin.cfg.pseudocode
import org.jetbrains.jet.lang.types.JetType import org.jetbrains.jet.lang.types.JetType
import org.jetbrains.jet.lang.types.checker.JetTypeChecker import org.jetbrains.jet.lang.types.checker.JetTypeChecker
@@ -14,11 +14,10 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import org.jetbrains.jet.lang.cfg.pseudocode import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue
public trait Instruction { public trait Instruction {
public var owner: Pseudocode public var owner: Pseudocode
@@ -36,4 +35,4 @@ public trait Instruction {
public fun accept(visitor: InstructionVisitor) public fun accept(visitor: InstructionVisitor)
public fun <R> accept(visitor: InstructionVisitorWithResult<R>): R public fun <R> accept(visitor: InstructionVisitorWithResult<R>): R
} }
@@ -14,14 +14,12 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import java.util.Collections import java.util.Collections
import java.util.LinkedHashSet import java.util.LinkedHashSet
import java.util.HashSet import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode
import com.google.common.collect.Sets import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue
public abstract class InstructionImpl(override val lexicalScope: LexicalScope): Instruction { public abstract class InstructionImpl(override val lexicalScope: LexicalScope): Instruction {
private var _owner: Pseudocode? = null private var _owner: Pseudocode? = null
@@ -63,4 +61,4 @@ public abstract class InstructionImpl(override val lexicalScope: LexicalScope):
} }
override val inputValues: List<PseudoValue> = Collections.emptyList() override val inputValues: List<PseudoValue> = Collections.emptyList()
} }
@@ -14,12 +14,12 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*
public open class InstructionVisitor() { public open class InstructionVisitor() {
public open fun visitAccessInstruction(instruction: AccessValueInstruction) { public open fun visitAccessInstruction(instruction: AccessValueInstruction) {
@@ -14,12 +14,12 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.*
public abstract class InstructionVisitorWithResult<R>() { public abstract class InstructionVisitorWithResult<R>() {
public abstract fun visitInstruction(instruction: Instruction): R public abstract fun visitInstruction(instruction: Instruction): R
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.kotlin.utils.emptyOrSingletonList import org.jetbrains.kotlin.utils.emptyOrSingletonList
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions package org.jetbrains.kotlin.cfg.pseudocode.instructions
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.psi.JetDeclaration import org.jetbrains.jet.lang.psi.JetDeclaration
@@ -14,12 +14,12 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval package org.jetbrains.kotlin.cfg.pseudocode.instructions.eval
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue
public trait InstructionWithReceivers: Instruction { public trait InstructionWithReceivers: Instruction {
public val receiverValues: Map<PseudoValue, ReceiverValue> public val receiverValues: Map<PseudoValue, ReceiverValue>
} }
@@ -14,11 +14,11 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval package org.jetbrains.kotlin.cfg.pseudocode.instructions.eval
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.JetElementInstruction
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
public trait InstructionWithValue : JetElementInstruction { public trait InstructionWithValue : JetElementInstruction {
public val outputValue: PseudoValue? public val outputValue: PseudoValue?
} }
@@ -14,14 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval package org.jetbrains.kotlin.cfg.pseudocode.instructions.eval
import org.jetbrains.jet.lang.psi.JetExpression import org.jetbrains.jet.lang.psi.JetExpression
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
public class LoadUnitValueInstruction( public class LoadUnitValueInstruction(
expression: JetExpression, expression: JetExpression,
@@ -14,19 +14,19 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval package org.jetbrains.kotlin.cfg.pseudocode.instructions.eval
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall
import org.jetbrains.jet.lang.descriptors.VariableDescriptor import org.jetbrains.jet.lang.descriptors.VariableDescriptor
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValueFactory import org.jetbrains.kotlin.cfg.pseudocode.PseudoValueFactory
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
import org.jetbrains.jet.lang.psi.JetNamedDeclaration import org.jetbrains.jet.lang.psi.JetNamedDeclaration
public trait AccessTarget { public trait AccessTarget {
@@ -117,4 +117,4 @@ public class WriteValueInstruction(
override fun createCopy(): InstructionImpl = override fun createCopy(): InstructionImpl =
WriteValueInstruction(element, lexicalScope, target, receiverValues, lValue, rValue) WriteValueInstruction(element, lexicalScope, target, receiverValues, lValue, rValue)
} }
@@ -14,20 +14,20 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval package org.jetbrains.kotlin.cfg.pseudocode.instructions.eval
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValueFactory import org.jetbrains.kotlin.cfg.pseudocode.PseudoValueFactory
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor
import org.jetbrains.jet.lang.cfg.pseudocode.TypePredicate import org.jetbrains.kotlin.cfg.pseudocode.TypePredicate
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MagicKind import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MagicKind
public abstract class OperationInstruction protected( public abstract class OperationInstruction protected(
element: JetElement, element: JetElement,
@@ -174,4 +174,4 @@ class MergeInstruction private(
factory: PseudoValueFactory factory: PseudoValueFactory
): MergeInstruction = MergeInstruction(element, lexicalScope, inputValues).setResult(factory) as MergeInstruction ): MergeInstruction = MergeInstruction(element, lexicalScope, inputValues).setResult(factory) as MergeInstruction
} }
} }
@@ -14,14 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.JetElementInstructionImpl
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.kotlin.utils.emptyOrSingletonList import org.jetbrains.kotlin.utils.emptyOrSingletonList
public abstract class AbstractJumpInstruction( public abstract class AbstractJumpInstruction(
@@ -14,16 +14,16 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
import java.util.Arrays import java.util.Arrays
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.kotlin.utils.emptyOrSingletonList import org.jetbrains.kotlin.utils.emptyOrSingletonList
public class ConditionalJumpInstruction( public class ConditionalJumpInstruction(
@@ -14,8 +14,8 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
public trait JumpInstruction : Instruction public trait JumpInstruction : Instruction
@@ -14,19 +14,19 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
import com.google.common.collect.Maps import com.google.common.collect.Maps
import com.google.common.collect.Lists import com.google.common.collect.Lists
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.JetElementInstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.JetElementInstructionImpl
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
import org.jetbrains.kotlin.utils.emptyOrSingletonList import org.jetbrains.kotlin.utils.emptyOrSingletonList
public class NondeterministicJumpInstruction( public class NondeterministicJumpInstruction(
@@ -14,13 +14,13 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
public class ReturnNoValueInstruction( public class ReturnNoValueInstruction(
element: JetElement, element: JetElement,
@@ -39,4 +39,4 @@ public class ReturnNoValueInstruction(
override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction = override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction =
ReturnNoValueInstruction(element, lexicalScope, newLabel) ReturnNoValueInstruction(element, lexicalScope, newLabel)
} }
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.psi.JetExpression import org.jetbrains.jet.lang.psi.JetExpression
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
import java.util.Collections import java.util.Collections
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.psi.JetReturnExpression import org.jetbrains.jet.lang.psi.JetReturnExpression
public class ReturnValueInstruction( public class ReturnValueInstruction(
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.psi.JetThrowExpression import org.jetbrains.jet.lang.psi.JetThrowExpression
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
import java.util.Collections import java.util.Collections
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
public class ThrowExceptionInstruction( public class ThrowExceptionInstruction(
expression: JetThrowExpression, expression: JetThrowExpression,
@@ -47,4 +47,4 @@ public class ThrowExceptionInstruction(
override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction { override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction {
return ThrowExceptionInstruction((element as JetThrowExpression), lexicalScope, newLabel, thrownValue) return ThrowExceptionInstruction((element as JetThrowExpression), lexicalScope, newLabel, thrownValue)
} }
} }
@@ -14,11 +14,11 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps package org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.*
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
public class UnconditionalJumpInstruction( public class UnconditionalJumpInstruction(
element: JetElement, element: JetElement,
@@ -37,4 +37,4 @@ public class UnconditionalJumpInstruction(
override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction = override fun createCopy(newLabel: Label, lexicalScope: LexicalScope): AbstractJumpInstruction =
UnconditionalJumpInstruction(element, newLabel, lexicalScope) UnconditionalJumpInstruction(element, newLabel, lexicalScope)
} }
@@ -14,17 +14,17 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special package org.jetbrains.kotlin.cfg.pseudocode.instructions.special
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode
import com.google.common.collect.Lists import com.google.common.collect.Lists
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
public class LocalFunctionDeclarationInstruction( public class LocalFunctionDeclarationInstruction(
element: JetElement, element: JetElement,
@@ -58,4 +58,4 @@ public class LocalFunctionDeclarationInstruction(
override fun createCopy(): InstructionImpl = override fun createCopy(): InstructionImpl =
LocalFunctionDeclarationInstruction(element, body, lexicalScope) LocalFunctionDeclarationInstruction(element, body, lexicalScope)
} }
@@ -14,13 +14,13 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special package org.jetbrains.kotlin.cfg.pseudocode.instructions.special
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
public class MarkInstruction( public class MarkInstruction(
element: JetElement, element: JetElement,
@@ -38,4 +38,4 @@ public class MarkInstruction(
override fun createCopy() = MarkInstruction(element, lexicalScope) override fun createCopy() = MarkInstruction(element, lexicalScope)
override fun toString() = "mark(${render(element)})" override fun toString() = "mark(${render(element)})"
} }
@@ -14,14 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special package org.jetbrains.kotlin.cfg.pseudocode.instructions.special
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
public class SubroutineEnterInstruction( public class SubroutineEnterInstruction(
public val subroutine: JetElement, public val subroutine: JetElement,
@@ -39,4 +39,4 @@ public class SubroutineEnterInstruction(
override fun createCopy(): InstructionImpl = override fun createCopy(): InstructionImpl =
SubroutineEnterInstruction(subroutine, lexicalScope) SubroutineEnterInstruction(subroutine, lexicalScope)
} }
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special package org.jetbrains.kotlin.cfg.pseudocode.instructions.special
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import java.util.Collections import java.util.Collections
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
public class SubroutineExitInstruction( public class SubroutineExitInstruction(
public val subroutine: JetElement, public val subroutine: JetElement,
@@ -52,4 +52,4 @@ public class SubroutineExitInstruction(
override fun createCopy(): InstructionImpl = override fun createCopy(): InstructionImpl =
SubroutineExitInstruction(subroutine, lexicalScope, isError) SubroutineExitInstruction(subroutine, lexicalScope, isError)
} }
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special package org.jetbrains.kotlin.cfg.pseudocode.instructions.special
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import java.util.Collections import java.util.Collections
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
public class SubroutineSinkInstruction( public class SubroutineSinkInstruction(
public val subroutine: JetElement, public val subroutine: JetElement,
@@ -43,4 +43,4 @@ public class SubroutineSinkInstruction(
override fun createCopy(): InstructionImpl = override fun createCopy(): InstructionImpl =
SubroutineSinkInstruction(subroutine, lexicalScope, debugLabel) SubroutineSinkInstruction(subroutine, lexicalScope, debugLabel)
} }
@@ -14,16 +14,16 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode.instructions.special package org.jetbrains.kotlin.cfg.pseudocode.instructions.special
import org.jetbrains.jet.lang.psi.JetDeclaration import org.jetbrains.jet.lang.psi.JetDeclaration
import org.jetbrains.jet.lang.psi.JetVariableDeclaration import org.jetbrains.jet.lang.psi.JetVariableDeclaration
import org.jetbrains.jet.lang.psi.JetParameter import org.jetbrains.jet.lang.psi.JetParameter
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.LexicalScope import org.jetbrains.kotlin.cfg.pseudocode.instructions.LexicalScope
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitorWithResult import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitorWithResult
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl
public class VariableDeclarationInstruction( public class VariableDeclarationInstruction(
element: JetDeclaration, element: JetDeclaration,
@@ -48,4 +48,4 @@ public class VariableDeclarationInstruction(
override fun createCopy(): InstructionImpl = override fun createCopy(): InstructionImpl =
VariableDeclarationInstruction(variableDeclarationElement, lexicalScope) VariableDeclarationInstruction(variableDeclarationElement, lexicalScope)
} }
@@ -14,11 +14,11 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.lang.cfg.pseudocode package org.jetbrains.kotlin.cfg.pseudocode
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.*
import org.jetbrains.jet.lang.psi.* import org.jetbrains.jet.lang.psi.*
import org.jetbrains.jet.lang.descriptors.* import org.jetbrains.jet.lang.descriptors.*
import org.jetbrains.jet.lang.resolve.bindingContextUtil.* import org.jetbrains.jet.lang.resolve.bindingContextUtil.*
@@ -175,4 +175,4 @@ fun Pseudocode.getElementValuesRecursively(element: JetElement): List<PseudoValu
collectValues() collectValues()
return results return results
} }
@@ -14,14 +14,14 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg; package org.jetbrains.kotlin.cfg;
import kotlin.Function3; import kotlin.Function3;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeImpl;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl; import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import java.util.*; import java.util.*;
@@ -14,16 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg; package org.jetbrains.kotlin.cfg;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
import kotlin.Function3; import kotlin.Function3;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.cfg.PseudocodeVariablesData; import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeImpl;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocodeTraverser.Edges;
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.Edges;
import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
@@ -31,8 +30,8 @@ import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableInitState; import static org.jetbrains.kotlin.cfg.PseudocodeVariablesData.VariableInitState;
import static org.jetbrains.jet.lang.cfg.PseudocodeVariablesData.VariableUseState; import static org.jetbrains.kotlin.cfg.PseudocodeVariablesData.VariableUseState;
public abstract class AbstractDataFlowTest extends AbstractPseudocodeTest { public abstract class AbstractDataFlowTest extends AbstractPseudocodeTest {
@@ -73,7 +72,7 @@ public abstract class AbstractDataFlowTest extends AbstractPseudocodeTest {
}); });
} }
private <D> int countDataColumnWidth( private static int countDataColumnWidth(
@NotNull String prefix, @NotNull String prefix,
@NotNull List<Instruction> instructions, @NotNull List<Instruction> instructions,
@NotNull Map<Instruction, Edges<Map<VariableDescriptor, VariableInitState>>> data @NotNull Map<Instruction, Edges<Map<VariableDescriptor, VariableInitState>>> data
@@ -91,13 +90,13 @@ public abstract class AbstractDataFlowTest extends AbstractPseudocodeTest {
} }
@NotNull @NotNull
private <D> String dumpEdgesData(String prefix, @NotNull Edges<Map<VariableDescriptor, D>> edges) { private static <D> String dumpEdgesData(String prefix, @NotNull Edges<Map<VariableDescriptor, D>> edges) {
return prefix + return prefix +
" in: " + renderVariableMap(edges.getIncoming()) + " in: " + renderVariableMap(edges.getIncoming()) +
" out: " + renderVariableMap(edges.getOutgoing()); " out: " + renderVariableMap(edges.getOutgoing());
} }
private <D> String renderVariableMap(Map<VariableDescriptor, D> map) { private static <D> String renderVariableMap(Map<VariableDescriptor, D> map) {
List<String> result = Lists.newArrayList(); List<String> result = Lists.newArrayList();
for (Map.Entry<VariableDescriptor, D> entry : map.entrySet()) { for (Map.Entry<VariableDescriptor, D> entry : map.entrySet()) {
VariableDescriptor variable = entry.getKey(); VariableDescriptor variable = entry.getKey();
@@ -14,17 +14,17 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg package org.jetbrains.kotlin.cfg
import org.jetbrains.jet.lang.cfg.pseudocode.PseudoValue import org.jetbrains.kotlin.cfg.pseudocode.PseudoValue
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeImpl
import org.jetbrains.jet.lang.psi.JetElement import org.jetbrains.jet.lang.psi.JetElement
import org.jetbrains.jet.lang.psi.JetTreeVisitorVoid import org.jetbrains.jet.lang.psi.JetTreeVisitorVoid
import org.jetbrains.jet.lang.resolve.BindingContext import org.jetbrains.jet.lang.resolve.BindingContext
import java.util.* import java.util.*
import org.jetbrains.jet.lang.cfg.pseudocode.TypePredicate import org.jetbrains.kotlin.cfg.pseudocode.TypePredicate
import org.jetbrains.jet.lang.cfg.pseudocode.getExpectedTypePredicate import org.jetbrains.kotlin.cfg.pseudocode.getExpectedTypePredicate
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.InstructionWithValue import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.InstructionWithValue
public abstract class AbstractPseudoValueTest : AbstractPseudocodeTest() { public abstract class AbstractPseudoValueTest : AbstractPseudocodeTest() {
override fun dumpInstructions(pseudocode: PseudocodeImpl, out: StringBuilder, bindingContext: BindingContext) { override fun dumpInstructions(pseudocode: PseudocodeImpl, out: StringBuilder, bindingContext: BindingContext) {
@@ -79,7 +79,7 @@ public abstract class AbstractPseudoValueTest : AbstractPseudocodeTest() {
val elementColumnWidth = elementToValues.keySet().map { elementText(it).length() }.max() ?: 1 val elementColumnWidth = elementToValues.keySet().map { elementText(it).length() }.max() ?: 1
val valueColumnWidth = allValues.map { valueDecl(it).length() }.max()!! val valueColumnWidth = allValues.map { valueDecl(it).length() }.max()!!
val valueDescColumnWidth = valueDescriptions.values().map { it.length }.max()!! val valueDescColumnWidth = valueDescriptions.values().map { it.length() }.max()!!
for ((ve, description) in valueDescriptions.entrySet()) { for ((ve, description) in valueDescriptions.entrySet()) {
val (value, element) = ve val (value, element) = ve
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg; package org.jetbrains.kotlin.cfg;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.util.text.StringUtil;
@@ -24,12 +24,12 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.ConfigurationKind; import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.analyzer.AnalysisResult; import org.jetbrains.jet.analyzer.AnalysisResult;
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeImpl;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeUtil; import org.jetbrains.kotlin.cfg.pseudocode.PseudocodeUtil;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionImpl; import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionImpl;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction;
import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment; import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
@@ -14,20 +14,20 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg; package org.jetbrains.kotlin.cfg;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; import org.jetbrains.kotlin.cfg.pseudocode.Pseudocode;
import org.jetbrains.jet.lang.cfg.pseudocode.PseudocodeImpl; import org.jetbrains.kotlin.cfg.pseudocode.instructions.Instruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.Instruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionVisitor;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionVisitor; import org.jetbrains.kotlin.cfg.pseudocode.instructions.InstructionWithNext;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.InstructionWithNext; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MagicInstruction;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MagicInstruction; import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MagicKind;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.MagicKind; import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.*; import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.*;
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.*;
import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetNamedDeclaration; import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
@@ -71,11 +71,11 @@ public class CFGraphToDotFilePrinter {
out.close(); out.close();
} }
private static void dumpEdges(List<Instruction> instructions, final PrintStream out, final int[] count, final Map<Instruction, String> nodeToName) { private static void dumpEdges(List<Instruction> instructions, final PrintStream out, final int[] count, final Map<Instruction, String> nodeToName) {
for (Instruction fromInst : instructions) { for (Instruction fromInst : instructions) {
fromInst.accept(new InstructionVisitor() { fromInst.accept(new InstructionVisitor() {
@Override @Override
public void visitLocalFunctionDeclarationInstruction(LocalFunctionDeclarationInstruction instruction) { public void visitLocalFunctionDeclarationInstruction(@NotNull LocalFunctionDeclarationInstruction instruction) {
int index = count[0]; int index = count[0];
// instruction.getBody().dumpSubgraph(out, "subgraph cluster_" + index, count, "color=blue;\nlabel = \"f" + index + "\";", nodeToName); // instruction.getBody().dumpSubgraph(out, "subgraph cluster_" + index, count, "color=blue;\nlabel = \"f" + index + "\";", nodeToName);
printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getBody().getInstructionsIncludingDeadCode().get(0)), null); printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getBody().getInstructionsIncludingDeadCode().get(0)), null);
@@ -83,58 +83,58 @@ public class CFGraphToDotFilePrinter {
} }
@Override @Override
public void visitUnconditionalJump(UnconditionalJumpInstruction instruction) { public void visitUnconditionalJump(@NotNull UnconditionalJumpInstruction instruction) {
printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getResolvedTarget()), null); printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getResolvedTarget()), null);
} }
@Override @Override
public void visitJump(AbstractJumpInstruction instruction) { public void visitJump(@NotNull AbstractJumpInstruction instruction) {
printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getResolvedTarget()), null); printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getResolvedTarget()), null);
} }
@Override @Override
public void visitNondeterministicJump(NondeterministicJumpInstruction instruction) { public void visitNondeterministicJump(@NotNull NondeterministicJumpInstruction instruction) {
for (Instruction nextInstruction : instruction.getNextInstructions()) { for (Instruction nextInstruction : instruction.getNextInstructions()) {
printEdge(out, nodeToName.get(instruction), nodeToName.get(nextInstruction), null); printEdge(out, nodeToName.get(instruction), nodeToName.get(nextInstruction), null);
} }
} }
@Override @Override
public void visitReturnValue(ReturnValueInstruction instruction) { public void visitReturnValue(@NotNull ReturnValueInstruction instruction) {
super.visitReturnValue(instruction); super.visitReturnValue(instruction);
} }
@Override @Override
public void visitReturnNoValue(ReturnNoValueInstruction instruction) { public void visitReturnNoValue(@NotNull ReturnNoValueInstruction instruction) {
super.visitReturnNoValue(instruction); super.visitReturnNoValue(instruction);
} }
@Override @Override
public void visitConditionalJump(ConditionalJumpInstruction instruction) { public void visitConditionalJump(@NotNull ConditionalJumpInstruction instruction) {
String from = nodeToName.get(instruction); String from = nodeToName.get(instruction);
printEdge(out, from, nodeToName.get(instruction.getNextOnFalse()), "no"); printEdge(out, from, nodeToName.get(instruction.getNextOnFalse()), "no");
printEdge(out, from, nodeToName.get(instruction.getNextOnTrue()), "yes"); printEdge(out, from, nodeToName.get(instruction.getNextOnTrue()), "yes");
} }
@Override @Override
public void visitInstructionWithNext(InstructionWithNext instruction) { public void visitInstructionWithNext(@NotNull InstructionWithNext instruction) {
printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getNext()), null); printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getNext()), null);
} }
@Override @Override
public void visitSubroutineExit(SubroutineExitInstruction instruction) { public void visitSubroutineExit(@NotNull SubroutineExitInstruction instruction) {
if (!instruction.getNextInstructions().isEmpty()) { if (!instruction.getNextInstructions().isEmpty()) {
printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getNextInstructions().iterator().next()), null); printEdge(out, nodeToName.get(instruction), nodeToName.get(instruction.getNextInstructions().iterator().next()), null);
} }
} }
@Override @Override
public void visitSubroutineSink(SubroutineSinkInstruction instruction) { public void visitSubroutineSink(@NotNull SubroutineSinkInstruction instruction) {
// Nothing // Nothing
} }
@Override @Override
public void visitInstruction(Instruction instruction) { public void visitInstruction(@NotNull Instruction instruction) {
throw new UnsupportedOperationException(instruction.toString()); throw new UnsupportedOperationException(instruction.toString());
} }
}); });
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg; package org.jetbrains.kotlin.cfg;
import com.intellij.testFramework.TestDataPath; import com.intellij.testFramework.TestDataPath;
import org.jetbrains.jet.JUnit3RunnerWithInners; import org.jetbrains.jet.JUnit3RunnerWithInners;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg; package org.jetbrains.kotlin.cfg;
import com.intellij.testFramework.TestDataPath; import com.intellij.testFramework.TestDataPath;
import org.jetbrains.jet.JUnit3RunnerWithInners; import org.jetbrains.jet.JUnit3RunnerWithInners;
@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.jet.cfg; package org.jetbrains.kotlin.cfg;
import com.intellij.testFramework.TestDataPath; import com.intellij.testFramework.TestDataPath;
import org.jetbrains.jet.JUnit3RunnerWithInners; import org.jetbrains.jet.JUnit3RunnerWithInners;
@@ -39,7 +39,7 @@ import org.jetbrains.jet.modules.xml.AbstractModuleXmlParserTest
import org.jetbrains.jet.jvm.compiler.AbstractWriteSignatureTest import org.jetbrains.jet.jvm.compiler.AbstractWriteSignatureTest
import org.jetbrains.kotlin.cli.AbstractKotlincExecutableTest import org.jetbrains.kotlin.cli.AbstractKotlincExecutableTest
import org.jetbrains.jet.repl.AbstractReplInterpreterTest import org.jetbrains.jet.repl.AbstractReplInterpreterTest
import org.jetbrains.jet.cfg.AbstractControlFlowTest import org.jetbrains.kotlin.cfg.AbstractControlFlowTest
import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest import org.jetbrains.jet.checkers.AbstractJetPsiCheckerTest
import org.jetbrains.jet.checkers.AbstractJetJsCheckerTest import org.jetbrains.jet.checkers.AbstractJetJsCheckerTest
import org.jetbrains.jet.plugin.quickfix.AbstractQuickFixTest import org.jetbrains.jet.plugin.quickfix.AbstractQuickFixTest
@@ -91,7 +91,7 @@ import org.jetbrains.jet.resolve.AbstractReferenceToJavaWithWrongFileStructureTe
import org.jetbrains.jet.plugin.navigation.AbstractKotlinGotoTest import org.jetbrains.jet.plugin.navigation.AbstractKotlinGotoTest
import org.jetbrains.jet.plugin.AbstractExpressionSelectionTest import org.jetbrains.jet.plugin.AbstractExpressionSelectionTest
import org.jetbrains.jet.plugin.refactoring.move.AbstractJetMoveTest import org.jetbrains.jet.plugin.refactoring.move.AbstractJetMoveTest
import org.jetbrains.jet.cfg.AbstractDataFlowTest import org.jetbrains.kotlin.cfg.AbstractDataFlowTest
import org.jetbrains.jet.plugin.imports.AbstractOptimizeImportsTest import org.jetbrains.jet.plugin.imports.AbstractOptimizeImportsTest
import org.jetbrains.jet.plugin.debugger.AbstractSmartStepIntoTest import org.jetbrains.jet.plugin.debugger.AbstractSmartStepIntoTest
import org.jetbrains.jet.plugin.stubs.AbstractStubBuilderTest import org.jetbrains.jet.plugin.stubs.AbstractStubBuilderTest
@@ -107,7 +107,7 @@ import org.jetbrains.jet.plugin.debugger.evaluate.AbstractCodeFragmentCompletion
import org.jetbrains.jet.plugin.debugger.evaluate.AbstractCodeFragmentHighlightingTest import org.jetbrains.jet.plugin.debugger.evaluate.AbstractCodeFragmentHighlightingTest
import org.jetbrains.jet.plugin.stubs.AbstractResolveByStubTest import org.jetbrains.jet.plugin.stubs.AbstractResolveByStubTest
import org.jetbrains.jet.plugin.stubs.AbstractMultiFileHighlightingTest import org.jetbrains.jet.plugin.stubs.AbstractMultiFileHighlightingTest
import org.jetbrains.jet.cfg.AbstractPseudoValueTest import org.jetbrains.kotlin.cfg.AbstractPseudoValueTest
import org.jetbrains.jet.plugin.structureView.AbstractKotlinFileStructureTest import org.jetbrains.jet.plugin.structureView.AbstractKotlinFileStructureTest
import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterSingleFileTest import org.jetbrains.kotlin.j2k.AbstractJavaToKotlinConverterSingleFileTest
import org.jetbrains.kotlin.jps.build.AbstractIncrementalJpsTest import org.jetbrains.kotlin.jps.build.AbstractIncrementalJpsTest
@@ -25,7 +25,7 @@ import com.intellij.psi.util.PsiTreeUtil;
import kotlin.KotlinPackage; import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.analyzer.AnalyzerPackage; import org.jetbrains.jet.analyzer.AnalyzerPackage;
import org.jetbrains.jet.lang.cfg.JetFlowInformationProvider; import org.jetbrains.kotlin.cfg.JetFlowInformationProvider;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.descriptors.annotations.Annotated; import org.jetbrains.jet.lang.descriptors.annotations.Annotated;
import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.descriptors.annotations.Annotations;
@@ -30,9 +30,9 @@ import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import com.intellij.psi.util.PsiTreeUtil import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue
import org.jetbrains.jet.lang.resolve.scopes.receivers.ThisReceiver import org.jetbrains.jet.lang.resolve.scopes.receivers.ThisReceiver
import org.jetbrains.jet.lang.cfg.pseudocode.* import org.jetbrains.kotlin.cfg.pseudocode.*
import org.jetbrains.jet.lang.resolve.BindingContext import org.jetbrains.jet.lang.resolve.BindingContext
import org.jetbrains.jet.lang.cfg.Label import org.jetbrains.kotlin.cfg.Label
import org.jetbrains.jet.plugin.refactoring.JetNameValidatorImpl import org.jetbrains.jet.plugin.refactoring.JetNameValidatorImpl
import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil
import org.jetbrains.jet.plugin.imports.canBeReferencedViaImport import org.jetbrains.jet.plugin.imports.canBeReferencedViaImport
@@ -45,13 +45,13 @@ import com.intellij.util.containers.MultiMap
import org.jetbrains.jet.lang.diagnostics.Errors import org.jetbrains.jet.lang.diagnostics.Errors
import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.Status import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.Status
import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.ErrorMessage import org.jetbrains.jet.plugin.refactoring.extractFunction.AnalysisResult.ErrorMessage
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction import org.jetbrains.kotlin.cfg.pseudocode.instructions.special.LocalFunctionDeclarationInstruction
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.eval.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.*
import org.jetbrains.jet.lang.cfg.pseudocode.instructions.jumps.* import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.*
import kotlin.properties.Delegates import kotlin.properties.Delegates
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.traverse import org.jetbrains.kotlin.cfg.pseudocodeTraverser.traverse
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.TraversalOrder import org.jetbrains.kotlin.cfg.pseudocodeTraverser.TraversalOrder
import org.jetbrains.jet.lang.resolve.bindingContextUtil.getTargetFunctionDescriptor import org.jetbrains.jet.lang.resolve.bindingContextUtil.getTargetFunctionDescriptor
import org.jetbrains.jet.lang.resolve.OverridingUtil import org.jetbrains.jet.lang.resolve.OverridingUtil
import org.jetbrains.jet.lang.resolve.bindingContextUtil.isUsedAsStatement import org.jetbrains.jet.lang.resolve.bindingContextUtil.isUsedAsStatement
@@ -61,7 +61,7 @@ import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValue.Initiali
import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValue.ParameterUpdate import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValue.ParameterUpdate
import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValue.ExpressionValue import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValue.ExpressionValue
import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValue.Jump import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValue.Jump
import org.jetbrains.jet.lang.cfg.pseudocodeTraverser.traverseFollowingInstructions import org.jetbrains.kotlin.cfg.pseudocodeTraverser.traverseFollowingInstructions
import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValueBoxer.AsList import org.jetbrains.jet.plugin.refactoring.extractFunction.OutputValueBoxer.AsList
import org.jetbrains.jet.plugin.refactoring.getContextForContainingDeclarationBody import org.jetbrains.jet.plugin.refactoring.getContextForContainingDeclarationBody
import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers