diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java index 9f87c4b64fc..6e52f330cdc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/Pseudocode.java @@ -59,6 +59,9 @@ public interface Pseudocode { @Nullable PseudoValue getElementValue(@Nullable JetElement element); + @NotNull + List getValueElements(@Nullable PseudoValue value); + @NotNull List getUsages(@Nullable PseudoValue value); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java index f98fb32b326..7c7caf967ea 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/pseudocode/PseudocodeImpl.java @@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.cfg.pseudocode; import com.google.common.collect.*; import com.intellij.openapi.util.NotNullLazyValue; +import com.intellij.util.containers.BidirectionalMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.cfg.Label; @@ -88,7 +89,7 @@ public class PseudocodeImpl implements Pseudocode { private final List mutableInstructionList = new ArrayList(); private final List instructions = new ArrayList(); - private final Map elementsToValues = new HashMap(); + private final BidirectionalMap elementsToValues = new BidirectionalMap(); private final NotNullLazyValue>> valueUsages = new NotNullLazyValue>>() { @@ -261,6 +262,13 @@ public class PseudocodeImpl implements Pseudocode { return elementsToValues.get(element); } + @NotNull + @Override + public List getValueElements(@Nullable PseudoValue value) { + List result = elementsToValues.getKeysByValue(value); + return result != null ? result : Collections.emptyList(); + } + @NotNull @Override public List getUsages(@Nullable PseudoValue value) {