From 46d8182c5c6cb6616586a7ba8466f88ef2fee16a Mon Sep 17 00:00:00 2001 From: kmb Date: Mon, 12 Mar 2018 14:46:18 -0700 Subject: Minor fixes to KeepScanner tool: - use Guava to read zip entries - Fix keep rules emitted for constructors RELNOTES: None. PiperOrigin-RevId: 188781547 GitOrigin-RevId: 8e038b04e068285ba02b7934a7df25803802daff Change-Id: Ifc99978b041f9c1c97ff707aafac90c59187c6c8 --- .../devtools/build/android/desugar/scan/KeepScanner.java | 12 +++++++----- .../devtools/build/android/desugar/scan/testdata_golden.txt | 10 +++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/java/com/google/devtools/build/android/desugar/scan/KeepScanner.java b/java/com/google/devtools/build/android/desugar/scan/KeepScanner.java index 5892bf5..b347c7a 100644 --- a/java/com/google/devtools/build/android/desugar/scan/KeepScanner.java +++ b/java/com/google/devtools/build/android/desugar/scan/KeepScanner.java @@ -15,11 +15,11 @@ package com.google.devtools.build.android.desugar.scan; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; -import static com.google.common.base.Preconditions.checkState; import static java.nio.file.StandardOpenOption.CREATE; import static java.util.Comparator.comparing; import com.google.common.collect.ImmutableSet; +import com.google.common.io.ByteStreams; import com.google.devtools.build.android.Converters.ExistingPathConverter; import com.google.devtools.build.android.Converters.PathConverter; import com.google.devtools.common.options.Option; @@ -140,18 +140,20 @@ class KeepScanner { private static byte[] readFully(ZipFile zip, ZipEntry entry) { byte[] result = new byte[(int) entry.getSize()]; try (InputStream content = zip.getInputStream(entry)) { - checkState(content.read(result) == result.length); - checkState(content.read() == -1); + ByteStreams.readFully(content, result); + return result; } catch (IOException e) { throw new IOError(e); } - return result; } private static CharSequence toKeepDescriptor(KeepReference member) { StringBuilder result = new StringBuilder(); if (member.isMethodReference()) { - result.append("*** ").append(member.name()).append("("); + if (!"".equals(member.name())) { + result.append("*** "); + } + result.append(member.name()).append("("); // Ignore return type as it's unique in the source language boolean first = true; for (Type param : Type.getMethodType(member.desc()).getArgumentTypes()) { diff --git a/test/java/com/google/devtools/build/android/desugar/scan/testdata_golden.txt b/test/java/com/google/devtools/build/android/desugar/scan/testdata_golden.txt index e4509b4..35744ce 100644 --- a/test/java/com/google/devtools/build/android/desugar/scan/testdata_golden.txt +++ b/test/java/com/google/devtools/build/android/desugar/scan/testdata_golden.txt @@ -2,7 +2,7 @@ *** println(java.lang.String); } -keep class java.lang.AssertionError { - *** (); + (); } -keep class java.lang.Class { *** cast(java.lang.Object); @@ -11,7 +11,7 @@ -keep class java.lang.IndexOutOfBoundsException { } -keep class java.lang.Object { - *** (); + (); } -keep class java.lang.String { } @@ -21,8 +21,8 @@ -keep class java.util.AbstractList { } -keep class java.util.ArrayList { - *** (); - *** (int); + (); + (int); *** add(java.lang.Object); *** get(int); *** iterator(); @@ -30,7 +30,7 @@ -keep class java.util.Collection { } -keep class java.util.Date { - *** (long); + (long); *** getTime(); } -keep class java.util.Iterator { -- cgit v1.2.3