Merge three ValuesOrderInfos into one

GitOrigin-RevId: fa3a12d68dc44a9f05d306a79b4a26692e789eb3
This commit is contained in:
Alexey Korovin
2025-01-31 15:34:24 +01:00
committed by intellij-monorepo-bot
parent 5f7d95b99d
commit ed4f8e5dac
5 changed files with 30 additions and 101 deletions

View File

@@ -44,7 +44,7 @@ public class TraceResultInterpreterImpl implements TraceResultInterpreter {
final Value trace = info.getValue(i);
final CallTraceInterpreter interpreter = myInterpreterFactory.getInterpreter(call.getName(), call.getType());
final TraceInfo traceInfo = trace == null ? ValuesOrderInfo.empty(call) : interpreter.resolve(call, trace);
final TraceInfo traceInfo = trace == null ? ValuesOrderInfo.Companion.empty(call) : interpreter.resolve(call, trace);
result.add(traceInfo);
}

View File

@@ -7,7 +7,6 @@ import com.intellij.debugger.streams.trace.impl.interpret.ex.UnexpectedValueExce
import com.intellij.debugger.streams.trace.impl.interpret.ex.UnexpectedValueTypeException;
import com.intellij.debugger.streams.wrapper.StreamCall;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
@@ -32,7 +31,7 @@ public class DistinctCallTraceInterpreter implements CallTraceInterpreter {
final Map<TraceElement, List<TraceElement>> direct = resolve(trace, order, Direction.DIRECT);
final Map<TraceElement, List<TraceElement>> reverse = resolve(trace, order, Direction.REVERSE);
return new MyDistinctInfo(order, direct, reverse);
return new ValuesOrderInfo(order.getCall(), order.getValuesOrderBefore(), order.getValuesOrderAfter(), direct, reverse);
}
throw new UnexpectedValueException("distinct trace must be an array value");
@@ -106,29 +105,6 @@ public class DistinctCallTraceInterpreter implements CallTraceInterpreter {
return result;
}
private static final class MyDistinctInfo extends ValuesOrderInfo {
private final Map<TraceElement, List<TraceElement>> myDirectTrace;
private final Map<TraceElement, List<TraceElement>> myReverseTrace;
private MyDistinctInfo(@NotNull TraceInfo info,
@NotNull Map<TraceElement, List<TraceElement>> directTrace,
@NotNull Map<TraceElement, List<TraceElement>> reverseTrace) {
super(info.getCall(), info.getValuesOrderBefore(), info.getValuesOrderAfter());
myDirectTrace = directTrace;
myReverseTrace = reverseTrace;
}
@Override
public @Nullable Map<TraceElement, List<TraceElement>> getDirectTrace() {
return Collections.unmodifiableMap(myDirectTrace);
}
@Override
public @Nullable Map<TraceElement, List<TraceElement>> getReverseTrace() {
return Collections.unmodifiableMap(myReverseTrace);
}
}
private static int extractIntValue(@NotNull Value value) {
if (value instanceof IntegerValue) {
return ((IntegerValue)value).value();

View File

@@ -1,56 +1,31 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.debugger.streams.trace.impl.interpret;
package com.intellij.debugger.streams.trace.impl.interpret
import com.intellij.debugger.streams.trace.TraceElement;
import com.intellij.debugger.streams.trace.TraceInfo;
import com.intellij.debugger.streams.wrapper.StreamCall;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import com.intellij.debugger.streams.trace.TraceElement
import com.intellij.debugger.streams.trace.TraceInfo
import com.intellij.debugger.streams.wrapper.StreamCall
import java.util.Collections;
import java.util.List;
import java.util.Map;
class ValuesOrderInfo(
private val streamCall: StreamCall,
private val before: Map<Int, TraceElement>,
private val after: Map<Int, TraceElement>,
private val direct: Map<TraceElement, List<TraceElement>>? = null,
private val reverse: Map<TraceElement, List<TraceElement>>? = null,
) : TraceInfo {
constructor(call: StreamCall, before: Map<Int, TraceElement>, after: Map<Int, TraceElement>) : this(call, before, after, null, null)
/**
* @author Vitaliy.Bibaev
*/
public class ValuesOrderInfo implements TraceInfo {
private final StreamCall myStreamCall;
private final Map<Integer, TraceElement> myValuesOrderAfter;
private final Map<Integer, TraceElement> myValuesOrderBefore;
override fun getCall(): StreamCall = streamCall
ValuesOrderInfo(@NotNull StreamCall call, @NotNull Map<Integer, TraceElement> before, @NotNull Map<Integer, TraceElement> after) {
myStreamCall = call;
myValuesOrderBefore = before;
myValuesOrderAfter = after;
override fun getValuesOrderBefore(): Map<Int, TraceElement> = before
override fun getValuesOrderAfter(): Map<Int, TraceElement> = after
override fun getDirectTrace(): Map<TraceElement, List<TraceElement>>? = direct
override fun getReverseTrace(): Map<TraceElement, List<TraceElement>>? = reverse
companion object {
fun empty(call: StreamCall): TraceInfo {
return ValuesOrderInfo(call, emptyMap(), emptyMap())
}
}
@Override
public @NotNull StreamCall getCall() {
return myStreamCall;
}
@Override
public @NotNull Map<Integer, TraceElement> getValuesOrderBefore() {
return myValuesOrderBefore;
}
@Override
public @NotNull Map<Integer, TraceElement> getValuesOrderAfter() {
return myValuesOrderAfter;
}
@Override
public @Nullable Map<TraceElement, List<TraceElement>> getDirectTrace() {
return null;
}
@Override
public @Nullable Map<TraceElement, List<TraceElement>> getReverseTrace() {
return null;
}
public static TraceInfo empty(@NotNull StreamCall call) {
return new ValuesOrderInfo(call, Collections.emptyMap(), Collections.emptyMap());
}
}
}