Also test for DexItemBasedConstString in IdentifierNameStringMarker
Change-Id: I574496de03bdfd3fb313ddeca3fad15984609836
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
index 3964f76..87f4c10 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
@@ -205,6 +205,8 @@
}
int identifierPosition = getIdentifierPositionInArguments(invoke);
+ assert identifierPosition >= 0;
+
Value in = invoke.arguments().get(identifierPosition);
if (in.definition.isDexItemBasedConstString()) {
return iterator;
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 37ac36b..291be66 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringUtils.java
@@ -249,8 +249,8 @@
static int getPositionOfFirstConstString(Instruction instruction) {
List<Value> inValues = instruction.inValues();
for (int i = 0; i < inValues.size(); i++) {
- Value value = inValues.get(i);
- if (value.getAliasedValue().isConstString()) {
+ Value value = inValues.get(i).getAliasedValue();
+ if (value.isConstString() || value.isDexItemBasedConstString()) {
return i;
}
}
diff --git a/src/test/java/com/android/tools/r8/internal/proto/Proto2ShrinkingTest.java b/src/test/java/com/android/tools/r8/internal/proto/Proto2ShrinkingTest.java
index 1f27829..565c3e0 100644
--- a/src/test/java/com/android/tools/r8/internal/proto/Proto2ShrinkingTest.java
+++ b/src/test/java/com/android/tools/r8/internal/proto/Proto2ShrinkingTest.java
@@ -33,6 +33,8 @@
.addProgramFiles(PROTO2_EXAMPLES_JAR, PROTO2_PROTO_JAR, PROTOBUF_LITE_JAR)
.addKeepMainRule("proto2.TestClass")
.addKeepRules(
+ // TODO(b/112437944): Fix -identifiernamestring support.
+ "-keepnames class * extends com.google.protobuf.GeneratedMessageLite",
// TODO(b/112437944): Use dex item based const strings for proto schema definitions.
"-keepclassmembernames class * extends com.google.protobuf.GeneratedMessageLite {",
" <fields>;",