Build warning w/ TextPosition only if the instruction line is valid.
Bug: 72858955
Change-Id: Ie479b0baa64bea57c7fea0259e2c4b585d49407d
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
index 4f66be2..471b3f8 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
@@ -382,12 +382,16 @@
String kind = member instanceof DexField ? "field" : "method";
String originalMessage = original == null ? "what identifier string flows to "
: "what '" + original.toString() + "' refers to, which flows to ";
- reporter.warning(new StringDiagnostic(
+ String message =
"Cannot determine " + originalMessage + member.toSourceString()
+ " that is specified in -identifiernamestring rules."
+ " Thus, not all identifier strings flowing to that " + kind
- + " are renamed, which can cause resolution failures at runtime.",
- origin,
- new TextPosition(0L, instruction.getPosition().line, 1)));
+ + " are renamed, which can cause resolution failures at runtime.";
+ StringDiagnostic diagnostic =
+ instruction.getPosition().line >= 1
+ ? new StringDiagnostic(message, origin,
+ new TextPosition(0L, instruction.getPosition().line, 1))
+ : new StringDiagnostic(message, origin);
+ reporter.warning(diagnostic);
}
}