Suppress StringBuilder/StringBuffer constructor failures in jctf
These fail because we remove new instance calls that would throw
Bug: 133745205
Change-Id: Ideeccf63887645ef7523ceb36acedf7ac8445248
diff --git a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
index 34955b6..843ecf4 100644
--- a/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
+++ b/src/test/java/com/android/tools/r8/JctfTestSpecifications.java
@@ -1740,6 +1740,25 @@
.put("lang.reflect.Field.toGenericString.Field_toGenericString_A01", cf())
.build(); // end of failuresToTriage
+
+ public static final Multimap<String, TestCondition> bugs =
+ new ImmutableListMultimap.Builder<String, TestCondition>()
+ // The following StringBuffer/StringBuilder tests fails because we remove, e.g.,
+ // new StringBuffer(-5) if it is dead code (but it should trow), see b/133745205
+ .put("lang.StringBuffer.ConstructorLjava_lang_String.StringBuffer_Constructor_A02",
+ match(R8_COMPILER))
+ .put("lang.StringBuffer.ConstructorLjava_lang_CharSequence.StringBuffer_Constructor_A02",
+ match(R8_COMPILER))
+ .put("lang.StringBuffer.ConstructorI.StringBuffer_Constructor_A02",
+ match(R8_COMPILER))
+ .put("lang.StringBuilder.ConstructorI.StringBuilder_Constructor_A02",
+ match(R8_COMPILER))
+ .put("lang.StringBuilder.ConstructorLjava_lang_CharSequence.StringBuilder_Constructor_A02",
+ match(R8_COMPILER))
+ .put("lang.StringBuilder.ConstructorLjava_lang_String.StringBuilder_Constructor_A02 ",
+ match(R8_COMPILER))
+ .build();
+
public static final Multimap<String, TestCondition> flakyWhenRun =
new ImmutableListMultimap.Builder<String, TestCondition>()
.put("lang.Object.notifyAll.Object_notifyAll_A03", anyDexVm())
@@ -1945,6 +1964,9 @@
if (testMatch(failuresToTriage, name, compilerUnderTest, runtime, compilationMode)) {
outcome = Outcome.FAILS_WHEN_RUN;
}
+ if (testMatch(bugs, name, compilerUnderTest, runtime, compilationMode)) {
+ outcome = Outcome.FAILS_WHEN_RUN;
+ }
if (testMatch(timeoutsWhenRun, name, compilerUnderTest, runtime, compilationMode)) {
assert outcome == null;
outcome = Outcome.TIMEOUTS_WHEN_RUN;
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 18a6e69..2b32d66 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -2133,7 +2133,9 @@
try {
runJctfTestDoRunOnArt(fileNames, specification, fullClassName, vmSpec.vm.asDex().getVm());
} catch (AssertionError e) {
- vmErrors.addFailedOnRunError(CompilerUnderTest.R8, vmSpec.vm, e);
+ if (!specification.failsOnRun) {
+ vmErrors.addFailedOnRunError(CompilerUnderTest.R8, vmSpec.vm, e);
+ }
}
}
return vmErrors;