Rename jet -> kotlin in frontend: cfg
org.jetbrains.jet.lang.cfg, org.jetbrains.jet.cfg -> org.jetbrains.kotlin.cfg
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
+1
-1
@@ -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;
|
||||||
|
|||||||
+1
-1
@@ -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 {}
|
||||||
+1
-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.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import org.jetbrains.jet.lang.psi.JetElement;
|
import org.jetbrains.jet.lang.psi.JetElement;
|
||||||
+1
-1
@@ -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();
|
||||||
+5
-5
@@ -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;
|
||||||
+5
-5
@@ -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;
|
||||||
+6
-6
@@ -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.*;
|
||||||
+29
-29
@@ -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());
|
||||||
+1
-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;
|
||||||
|
|
||||||
+1
-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.jet.lang.psi.JetLoopExpression;
|
import org.jetbrains.jet.lang.psi.JetLoopExpression;
|
||||||
|
|
||||||
+7
-7
@@ -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,
|
||||||
+7
-8
@@ -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
|
||||||
+13
-13
@@ -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;
|
||||||
+10
-10
@@ -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> {
|
||||||
+1
-1
@@ -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),
|
||||||
+2
-2
@@ -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)
|
||||||
+1
-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;
|
||||||
+7
-7
@@ -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;
|
||||||
+3
-3
@@ -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
|
||||||
}
|
}
|
||||||
+3
-3
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+6
-6
@@ -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;
|
||||||
+24
-24
@@ -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);
|
||||||
+6
-6
@@ -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;
|
||||||
+1
-1
@@ -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
|
||||||
+4
-5
@@ -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
|
||||||
}
|
}
|
||||||
+4
-6
@@ -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()
|
||||||
}
|
}
|
||||||
+5
-5
@@ -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) {
|
||||||
+5
-5
@@ -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
|
||||||
+1
-1
@@ -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
|
||||||
+1
-1
@@ -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
|
||||||
|
|
||||||
+1
-1
@@ -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
|
||||||
+1
-1
@@ -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
|
||||||
+4
-4
@@ -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>
|
||||||
}
|
}
|
||||||
+4
-4
@@ -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?
|
||||||
}
|
}
|
||||||
+6
-6
@@ -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,
|
||||||
+9
-9
@@ -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)
|
||||||
}
|
}
|
||||||
+10
-10
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+6
-6
@@ -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(
|
||||||
+7
-7
@@ -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(
|
||||||
+3
-3
@@ -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
|
||||||
+9
-9
@@ -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(
|
||||||
+6
-6
@@ -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)
|
||||||
}
|
}
|
||||||
+6
-6
@@ -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(
|
||||||
+7
-7
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+4
-4
@@ -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)
|
||||||
}
|
}
|
||||||
+9
-9
@@ -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)
|
||||||
}
|
}
|
||||||
+6
-6
@@ -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)})"
|
||||||
}
|
}
|
||||||
+7
-7
@@ -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)
|
||||||
}
|
}
|
||||||
+7
-7
@@ -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)
|
||||||
}
|
}
|
||||||
+7
-7
@@ -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)
|
||||||
}
|
}
|
||||||
+7
-7
@@ -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)
|
||||||
}
|
}
|
||||||
+5
-5
@@ -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
|
||||||
}
|
}
|
||||||
+4
-4
@@ -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.*;
|
||||||
+9
-10
@@ -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();
|
||||||
+7
-7
@@ -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
|
||||||
+7
-7
@@ -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;
|
||||||
+22
-22
@@ -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());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
+1
-1
@@ -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;
|
||||||
+1
-1
@@ -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;
|
||||||
+1
-1
@@ -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;
|
||||||
|
|||||||
+9
-9
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user