Move EmptyRecordTest to java17 package
Bug: b/363926134
Change-Id: I0769d4ac9f200779b6caaca08cd1ff92d76043e6
diff --git a/src/test/examplesJava17/records/EmptyRecord.java b/src/test/examplesJava17/records/EmptyRecord.java
deleted file mode 100644
index 5d16e44..0000000
--- a/src/test/examplesJava17/records/EmptyRecord.java
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package records;
-
-public class EmptyRecord {
-
- record Empty() {}
-
- public static void main(String[] args) {
- System.out.println(new Empty());
- }
-}
diff --git a/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java b/src/test/examplesJava17/records/EmptyRecordTest.java
similarity index 78%
rename from src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
rename to src/test/examplesJava17/records/EmptyRecordTest.java
index 9c88c93..963a514 100644
--- a/src/test/java/com/android/tools/r8/desugar/records/EmptyRecordTest.java
+++ b/src/test/examplesJava17/records/EmptyRecordTest.java
@@ -2,10 +2,11 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.desugar.records;
+package records;
import static org.junit.Assume.assumeFalse;
+import com.android.tools.r8.JdkClassFileProvider;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestRuntime.CfVm;
@@ -21,13 +22,10 @@
@RunWith(Parameterized.class)
public class EmptyRecordTest extends TestBase {
- private static final String RECORD_NAME = "EmptyRecord";
- private static final byte[][] PROGRAM_DATA = RecordTestUtils.getProgramData(RECORD_NAME);
- private static final String MAIN_TYPE = RecordTestUtils.getMainType(RECORD_NAME);
private static final String EXPECTED_RESULT_D8 = StringUtils.lines("Empty[]");
private static final String EXPECTED_RESULT_R8_MINIFICATION = StringUtils.lines("a[]");
private static final String EXPECTED_RESULT_R8_NO_MINIFICATION =
- StringUtils.lines("EmptyRecord$Empty[]");
+ StringUtils.lines("EmptyRecordTest$Empty[]");
@Parameter(0)
public boolean enableMinification;
@@ -55,8 +53,8 @@
assumeFalse("Only applicable for R8", enableMinification);
parameters.assumeJvmTestParameters();
testForJvm(parameters)
- .addProgramClassFileData(PROGRAM_DATA)
- .run(parameters.getRuntime(), MAIN_TYPE)
+ .addInnerClassesAndStrippedOuter(getClass())
+ .run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutput(EXPECTED_RESULT_D8);
}
@@ -64,10 +62,10 @@
public void testD8() throws Exception {
assumeFalse("Only applicable for R8", enableMinification || enableRepackaging);
testForD8(parameters.getBackend())
- .addProgramClassFileData(PROGRAM_DATA)
+ .addInnerClassesAndStrippedOuter(getClass())
.setMinApi(parameters)
.compile()
- .run(parameters.getRuntime(), MAIN_TYPE)
+ .run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutput(EXPECTED_RESULT_D8);
}
@@ -76,11 +74,11 @@
parameters.assumeDexRuntime();
parameters.assumeR8TestParameters();
testForR8(parameters.getBackend())
- .addProgramClassFileData(PROGRAM_DATA)
- .addKeepMainRule(MAIN_TYPE)
+ .addInnerClassesAndStrippedOuter(getClass())
+ .addKeepMainRule(TestClass.class)
.applyIf(
parameters.isCfRuntime(),
- testBuilder -> testBuilder.addLibraryFiles(RecordTestUtils.getJdk15LibraryFiles(temp)))
+ testBuilder -> testBuilder.addLibraryProvider(JdkClassFileProvider.fromSystemJdk()))
.addDontObfuscateUnless(enableMinification)
.applyIf(enableRepackaging, b -> b.addKeepRules("-repackageclasses p"))
.setMinApi(parameters)
@@ -88,10 +86,19 @@
.applyIf(
parameters.isCfRuntime(),
compileResult -> compileResult.inspect(RecordTestUtils::assertRecordsAreRecords))
- .run(parameters.getRuntime(), MAIN_TYPE)
+ .run(parameters.getRuntime(), TestClass.class)
.assertSuccessWithOutput(
enableMinification
? EXPECTED_RESULT_R8_MINIFICATION
: EXPECTED_RESULT_R8_NO_MINIFICATION);
}
+
+ record Empty() {}
+
+ public class TestClass {
+
+ public static void main(String[] args) {
+ System.out.println(new Empty());
+ }
+ }
}
diff --git a/src/test/examplesJava17/records/RecordTestUtils.java b/src/test/examplesJava17/records/RecordTestUtils.java
new file mode 100644
index 0000000..6c501c0
--- /dev/null
+++ b/src/test/examplesJava17/records/RecordTestUtils.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package records;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.codeinspector.CodeInspector;
+import com.android.tools.r8.utils.codeinspector.FoundClassSubject;
+
+public class RecordTestUtils {
+
+ public static void assertRecordsAreRecords(CodeInspector inspector) {
+ for (FoundClassSubject clazz : inspector.allClasses()) {
+ if (clazz.getDexProgramClass().superType.toString().equals("java.lang.Record")) {
+ assertTrue(clazz.getDexProgramClass().isRecord());
+ }
+ }
+ }
+
+ public static void assertNoJavaLangRecord(CodeInspector inspector, TestParameters parameters) {
+ if (parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.V)) {
+ assertFalse(inspector.clazz("java.lang.RecordTag").isPresent());
+ } else {
+ assertFalse(inspector.clazz("java.lang.Record").isPresent());
+ }
+ }
+}