Print at most one "missing enclosing-member annotation" warning.
R=ager
Bug: 38187714
Change-Id: I9c840600ef41ab478959c2187354fdda501629cf
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index ce38bc9..5718ec2 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -236,10 +236,7 @@
}
if (innerClassAnnotation != null) {
if (enclosingAnnotation == null) {
- System.out.println("InnerClass annotation is missing a corresponding EnclosingMember " +
- "annotation. This is typically a sign of using an outdated Java toolchain. To fix, " +
- "recompile the source with an updated toolchain. The InnerClass annotation will be " +
- "ignored.");
+ application.options.warningMissingEnclosingMember = true;
} else {
addAnnotation(innerClassAnnotation);
addAnnotation(enclosingAnnotation);
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 7d7ea46..541b622 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -102,12 +102,27 @@
public String warningInvalidParameterAnnotations = null;
+ public boolean warningMissingEnclosingMember = false;
+
public boolean printWarnings() {
boolean printed = false;
+ boolean printOutdatedToolchain = false;
if (warningInvalidParameterAnnotations != null) {
System.out.println("Warning: " + warningInvalidParameterAnnotations);
printed = true;
}
+ if (warningMissingEnclosingMember) {
+ System.out.println(
+ "Warning: InnerClass annotations are missing corresponding EnclosingMember annotations."
+ + " Such InnerClass annotations are ignored.");
+ printed = true;
+ printOutdatedToolchain = true;
+ }
+ if (printOutdatedToolchain) {
+ System.out.println(
+ "Some warnings are typically a sign of using an outdated Java toolchain."
+ + " To fix, recompile the source with an updated toolchain.");
+ }
return printed;
}