Merge commit 'e7de59a7f7b0f85b0718bb530878309e30dd05c1' into dev-release
diff --git a/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java b/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
index bd44c7b..af62c60 100644
--- a/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
+++ b/src/main/java/com/android/tools/r8/naming/ClassNameMapper.java
@@ -27,8 +27,6 @@
import com.google.common.io.CharSource;
import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -102,11 +100,6 @@
return new Builder();
}
- public static ClassNameMapper mapperFromInputStream(InputStream in) throws IOException {
- return mapperFromBufferedReader(
- new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8)), null);
- }
-
public static ClassNameMapper mapperFromFile(Path path) throws IOException {
return mapperFromFile(path, MISSING_FILE_IS_ERROR);
}
@@ -119,7 +112,7 @@
&& !path.toFile().exists()) {
return mapperFromString("");
}
- return mapperFromInputStream(Files.newInputStream(path));
+ return mapperFromBufferedReader(Files.newBufferedReader(path, StandardCharsets.UTF_8), null);
}
public static ClassNameMapper mapperFromString(String contents) throws IOException {
@@ -144,7 +137,7 @@
return mapperFromBufferedReader(reader, diagnosticsHandler, false);
}
- private static ClassNameMapper mapperFromBufferedReader(
+ public static ClassNameMapper mapperFromBufferedReader(
BufferedReader reader, DiagnosticsHandler diagnosticsHandler, boolean allowEmptyMappedRanges)
throws IOException {
try (ProguardMapReader proguardReader =
diff --git a/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java b/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
index 7e66ed3..81b7f30 100644
--- a/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
+++ b/src/main/java/com/android/tools/r8/retrace/ProguardMapProducer.java
@@ -5,26 +5,24 @@
package com.android.tools.r8.retrace;
import com.android.tools.r8.Keep;
-import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
+import java.io.StringReader;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
/** Interface for producing a string format of a mapping file. */
@Keep
public interface ProguardMapProducer {
- String get() throws IOException;
+ Reader get() throws IOException;
- static ProguardMapProducer fromReader(Reader reader) {
- return () -> {
- try (BufferedReader br = new BufferedReader(reader)) {
- StringBuilder sb = new StringBuilder();
- String line;
- while ((line = br.readLine()) != null) {
- sb.append(line).append('\n');
- }
- return sb.toString();
- }
- };
+ static ProguardMapProducer fromString(String proguardMapString) {
+ return () -> new StringReader(proguardMapString);
+ }
+
+ static ProguardMapProducer fromPath(Path path) {
+ return () -> Files.newBufferedReader(path, StandardCharsets.UTF_8);
}
}
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 813ae66..71d88c3 100644
--- a/src/main/java/com/android/tools/r8/retrace/Retrace.java
+++ b/src/main/java/com/android/tools/r8/retrace/Retrace.java
@@ -123,15 +123,7 @@
new StringDiagnostic(String.format("Could not find mapping file '%s'.", mappingPath)));
throw new RetraceAbortException();
}
- return () -> {
- try {
- return new String(Files.readAllBytes(path));
- } catch (IOException e) {
- diagnosticsHandler.error(
- new StringDiagnostic(String.format("Could not open mapping file '%s'.", mappingPath)));
- throw new RuntimeException(e);
- }
- };
+ return ProguardMapProducer.fromPath(Paths.get(mappingPath));
}
private static List<String> getStackTraceFromFile(
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/DirectClassNameMapperProguardMapProducer.java b/src/main/java/com/android/tools/r8/retrace/internal/DirectClassNameMapperProguardMapProducer.java
index db73155..b243ff5 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/DirectClassNameMapperProguardMapProducer.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/DirectClassNameMapperProguardMapProducer.java
@@ -6,13 +6,14 @@
import com.android.tools.r8.naming.ClassNameMapper;
import com.android.tools.r8.retrace.ProguardMapProducer;
+import java.io.BufferedReader;
public interface DirectClassNameMapperProguardMapProducer extends ProguardMapProducer {
ClassNameMapper getClassNameMapper();
@Override
- default String get() {
+ default BufferedReader get() {
throw new RuntimeException("Should not be called for DirectClassNameMapperProguardMapProducer");
}
}
diff --git a/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java b/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java
index d25afab..03f515b 100644
--- a/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java
+++ b/src/main/java/com/android/tools/r8/retrace/internal/RetracerImpl.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.retrace.InvalidMappingFileException;
import com.android.tools.r8.retrace.ProguardMapProducer;
import com.android.tools.r8.retrace.Retracer;
+import java.io.BufferedReader;
/** A default implementation for the retrace api using the ClassNameMapper defined in R8. */
public class RetracerImpl implements Retracer {
@@ -32,7 +33,8 @@
}
try {
ClassNameMapper classNameMapper =
- ClassNameMapper.mapperFromString(proguardMapProducer.get(), diagnosticsHandler, true);
+ ClassNameMapper.mapperFromBufferedReader(
+ new BufferedReader(proguardMapProducer.get()), diagnosticsHandler, true);
return new RetracerImpl(classNameMapper);
} catch (Throwable throwable) {
throw new InvalidMappingFileException(throwable);
diff --git a/src/test/java/com/android/tools/r8/cf/bootstrap/BootstrapCurrentEqualityTest.java b/src/test/java/com/android/tools/r8/cf/bootstrap/BootstrapCurrentEqualityTest.java
index f2660ef..b385fd6 100644
--- a/src/test/java/com/android/tools/r8/cf/bootstrap/BootstrapCurrentEqualityTest.java
+++ b/src/test/java/com/android/tools/r8/cf/bootstrap/BootstrapCurrentEqualityTest.java
@@ -24,6 +24,7 @@
import com.android.tools.r8.TestRuntime;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.ToolHelper.ProcessResult;
+import com.android.tools.r8.retrace.ProguardMapProducer;
import com.android.tools.r8.retrace.Retrace;
import com.android.tools.r8.retrace.RetraceCommand;
import com.android.tools.r8.utils.FileUtils;
@@ -146,17 +147,7 @@
RetraceCommand retraceCommand =
RetraceCommand.builder()
.setStackTrace(StringUtils.splitLines(processResult.stderr))
- .setProguardMapProducer(
- () -> {
- Path mappingFile = r8R8Release.getSecond();
- try {
- return new String(Files.readAllBytes(mappingFile));
- } catch (IOException e) {
- e.printStackTrace();
- throw new RuntimeException(
- "Could not read mapping file " + mappingFile.toString());
- }
- })
+ .setProguardMapProducer(ProguardMapProducer.fromPath(r8R8Release.getSecond()))
.setRetracedStackTraceConsumer(
retraced -> {
int expectedIndex = -1;
diff --git a/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java
index 949b787..441fd68 100644
--- a/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/internal/retrace/RetraceTests.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.internal.retrace.stacktraces.CronetStackTrace;
import com.android.tools.r8.internal.retrace.stacktraces.FinskyStackTrace;
import com.android.tools.r8.internal.retrace.stacktraces.VelvetStackTrace;
+import com.android.tools.r8.retrace.ProguardMapProducer;
import com.android.tools.r8.retrace.Retrace;
import com.android.tools.r8.retrace.RetraceCommand;
import com.android.tools.r8.retrace.stacktraces.StackTraceForTest;
@@ -183,7 +184,7 @@
TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
RetraceCommand retraceCommand =
RetraceCommand.builder(diagnosticsHandler)
- .setProguardMapProducer(stackTraceForTest::mapping)
+ .setProguardMapProducer(ProguardMapProducer.fromString(stackTraceForTest.mapping()))
.setStackTrace(stackTraceForTest.obfuscatedStackTrace())
.setRegularExpression(regularExpression)
.setRetracedStackTraceConsumer(
diff --git a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
index 34d84c4..74eeed2 100644
--- a/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
+++ b/src/test/java/com/android/tools/r8/naming/retrace/StackTrace.java
@@ -11,6 +11,7 @@
import com.android.tools.r8.SingleTestRunResult;
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.retrace.ProguardMapProducer;
import com.android.tools.r8.retrace.Retrace;
import com.android.tools.r8.retrace.RetraceCommand;
import com.android.tools.r8.utils.StringUtils;
@@ -311,7 +312,7 @@
Box box = new Box();
Retrace.run(
RetraceCommand.builder()
- .setProguardMapProducer(() -> map)
+ .setProguardMapProducer(ProguardMapProducer.fromString(map))
.setStackTrace(
stackTraceLines.stream()
.map(line -> line.originalLine)
diff --git a/src/test/java/com/android/tools/r8/retrace/DuplicateMappingsTest.java b/src/test/java/com/android/tools/r8/retrace/DuplicateMappingsTest.java
index bbe2d5b..22fcef4 100644
--- a/src/test/java/com/android/tools/r8/retrace/DuplicateMappingsTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/DuplicateMappingsTest.java
@@ -40,12 +40,12 @@
Retrace.run(
RetraceCommand.builder(diagnosticsHandler)
.setProguardMapProducer(
- () ->
+ ProguardMapProducer.fromString(
StringUtils.lines(
"com.android.tools.r8.retrace.SourceFileTest$ClassWithCustomFileName ->"
+ " com.android.tools.r8.retrace.a:",
"# {'id':'sourceFile','fileName':'foobarbaz.java'}",
- "# {'id':'sourceFile','fileName':'foobarbaz2.java'}"))
+ "# {'id':'sourceFile','fileName':'foobarbaz2.java'}")))
.setStackTrace(ImmutableList.of())
.setRetracedStackTraceConsumer(
strings -> {
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceFieldTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceFieldTests.java
index 3ff24fa..e07b776 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceFieldTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceFieldTests.java
@@ -20,6 +20,8 @@
private void runRetraceTest(MappingForTest mappingForTest, Consumer<Retracer> inspection) {
inspection.accept(
- Retracer.createDefault(mappingForTest::mapping, new TestDiagnosticMessagesImpl()));
+ Retracer.createDefault(
+ ProguardMapProducer.fromString(mappingForTest.mapping()),
+ new TestDiagnosticMessagesImpl()));
}
}
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
index 84bc19c..22d4f15 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceTests.java
@@ -120,7 +120,7 @@
NullStackTrace nullStackTrace = new NullStackTrace();
RetraceCommand retraceCommand =
RetraceCommand.builder(diagnosticsHandler)
- .setProguardMapProducer(nullStackTrace::mapping)
+ .setProguardMapProducer(ProguardMapProducer.fromString(nullStackTrace.mapping()))
.setStackTrace(nullStackTrace.obfuscatedStackTrace())
.setRetracedStackTraceConsumer(retraced -> fail())
.build();
@@ -257,7 +257,9 @@
private void inspectRetraceTest(
StackTraceForTest stackTraceForTest, Consumer<Retracer> inspection) {
inspection.accept(
- Retracer.createDefault(stackTraceForTest::mapping, new TestDiagnosticMessagesImpl()));
+ Retracer.createDefault(
+ ProguardMapProducer.fromString(stackTraceForTest.mapping()),
+ new TestDiagnosticMessagesImpl()));
}
private TestDiagnosticMessagesImpl runRetraceTest(StackTraceForTest stackTraceForTest)
@@ -298,7 +300,7 @@
TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
RetraceCommand retraceCommand =
RetraceCommand.builder(diagnosticsHandler)
- .setProguardMapProducer(stackTraceForTest::mapping)
+ .setProguardMapProducer(ProguardMapProducer.fromString(stackTraceForTest.mapping()))
.setStackTrace(stackTraceForTest.obfuscatedStackTrace())
.setRegularExpression(useRegExpParsing ? DEFAULT_REGULAR_EXPRESSION : null)
.setRetracedStackTraceConsumer(
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java b/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
index d217689..bcca0af 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceVerboseTests.java
@@ -63,7 +63,7 @@
TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
RetraceCommand retraceCommand =
RetraceCommand.builder(diagnosticsHandler)
- .setProguardMapProducer(stackTraceForTest::mapping)
+ .setProguardMapProducer(ProguardMapProducer.fromString(stackTraceForTest.mapping()))
.setStackTrace(stackTraceForTest.obfuscatedStackTrace())
.setRegularExpression(useRegExpParsing ? DEFAULT_REGULAR_EXPRESSION : null)
.setVerbose(true)
diff --git a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
index 333cc9f..40ec50f 100644
--- a/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
+++ b/src/test/java/com/android/tools/r8/retrace/StackTraceRegularExpressionParserTests.java
@@ -805,7 +805,7 @@
TestDiagnosticMessagesImpl diagnosticsHandler = new TestDiagnosticMessagesImpl();
RetraceCommand retraceCommand =
RetraceCommand.builder(diagnosticsHandler)
- .setProguardMapProducer(stackTraceForTest::mapping)
+ .setProguardMapProducer(ProguardMapProducer.fromString(stackTraceForTest.mapping()))
.setStackTrace(stackTraceForTest.obfuscatedStackTrace())
.setRetracedStackTraceConsumer(
retraced -> {