Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
Thank you for the report and the code causing the issue. I have landed a reproduction which shows that the code thrown an ArrayIndexOutOfBoundsException
from the last bitSet.toByteArray()[0]
when not processed by R8.
el...@google.com <el...@google.com>
na...@google.com <na...@google.com> #3
Project: r8
Branch: main
Author: Søren Gjesse <
Link:
Add reproduction of
Expand for full commit details
Add reproduction of issue 391417819
Bug: b/391417819
Change-Id: I37eb909c100104fadeb895bf5d930f4f54e94ba0
Files:
- A
src/test/java/com/android/tools/r8/B391417819Repro.java
Hash: bf9b1962052bf91689120a09deded518e37862a2
Date: Wed Jan 22 09:41:15 2025
sp...@gmail.com <sp...@gmail.com> #4
deleted
ap...@google.com <ap...@google.com> #5
I'm really sorry, please use the source code below:
public class R8Test {
public byte[] toBytes(boolean on) {
byte[] bytes = new byte[3];
bytes[0] = 1;
BitSet bits = new BitSet(8);
byte[] byteArray = bits.toByteArray();
if (byteArray != null && byteArray.length >= 1) {
bytes[1] = bits.toByteArray()[0];
}
BitSet bitSet = new BitSet(8);
byte[] byteArray2 = bits.toByteArray();
if (byteArray2 != null && byteArray2.length >= 1) {
bytes[2] = bitSet.toByteArray()[0];
}
return bytes;
}
}
pr...@google.com <pr...@google.com> #6
Thank you for the update. Most likely the initial source code will still be sufficient to fix the issue.
Description
With the changes for XPoet to build both JavaPoet and KotlinPoet specs it means that when Room is processing function that lead to invalid JVM method names, it will cause the JavaPoet side to throw an exception even if the
XProcessingConfig.excludeMethodsWithInvalidJvmSourceNames
is turned ON for Kotlin code generation.An example case where Room will encounter these is with
internal
functions that it needs to override.