Merge commit 'ec41914f24541a9400c8beb987cf4e36fc991d6c' into dev-release
diff --git a/src/main/java/com/android/tools/r8/retrace/Retrace.java b/src/main/java/com/android/tools/r8/retrace/Retrace.java
index 5bb9ca1..2b01885 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -16,18 +16,18 @@
import com.android.tools.r8.retrace.internal.RetraceAbortException;
import com.android.tools.r8.retrace.internal.RetracerImpl;
import com.android.tools.r8.retrace.internal.StackTraceRegularExpressionParser;
+import com.android.tools.r8.utils.Box;
import com.android.tools.r8.utils.ExceptionDiagnostic;
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.OptionsParsing;
import com.android.tools.r8.utils.OptionsParsing.ParseContext;
+import com.android.tools.r8.utils.Pair;
import com.android.tools.r8.utils.StringDiagnostic;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.Timing;
import com.google.common.base.Charsets;
import com.google.common.base.Equivalence;
import com.google.common.base.Equivalence.Wrapper;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterators;
import com.google.common.io.CharStreams;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -39,17 +39,14 @@
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
-import java.util.TreeMap;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -178,7 +175,7 @@
* @param stackTrace the stack trace to be retrace
* @return list of potentially ambiguous stack traces.
*/
- public List<Iterator<T>> retraceStackTrace(List<T> stackTrace) {
+ public List<List<List<T>>> retraceStackTrace(List<T> stackTrace) {
ListUtils.forEachWithIndex(
stackTrace,
(line, lineNumber) -> {
@@ -190,37 +187,43 @@
});
RetraceStackTraceElementProxyEquivalence<T, ST> equivalence =
new RetraceStackTraceElementProxyEquivalence<>(isVerbose);
- RetracedNodeState<T, ST> root = RetracedNodeState.initial(equivalence);
- List<RetracedNodeState<T, ST>> allLeaves =
- ListUtils.fold(
- stackTrace,
- (List<RetracedNodeState<T, ST>>) ImmutableList.of(root),
- (acc, stackTraceLine) -> {
- ST parsedLine = stackTraceLineParser.parse(stackTraceLine);
- List<RetracedNodeState<T, ST>> newLeaves = new ArrayList<>();
- for (RetracedNodeState<T, ST> previousNode : acc) {
- RetraceStackTraceElementProxyResult<T, ST> result =
- proxyRetracer.retrace(parsedLine, previousNode.context);
- result.stream()
- .forEach(
- retracedElement -> {
- if (retracedElement.isTopFrame() || !retracedElement.hasRetracedClass()) {
- previousNode.addChild(retracedElement, retracedElement.getContext());
- }
- previousNode.addFrameToCurrentChild(
- parsedLine.toRetracedItem(retracedElement, isVerbose));
- });
- if (!previousNode.hasChildren()) {
- // This happens when there is nothing to retrace. Add the node to newLeaves to
- // ensure we keep retracing this path.
- previousNode.addChild(null, result.getResultContext());
- }
- newLeaves.addAll(previousNode.getChildren());
- }
- return newLeaves;
- });
- assert !allLeaves.isEmpty();
- return ListUtils.map(allLeaves, RetracedNodeState::iterator);
+ List<List<List<T>>> finalResult = new ArrayList<>();
+ ListUtils.fold(
+ stackTrace,
+ RetraceStackTraceContext.empty(),
+ (context, stackTraceLine) -> {
+ ST parsedLine = stackTraceLineParser.parse(stackTraceLine);
+ List<Pair<RetraceStackTraceElementProxy<T, ST>, List<T>>> resultsForLine =
+ new ArrayList<>();
+ Box<List<T>> currentList = new Box<>();
+ Set<Wrapper<RetraceStackTraceElementProxy<T, ST>>> seen = new HashSet<>();
+ List<RetraceStackTraceContext> contexts = new ArrayList<>();
+ RetraceStackTraceElementProxyResult<T, ST> retraceResult =
+ proxyRetracer.retrace(parsedLine, context);
+ retraceResult.stream()
+ .forEach(
+ retracedElement -> {
+ if (retracedElement.isTopFrame() || !retracedElement.hasRetracedClass()) {
+ if (seen.add(equivalence.wrap(retracedElement))) {
+ currentList.set(new ArrayList<>());
+ resultsForLine.add(Pair.create(retracedElement, currentList.get()));
+ contexts.add(retracedElement.getContext());
+ } else {
+ currentList.empty();
+ }
+ }
+ if (currentList.isSet()) {
+ currentList.get().add(parsedLine.toRetracedItem(retracedElement, isVerbose));
+ }
+ });
+ resultsForLine.sort(Comparator.comparing(Pair::getFirst));
+ finalResult.add(ListUtils.map(resultsForLine, Pair::getSecond));
+ if (contexts.isEmpty()) {
+ return retraceResult.getResultContext();
+ }
+ return contexts.size() == 1 ? contexts.get(0) : RetraceStackTraceContext.empty();
+ });
+ return finalResult;
}
/**
@@ -598,63 +601,4 @@
return new RetraceStackTraceElementProxyEquivalence<>(isVerbose);
}
}
-
- private static class RetracedNodeState<T, ST extends StackTraceElementProxy<T, ST>>
- implements Iterable<T> {
-
- private final RetracedNodeState<T, ST> parent;
- private final Set<Wrapper<RetraceStackTraceElementProxy<T, ST>>> seenSet = new HashSet<>();
- private final Map<RetraceStackTraceElementProxy<T, ST>, RetracedNodeState<T, ST>> children =
- new TreeMap<>(Comparator.nullsFirst(Comparator.naturalOrder()));
- private RetracedNodeState<T, ST> currentChild;
- private final RetraceStackTraceContext context;
- private final List<T> frames = new ArrayList<>();
- private final RetraceStackTraceElementProxyEquivalence<T, ST> equivalence;
-
- private RetracedNodeState(
- RetracedNodeState<T, ST> parent,
- RetraceStackTraceContext context,
- RetraceStackTraceElementProxyEquivalence<T, ST> equivalence) {
- this.parent = parent;
- this.context = context;
- this.equivalence = equivalence;
- }
-
- private void addFrameToCurrentChild(T frame) {
- if (currentChild != null) {
- currentChild.frames.add(frame);
- }
- }
-
- private void addChild(
- RetraceStackTraceElementProxy<T, ST> element, RetraceStackTraceContext context) {
- if (seenSet.add(equivalence.wrap(element))) {
- RetracedNodeState<T, ST> newChild = new RetracedNodeState<>(this, context, equivalence);
- this.currentChild = newChild;
- children.put(element, newChild);
- } else {
- this.currentChild = null;
- }
- }
-
- private static <T, ST extends StackTraceElementProxy<T, ST>> RetracedNodeState<T, ST> initial(
- RetraceStackTraceElementProxyEquivalence<T, ST> equivalence) {
- return new RetracedNodeState<>(null, RetraceStackTraceContext.empty(), equivalence);
- }
-
- @Override
- public Iterator<T> iterator() {
- return parent != null
- ? Iterators.concat(parent.iterator(), frames.iterator())
- : frames.iterator();
- }
-
- public boolean hasChildren() {
- return !children.isEmpty();
- }
-
- public Collection<? extends RetracedNodeState<T, ST>> getChildren() {
- return children.values();
- }
- }
}
diff --git a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
index e68c6f6..29ee4d2 100644
--- a/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/StringRetrace.java
@@ -9,12 +9,10 @@
import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.Keep;
import com.android.tools.r8.retrace.internal.StackTraceElementStringProxy;
-import com.android.tools.r8.utils.BooleanBox;
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.StringUtils;
import java.util.ArrayList;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
@@ -79,31 +77,28 @@
*/
public List<String> retrace(List<String> stackTrace) {
List<String> retracedStrings = new ArrayList<>();
- List<Iterator<String>> retracedStackTraces = retraceStackTrace(stackTrace);
- if (retracedStackTraces.size() > 1 && isVerbose) {
- retracedStrings.add("There are " + retracedStackTraces.size() + " ambiguous stack traces.");
- }
- for (int i = 0; i < retracedStackTraces.size(); i++) {
- Iterator<String> result = retracedStackTraces.get(i);
- BooleanBox insertOr = new BooleanBox(i > 0);
- result.forEachRemaining(
- stackTraceLine -> {
- if (insertOr.get()) {
- // We are reporting an ambiguous frame. To support retracing tools that retrace line
- // by line we have to emit <OR> at the point of the first ' at ' if we can find it.
- int indexToInsertOr = stackTraceLine.indexOf(" at ");
- boolean hasSpace = indexToInsertOr >= 0;
- if (indexToInsertOr < 0) {
- indexToInsertOr =
- Math.max(StringUtils.firstNonWhitespaceCharacter(stackTraceLine), 0);
+ List<List<List<String>>> lists = retraceStackTrace(stackTrace);
+ for (List<List<String>> newLines : lists) {
+ ListUtils.forEachWithIndex(
+ newLines,
+ (inlineFrames, ambiguousIndex) -> {
+ for (int i = 0; i < inlineFrames.size(); i++) {
+ String stackTraceLine = inlineFrames.get(i);
+ if (i == 0 && ambiguousIndex > 0) {
+ // We are reporting an ambiguous frame. To support retracing tools that retrace line
+ // by line we have to emit <OR> at the point of the first 'at ' if we can find it.
+ int indexToInsertOr = stackTraceLine.indexOf("at ");
+ if (indexToInsertOr < 0) {
+ indexToInsertOr =
+ Math.max(StringUtils.firstNonWhitespaceCharacter(stackTraceLine), 0);
+ }
+ retracedStrings.add(
+ stackTraceLine.substring(0, indexToInsertOr)
+ + "<OR> "
+ + stackTraceLine.substring(indexToInsertOr));
+ } else {
+ retracedStrings.add(stackTraceLine);
}
- retracedStrings.add(
- stackTraceLine.substring(0, indexToInsertOr)
- + (hasSpace ? "<OR>" : "<OR> ")
- + stackTraceLine.substring(indexToInsertOr));
- insertOr.set(false);
- } else {
- retracedStrings.add(stackTraceLine);
}
});
}
diff --git a/src/main/java/com/android/tools/r8/utils/Box.java b/src/main/java/com/android/tools/r8/utils/Box.java
index de67cf6..2e6f17c 100644
--- a/src/main/java/com/android/tools/r8/utils/Box.java
+++ b/src/main/java/com/android/tools/r8/utils/Box.java
@@ -62,4 +62,8 @@
public int hashCode() {
return Objects.hashCode(value);
}
+
+ public void empty() {
+ value = null;
+ }
}
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 39b8239..9a95fa7 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -201,24 +201,6 @@
.put(
"145-alloc-tracking-stress",
TestCondition.match(TestCondition.runtimes(DexVm.Version.V12_0_0)))
- // Art in 12.0.0 beta4 will hang on this test when running on dx input.
- // D8 will never generate the code introducing this (goto32 0)
- // See: b/200660605
- .put(
- "083-compiler-regressions",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(CompilerUnderTest.D8),
- TestCondition.runtimes(DexVm.Version.V12_0_0)))
- // Art in 12.0.0 beta4 will hang on this test when running on dx input.
- // D8 will never generate the code introducing this (goto32 0)
- // See: b/200660605
- .put(
- "121-simple-suspend-check",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(CompilerUnderTest.D8),
- TestCondition.runtimes(DexVm.Version.V12_0_0)))
.build();
// Tests that are flaky with the Art version we currently use.
@@ -666,15 +648,6 @@
// Tests where the output of R8 fails when run with Art.
private static final Multimap<String, TestCondition> failingRunWithArt =
new ImmutableListMultimap.Builder<String, TestCondition>()
- // The itf cache issue is hit on dx inputs on the runtime with the issue as we no longer
- // desugar.
- // TODO(b/198306901): Investigate this behavior change fully. Do we need a workaround?
- .put(
- "666-dex-cache-itf",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(CompilerUnderTest.R8),
- TestCondition.runtimes(DexVm.Version.DEFAULT)))
// The growth limit test fails after processing by R8 because R8 will eliminate an
// "unneeded" const store. The following reflective call to the VM's GC will then see the
// large array as still live and the subsequent allocations will fail to reach the desired
@@ -703,14 +676,6 @@
"111-unresolvable-exception",
TestCondition.match(
TestCondition.D8_COMPILER, TestCondition.runtimesUpTo(DexVm.Version.V4_4_4)))
- // Fails because the code has to be desugared to run on art <= 6.0.1
- // When running from dx code we don't desugar.
- .put(
- "530-checker-lse2",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(CompilerUnderTest.R8, CompilerUnderTest.D8),
- TestCondition.runtimesUpTo(DexVm.Version.V6_0_1)))
.put(
"534-checker-bce-deoptimization",
TestCondition.match(
@@ -771,17 +736,6 @@
"550-new-instance-clinit",
TestCondition.match(
TestCondition.D8_COMPILER, TestCondition.runtimes(DexVm.Version.V6_0_1)))
- // Regression test for an issue that is not fixed on version 5.1.1. Throws an Exception
- // instance instead of the expected NullPointerException. This bug is only tickled when
- // running the R8 generated code when starting from jar or from dex code generated with
- // dx. However, the code that R8 generates is valid and there is nothing we can do for
- // this one.
- .put(
- "551-implicit-null-checks",
- TestCondition.match(
- TestCondition.tools(DexTool.NONE, DexTool.DX),
- TestCondition.R8DEX_COMPILER,
- TestCondition.runtimes(DexVm.Version.V5_1_1)))
// Contains a method (B.<init>) which pass too few arguments to invoke. Also, contains an
// iput on a static field.
.put(
@@ -804,14 +758,6 @@
TestCondition.match(TestCondition.runtimes(DexVm.Version.V4_0_4)))
// Illegal class flags in Dalvik 4.0.4.
.put("121-modifiers", TestCondition.match(TestCondition.runtimes(DexVm.Version.V4_0_4)))
- // Switch regression still present in the DEX code produced by DX on Dalvik 4.0.4.
- // The fix for b/177790310 is not applied for DEX input (when merging).
- .put(
- "095-switch-MAX_INT",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(CompilerUnderTest.D8),
- TestCondition.runtimes(DexVm.Version.V4_0_4)))
.build();
// Tests where the output of R8/D8 runs in Art but produces different output than the expected.txt
@@ -901,17 +847,6 @@
CompilerUnderTest.R8,
CompilerUnderTest.R8CF,
CompilerUnderTest.R8_AFTER_D8))))
- // Uses dex file version 37 and therefore only runs on Android N and above.
- .put(
- "370-dex-v37",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(CompilerUnderTest.D8),
- TestCondition.runtimes(
- DexVm.Version.V4_0_4,
- DexVm.Version.V4_4_4,
- DexVm.Version.V5_1_1,
- DexVm.Version.V6_0_1)))
// Class.forName() that fails due to verification error is removed.
.put(
"412-new-array",
@@ -1001,36 +936,6 @@
.put("973-default-multidex", beforeAndroidN) // --min-sdk = 24
.put("974-verify-interface-super", beforeAndroidN) // --min-sdk = 24
.put("975-iface-private", beforeAndroidN) // --min-sdk = 24
- // Uses dex file version 37 and therefore only runs on Android N and above.
- .put(
- "972-iface-super-multidex",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.runtimes(
- DexVm.Version.V4_0_4,
- DexVm.Version.V4_4_4,
- DexVm.Version.V5_1_1,
- DexVm.Version.V6_0_1)))
- // Uses dex file version 37 and therefore only runs on Android N and above.
- .put(
- "978-virtual-interface",
- TestCondition.or(
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(CompilerUnderTest.D8),
- TestCondition.runtimes(
- DexVm.Version.V4_0_4,
- DexVm.Version.V4_4_4,
- DexVm.Version.V5_1_1,
- DexVm.Version.V6_0_1)),
- // On V4_0_4 and V4_4_4 the test will throw a verification error.
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.compilers(
- CompilerUnderTest.R8,
- CompilerUnderTest.R8_AFTER_D8,
- CompilerUnderTest.D8_AFTER_R8CF),
- TestCondition.runtimes(DexVm.Version.V4_0_4, DexVm.Version.V4_4_4))))
.put("979-const-method-handle", beforeAndroidP)
// Missing class junit.framework.Assert (see JunitAvailabilityInHostArtTest).
// TODO(120884788): Add this again.
@@ -1068,16 +973,6 @@
// Dex code contains a method (B.<init>) which pass too few arguments to invoke, and it
// also contains an iput on a static field.
.put("600-verifier-fails", TestCondition.match(TestCondition.R8DEX_COMPILER))
- // Contains a method that falls off the end without a return.
- .put(
- "606-erroneous-class",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.R8_NOT_AFTER_D8_COMPILER,
- LEGACY_RUNTIME))
- // Dex input contains an illegal InvokeSuper in Z.foo() to Y.foo()
- // that R8 will fail to compile.
- .put("974-verify-interface-super", TestCondition.match(TestCondition.R8DEX_COMPILER))
// R8 generates too large code in Goto.bigGoto(). b/74327727
.put("003-omnibus-opcodes", TestCondition.match(TestCondition.D8_AFTER_R8CF_COMPILER))
.build();
@@ -1102,8 +997,6 @@
.put("506-verify-aput", TestCondition.match(TestCondition.R8DEX_COMPILER))
// Test with invalid register usage: returns a register of either long or double.
.put("510-checker-try-catch", TestCondition.match(TestCondition.R8DEX_COMPILER))
- // Test with backport method which is still present in DX input.
- .put("530-checker-lse2", TestCondition.match(TestCondition.tools(DexTool.DX)))
// Test with invalid register usage: contains an int-to-byte on the result of aget-object.
.put("518-null-array-get", TestCondition.match(TestCondition.R8DEX_COMPILER))
// Test with invalid register usage: phi of int and float.
@@ -1112,21 +1005,11 @@
.put("552-checker-primitive-typeprop", TestCondition.match(TestCondition.R8DEX_COMPILER))
// Test with invalid register usage: invoke-static {v0,v0}, foo(IL)V
.put("557-checker-ref-equivalent", TestCondition.match(TestCondition.R8DEX_COMPILER))
- // Test with smali code that calls a method that needs to be desugared.
- // The smali code is only present in the non-legacy test distrubution, so this only fails
- // when running the "default" runtime.
- .put(
- "567-checker-compare",
- TestCondition.or(
- TestCondition.match(TestCondition.runtimes(Runtime.ART_DEFAULT)),
- TestCondition.match(TestCondition.tools(DexTool.DX))))
// This test is starting from invalid dex code. It splits up a double value and uses
// the first register of a double with the second register of another double.
.put("800-smali", TestCondition.match(TestCondition.R8DEX_COMPILER))
// Contains a loop in the class hierarchy.
.put("804-class-extends-itself", TestCondition.any())
- // Test with backport method which is still present in DX input.
- .put("912-classes", TestCondition.match(TestCondition.tools(DexTool.DX)))
// These tests have illegal class flag combinations, so we reject them.
.put("161-final-abstract-class", TestCondition.any())
.build();
@@ -1227,14 +1110,6 @@
TestCondition.tools(DexTool.DX, DexTool.NONE), TestCondition.R8_COMPILER))
// Produces wrong output when compiled in release mode, which we cannot express.
.put("015-switch", TestCondition.match(TestCondition.runtimes(DexVm.Version.V4_0_4)))
- // To prevent "Dex file with version '37' cannot be used with min sdk level '21'", which
- // would otherwise happen because D8 passes through the DEX code from DX.
- .put(
- "800-smali",
- TestCondition.match(
- TestCondition.tools(DexTool.DX),
- TestCondition.D8_COMPILER,
- TestCondition.runtimesFrom(DexVm.Version.V5_1_1)))
.build();
public static List<String> requireInliningToBeDisabled =
@@ -2548,8 +2423,7 @@
expectException(CompilationError.class);
throw new CompilationError(e.getMessage(), e);
}
- System.err.println("Should have failed R8/D8 compilation with a CompilationError.");
- return;
+ throw new RuntimeException("Should have failed R8/D8 compilation with a CompilationError.");
} else if (specification.failsWithX8) {
expectException(Throwable.class);
executeCompilerUnderTest(
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
index 3facf5f..51acd54 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMethodVerboseStackTrace.java
@@ -40,16 +40,11 @@
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 2 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.c(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
+ " main(java.lang.String[])(Main.java)",
- "\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
- + " main(java.lang.String[],com.android.Bar)(Main.java)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.c(Main.java)",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(com.android.Bar)(Main.java)",
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void main(com.android.Bar)(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.com.android.Foo"
+ " main(java.lang.String[],com.android.Bar)(Main.java)");
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
index 484fb5f..2e2a527 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousMissingLineStackTrace.java
@@ -27,121 +27,28 @@
return Arrays.asList(
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java:7)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java:7)",
" at com.android.tools.r8.R8.bar(R8.java:8)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java:8)",
" at com.android.tools.r8.R8.main(Unknown Source)",
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java:7)",
- " at com.android.tools.r8.R8.bar(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java:7)",
- " at com.android.tools.r8.R8.foo(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java:7)",
- " at com.android.tools.r8.R8.foo(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:7)",
- " at com.android.tools.r8.R8.bar(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:7)",
- " at com.android.tools.r8.R8.bar(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:7)",
- " at com.android.tools.r8.R8.foo(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:7)",
- " at com.android.tools.r8.R8.foo(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java:9)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java:9)",
" ... 42 more");
}
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 8 ambiguous stack traces.",
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
" at com.android.tools.r8.R8.main(Unknown Source)",
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:7)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java:9)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:7)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:8)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java:9)",
" ... 42 more");
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
index f6704a4..a5241a8 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousStackTrace.java
@@ -27,121 +27,28 @@
return Arrays.asList(
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java)",
" at com.android.tools.r8.R8.bar(R8.java)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java)",
" at com.android.tools.r8.R8.main(Unknown Source)",
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java)",
" ... 42 more");
}
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 8 ambiguous stack traces.",
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.main(Unknown Source)",
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
" ... 42 more");
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
index 4015e0e..51a9249 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithMultipleLineMappingsStackTrace.java
@@ -38,16 +38,11 @@
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 3 ambiguous stack traces.",
"java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
- "<OR> java.lang.IndexOutOfBoundsException",
- "\tat java.util.ArrayList.get(ArrayList.java:411)",
- "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:11)",
- "<OR> java.lang.IndexOutOfBoundsException",
- "\tat java.util.ArrayList.get(ArrayList.java:411)",
- "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:12)");
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:11)",
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:12)");
}
@Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
index 212976f..c9ed69c 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/AmbiguousWithSignatureStackTrace.java
@@ -39,19 +39,12 @@
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 4 ambiguous stack traces.",
"java.lang.IndexOutOfBoundsException",
"\tat java.util.ArrayList.get(ArrayList.java:411)",
"\tat com.android.tools.r8.Internal.boolean foo(int,int)(Internal.java:13)",
- "<OR> java.lang.IndexOutOfBoundsException",
- "\tat java.util.ArrayList.get(ArrayList.java:411)",
- "\tat com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
- "<OR> java.lang.IndexOutOfBoundsException",
- "\tat java.util.ArrayList.get(ArrayList.java:411)",
- "\tat com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java:12)",
- "<OR> java.lang.IndexOutOfBoundsException",
- "\tat java.util.ArrayList.get(ArrayList.java:411)",
- "\tat com.android.tools.r8.Internal.void foo(int,int)(Internal.java:11)");
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int)(Internal.java:10)",
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int,boolean)(Internal.java:12)",
+ "\t<OR> at com.android.tools.r8.Internal.void foo(int,int)(Internal.java:11)");
}
@Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java
index b4efedd..ef9853e 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/DifferentLineNumberSpanStackTrace.java
@@ -29,24 +29,19 @@
return Arrays.asList(
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:42)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:43)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:44)");
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.method1(Main.java:43)",
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.method1(Main.java:44)");
}
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 3 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " method1(java.lang.String)(Main.java:42)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " method1(java.lang.String)(Main.java:43)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " method1(java.lang.String)(Main.java:44)");
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
index a961d7b..b1a31db 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleLinesNoLineNumberStackTrace.java
@@ -31,20 +31,17 @@
return Arrays.asList(
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java)",
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.method1(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.main(Main.java)");
}
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 2 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main(java.lang.String[])(Main.java:153)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " method1(java.lang.String)(Main.java:42)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main(java.lang.String[])(Main.java:28)");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java
index a4b4fa3..93a3567 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/MultipleOriginalLinesNoLineNumberStackTrace.java
@@ -33,12 +33,10 @@
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 2 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " method1(java.lang.String)(Main.java:42)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " method1(java.lang.String)(Main.java:43)");
}
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
index 273b002..d444bcf 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/NoObfuscatedLineNumberWithOverrideTest.java
@@ -38,11 +38,7 @@
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
"\tat com.android.tools.r8.naming.retrace.Main.overload1(Main.java)",
- "\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java)",
- "\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:3)",
- "\tat com.android.tools.r8.naming.retrace.Main.overload2(Main.java)",
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.overload2(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.definedOverload(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.mainPC(Main.java:42)");
}
@@ -50,32 +46,13 @@
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 4 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
"\tat com.android.tools.r8.naming.retrace.Main.void overload1()(Main.java:7)",
- "\tat com.android.tools.r8.naming.retrace.Main.void definedOverload()(Main.java:7)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " mainPC(java.lang.String[])(Main.java:42)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
- "\tat com.android.tools.r8.naming.retrace.Main.void overload1()(Main.java:7)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " definedOverload(java.lang.String)(Main.java:11)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " mainPC(java.lang.String[])(Main.java:42)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " overload2(java.lang.String)(Main.java:11)",
"\tat com.android.tools.r8.naming.retrace.Main.void definedOverload()(Main.java:7)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " mainPC(java.lang.String[])(Main.java:42)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String)(Main.java:3)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " overload2(java.lang.String)(Main.java:11)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " definedOverload(java.lang.String)(Main.java:11)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " mainPC(java.lang.String[])(Main.java:42)");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
index 81587cf..ea9ada4 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/OutsideLineRangeStackTraceTest.java
@@ -43,18 +43,12 @@
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 2 ambiguous stack traces.",
"java.io.IOException: INVALID_SENDER",
"\tat some.other.Class.void method1()(Class.java:42)",
"\tat some.other.Class.void method1()(Class.java:42)",
"\tat some.Class.a(Class.java:27)",
- // TODO(b/202055473): Could emit range 11-13.
"\tat some.Class.void method2()(Class.java)",
- "<OR> java.io.IOException: INVALID_SENDER",
- "\tat some.other.Class.void method1()(Class.java:42)",
- "\tat some.other.Class.void method1()(Class.java:42)",
- "\tat some.Class.a(Class.java:27)",
- "\tat some.Class.void method2()(Class.java:10)");
+ "\t<OR> at some.Class.void method2()(Class.java:10)");
}
@Override
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
index c30fdbf..914cc4b 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/SingleLineNoLineNumberStackTrace.java
@@ -42,20 +42,13 @@
"\tat com.android.tools.r8.naming.retrace.Main.method2(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.main2(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.main3(Main.java)",
- "\tat com.android.tools.r8.naming.retrace.Main.main4(Main.java:153)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.method1(Main.java:42)",
- "\tat com.android.tools.r8.naming.retrace.Main.main(Main.java:28)",
- "\tat com.android.tools.r8.naming.retrace.Main.method2(Main.java)",
- "\tat com.android.tools.r8.naming.retrace.Main.main2(Main.java)",
- "\tat com.android.tools.r8.naming.retrace.Main.method3(Main.java)",
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.method3(Main.java)",
"\tat com.android.tools.r8.naming.retrace.Main.main4(Main.java:153)");
}
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 6 ambiguous stack traces.",
"Exception in thread \"main\" java.lang.NullPointerException",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " method1(java.lang.String)(Main.java:42)",
@@ -64,67 +57,17 @@
+ " method2(java.lang.String)(Main.java:42)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main2(java.lang.String[])(Main.java:29)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main3(java.lang.String[])(Main.java:30)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main4(java.lang.String[])(Main.java:153)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method1(java.lang.String)(Main.java:42)",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method2(java.lang.String)(Main.java:42)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main2(java.lang.String[])(Main.java:29)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method3(java.lang.String)(Main.java:72)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main4(java.lang.String[])(Main.java:153)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method1(java.lang.String)(Main.java:42)",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " method2(java.lang.String)(Main.java:43)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main2(java.lang.String[])(Main.java:29)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main3(java.lang.String[])(Main.java:30)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main4(java.lang.String[])(Main.java:153)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method1(java.lang.String)(Main.java:42)",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method2(java.lang.String)(Main.java:43)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main2(java.lang.String[])(Main.java:29)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method3(java.lang.String)(Main.java:72)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main4(java.lang.String[])(Main.java:153)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method1(java.lang.String)(Main.java:42)",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " method2(java.lang.String)(Main.java:44)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main2(java.lang.String[])(Main.java:29)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main3(java.lang.String[])(Main.java:30)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main4(java.lang.String[])(Main.java:153)",
- "<OR> Exception in thread \"main\" java.lang.NullPointerException",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method1(java.lang.String)(Main.java:42)",
- "\tat com.android.tools.r8.naming.retrace.Main.void main(java.lang.String[])(Main.java:28)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " method2(java.lang.String)(Main.java:44)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
- + " main2(java.lang.String[])(Main.java:29)",
- "\tat com.android.tools.r8.naming.retrace.Main.void"
+ "\t<OR> at com.android.tools.r8.naming.retrace.Main.void"
+ " method3(java.lang.String)(Main.java:72)",
"\tat com.android.tools.r8.naming.retrace.Main.void"
+ " main4(java.lang.String[])(Main.java:153)");
diff --git a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
index 3697b0c..a55423e 100644
--- a/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
+++ b/src/test/java/com/android/tools/r8/retrace/stacktraces/UnknownSourceStackTrace.java
@@ -27,121 +27,28 @@
return Arrays.asList(
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java)",
" at com.android.tools.r8.R8.bar(R8.java)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java)",
" at com.android.tools.r8.R8.main(Unknown Source)",
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.bar(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.foo(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.foo(R8.java)",
+ " <OR> at com.android.tools.r8.R8.foo(R8.java)",
" ... 42 more");
}
@Override
public List<String> retraceVerboseStackTrace() {
return Arrays.asList(
- "There are 8 ambiguous stack traces.",
"com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
" at com.android.tools.r8.R8.main(Unknown Source)",
"Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
" at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void bar(int,int)(R8.java)",
- " ... 42 more",
- "<OR> com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
- " at com.android.tools.r8.R8.main(Unknown Source)",
- "Caused by: com.android.tools.r8.CompilationException: foo[parens](Source:3)",
- " at com.android.tools.r8.R8.void foo(int)(R8.java)",
+ " <OR> at com.android.tools.r8.R8.void foo(int)(R8.java)",
" ... 42 more");
}
diff --git a/tools/create_art_tests.py b/tools/create_art_tests.py
index 978b086..a64fe71 100755
--- a/tools/create_art_tests.py
+++ b/tools/create_art_tests.py
@@ -11,7 +11,6 @@
'android', 'tools', 'r8', 'art')
TEST_DIR = os.path.join('tests', '2017-10-04', 'art')
TOOLCHAINS = [
- ("dx", os.path.join(TEST_DIR, "dx")),
("none", os.path.join(TEST_DIR, "dx")),
]
TOOLS = ["r8", "d8", "r8cf"]