diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt index aff66d7afdf..5f5797f477c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariableDataCollector.kt @@ -28,23 +28,23 @@ import org.jetbrains.jet.lang.cfg.PseudocodeTraverser.* import java.util.* -public class PseudocodeVariableDataCollector(private val bindingContext: BindingContext) : PseudocodeTraverser() { +public class PseudocodeVariableDataCollector( + private val bindingContext: BindingContext, + private val pseudocode: Pseudocode +) : PseudocodeTraverser() { suppress("UNCHECKED_CAST") public fun collectDataJ( - pseudocode: Pseudocode, traversalOrder: TraversalOrder, instructionDataMergeStrategy: InstructionDataMergeStrategy> ): MutableMap>> { //see KT-4605 return collectData( - pseudocode, traversalOrder, - instructionDataMergeStrategy as InstructionDataMergeStrategy> + traversalOrder, instructionDataMergeStrategy as InstructionDataMergeStrategy> ) as MutableMap>> } public fun collectData( - pseudocode: Pseudocode, traversalOrder: TraversalOrder, instructionDataMergeStrategy: InstructionDataMergeStrategy> ): Map>> { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java index 4aa5f3d200a..b48d4c63452 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/PseudocodeVariablesData.java @@ -41,6 +41,7 @@ import static org.jetbrains.jet.lang.cfg.PseudocodeTraverser.TraversalOrder.FORW public class PseudocodeVariablesData { private final Pseudocode pseudocode; private final BindingContext bindingContext; + private final PseudocodeVariableDataCollector pseudocodeVariableDataCollector; private final Map> declaredVariablesForDeclaration = Maps.newHashMap(); private final Map> usedVariablesForDeclaration = Maps.newHashMap(); @@ -50,6 +51,7 @@ public class PseudocodeVariablesData { public PseudocodeVariablesData(@NotNull Pseudocode pseudocode, @NotNull BindingContext bindingContext) { this.pseudocode = pseudocode; this.bindingContext = bindingContext; + this.pseudocodeVariableDataCollector = new PseudocodeVariableDataCollector(bindingContext, pseudocode); } @NotNull @@ -124,19 +126,19 @@ public class PseudocodeVariablesData { @NotNull public Map>> getVariableInitializers() { if (variableInitializers == null) { - variableInitializers = getVariableInitializers(pseudocode); + variableInitializers = computeVariableInitializers(); } return variableInitializers; } @NotNull - private Map>> getVariableInitializers(@NotNull Pseudocode pseudocode) { + private Map>> computeVariableInitializers() { final Set declaredVariables = getDeclaredVariables(pseudocode, true); - return new PseudocodeVariableDataCollector(bindingContext).collectDataJ( - pseudocode, FORWARD, + return pseudocodeVariableDataCollector.collectDataJ( + FORWARD, new InstructionDataMergeStrategy>() { @NotNull @Override @@ -231,8 +233,8 @@ public class PseudocodeVariablesData { @NotNull public Map>> getVariableUseStatusData() { - return new PseudocodeVariableDataCollector(bindingContext).collectDataJ( - pseudocode, BACKWARD, + return pseudocodeVariableDataCollector.collectDataJ( + BACKWARD, new InstructionDataMergeStrategy>() { @NotNull @Override