diff options
author | kmb <kmb@google.com> | 2018-04-13 16:51:42 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-13 16:52:58 -0700 |
commit | f477e860e3d5b5cb12ae572edbeb0e683aa112d3 (patch) | |
tree | 6c3485793c56698acac633fa2126204cbf39a205 /src/java_tools | |
parent | b9240df02a56bf4c6b52c1ab4424c248b49036bd (diff) |
ignore made-up java/lang/Synthetic annotation that ASM sometimes inserts
RELNOTES: None.
PiperOrigin-RevId: 192844304
Diffstat (limited to 'src/java_tools')
6 files changed, 31 insertions, 4 deletions
diff --git a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java index 64d2c7ff85..07925c38c1 100644 --- a/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java +++ b/src/java_tools/import_deps_checker/java/com/google/devtools/build/importdeps/DepsCheckerClassVisitor.java @@ -288,6 +288,9 @@ public class DepsCheckerClassVisitor extends ClassVisitor { @Override public AnnotationVisitor visitParameterAnnotation(int parameter, String desc, boolean visible) { + if ("Ljava/lang/Synthetic;".equals(desc)) { + return null; // ASM sometimes makes up this annotation, so we can ignore it (b/78024300) + } checkDescriptor(desc); return defaultAnnotationChecker; } diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/DepsCheckerClassVisitorTest.java b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/DepsCheckerClassVisitorTest.java index 089e3c2e6d..3e25134700 100644 --- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/DepsCheckerClassVisitorTest.java +++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/DepsCheckerClassVisitorTest.java @@ -107,7 +107,10 @@ public class DepsCheckerClassVisitorTest extends AbstractClassCacheTest { private ResultCollector getResultCollector(Path... classpath) throws IOException { ImmutableList<String> clientClasses = - ImmutableList.of(PACKAGE_NAME + "Client", PACKAGE_NAME + "Client$NestedAnnotation"); + ImmutableList.of( + PACKAGE_NAME + "Client", + PACKAGE_NAME + "Client$NestedAnnotation", + PACKAGE_NAME + "Client$InnerClassWithSyntheticConstructorParam"); ResultCollector resultCollector = new ResultCollector(); try (ClassCache cache = new ClassCache(ImmutableList.copyOf(classpath), ImmutableList.of()); ZipFile zipFile = new ZipFile(clientJar.toFile())) { diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt index da7aebba5b..767c7dbfe2 100644 --- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt +++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.txt @@ -27,6 +27,9 @@ Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata. Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$EnumTest missing ancestor: java.lang.Enum resolution failure path: java.lang.Enum +Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$InnerClassWithSyntheticConstructorParam + missing ancestor: java.lang.Object + resolution failure path: java.lang.Object Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library missing ancestor: java.lang.Object resolution failure path: java.lang.Object @@ -106,5 +109,5 @@ Missing member 'name' in class com.google.devtools.build.importdeps.testdata.Cli Missing member 'ordinal' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=ordinal, descriptor=()I ===Total=== missing=20 -incomplete=27 +incomplete=28 missing_members=2 diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt index dcc20af897..b6bf8dc11a 100644 --- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt +++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.stderr.warning.txt @@ -27,6 +27,9 @@ Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata. Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$EnumTest missing ancestor: java.lang.Enum resolution failure path: java.lang.Enum +Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$InnerClassWithSyntheticConstructorParam + missing ancestor: java.lang.Object + resolution failure path: java.lang.Object Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library missing ancestor: java.lang.Object resolution failure path: java.lang.Object @@ -106,5 +109,5 @@ Missing member 'name' in class com.google.devtools.build.importdeps.testdata.Cli Missing member 'ordinal' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=ordinal, descriptor=()I ===Total=== missing=20 -incomplete=27 +incomplete=28 missing_members=2 diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.txt b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.txt index c7b0c4959f..ecf3822fb1 100644 --- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.txt +++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/golden_bootclasspath_missing.txt @@ -24,6 +24,9 @@ Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata. Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$EnumTest missing ancestor: java.lang.Enum resolution failure path: java.lang.Enum +Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Client$InnerClassWithSyntheticConstructorParam + missing ancestor: java.lang.Object + resolution failure path: java.lang.Object Incomplete ancestor classpath for com.google.devtools.build.importdeps.testdata.Library missing ancestor: java.lang.Object resolution failure path: java.lang.Object @@ -103,5 +106,5 @@ Missing member 'name' in class com.google.devtools.build.importdeps.testdata.Cli Missing member 'ordinal' in class com.google.devtools.build.importdeps.testdata.Client$EnumTest : name=ordinal, descriptor=()I ===Total=== missing=20 -incomplete=27 +incomplete=28 missing_members=2 diff --git a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/Client.java b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/Client.java index 724ca82dbe..db08176af1 100644 --- a/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/Client.java +++ b/src/java_tools/import_deps_checker/javatests/com/google/devtools/build/importdeps/testdata/Client.java @@ -95,4 +95,16 @@ public class Client<@TypeAnnotation T> extends Library B, C } + + private class InnerClassWithSyntheticConstructorParam { + // This constructor has a synthetic parameter for the outer object (b/78024300). If there are + // parameter annotations then ASM generates "java/lang/Synthetic" annotations on the synthetic + // parameters, but java/lang/Synthetic doesn't exist! + InnerClassWithSyntheticConstructorParam(@ParameterAnnotation(position = 2) int p) {} + + @Override + public String toString() { + return String.valueOf(field); + } + } } |