Refactor Kotlin tests.
* com.android.tools.r8.KotlinTestBase
- the top-level abstraction that defines where to load .kt/.java jar.
Some recently added tests that exercise high-level behavior,
such as stripping off @Metadata if not used, reprocessing lambda groups,
etc., have been using this.
* com.android.tools.r8.kotlin.AbstractR8KotlinTestBase
- with utils that check if certain items are kept, inlined, removed
as expected.
This existing base class has been used for testing expected behaviors
of Kotlin-specific optimizations, such as class inliner, staticizer,
Intrinsics inlining, etc.
* com.android.tools.r8.naming.AbstractR8KotlinNamingTestBase
- extends AbstractR8KotlinTestBase with renaming-related utils.
------
This CL also adds very basic renaming tests for Kotlin Intrinsics null
checks. While investigating b/126056766, observed some utils in
Intrinsics that receive class/member identifiers to check if known-to-
return-non-null methods indeed returned non-null values or if known-to-
be-non-null fields are indeed non-null. Those are added only for Java
libraries, which we don't rename. Thus, no need to rename such
identifiers. Only tested non-pinned items are all renamed as expected.
Change-Id: I282d03024d336941506703f171ef8695b9ca23eb
diff --git a/src/test/kotlinR8TestResources/intrinsics_identifiers/example1.kt b/src/test/kotlinR8TestResources/intrinsics_identifiers/example1.kt
new file mode 100644
index 0000000..4409232
--- /dev/null
+++ b/src/test/kotlinR8TestResources/intrinsics_identifiers/example1.kt
@@ -0,0 +1,17 @@
+// Copyright (c) 2019, 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 intrinsics_identifiers
+
+fun main(args: Array<String>) {
+ val instance = ToBeRenamedClass()
+ println(instance.toBeRenamedField)
+ println(instance.toBeRenamedMethod("arg1"))
+
+ if (instance.toBeRenamedField.equals("arg2")) {
+ instance.updateField("arg3")
+ println(instance.toBeRenamedField)
+ println(instance.toBeRenamedMethod("arg4"))
+ }
+}
+