Parcelize: Improve testing infrarstructure

- Support newer android versions
- Allow testing against Java files using android APIs
- Update test expectations
- Auto-generate ParcelBoxTests
- Create tests for the JVM IR backend
This commit is contained in:
Steven Schäfer
2020-04-01 11:19:44 +02:00
committed by Alexander Udalov
parent d62b353ab5
commit 1f97486fdd
48 changed files with 2089 additions and 156 deletions
@@ -10,7 +10,7 @@ val robolectricClasspath by configurations.creating
val androidExtensionsRuntimeForTests by configurations.creating
dependencies {
testCompileOnly(intellijCoreDep()) { includeJars("intellij-core") }
testCompile(intellijCoreDep()) { includeJars("intellij-core") }
compileOnly(project(":compiler:util"))
compileOnly(project(":compiler:plugin-api"))
@@ -64,7 +64,7 @@ projectTest {
useAndroidJar()
doFirst {
systemProperty("androidExtensionsRuntime.classpath", androidExtensionsRuntimeForTests.asPath)
val androidPluginPath = File(intellijRootDir(), "plugins/android").canonicalPath
val androidPluginPath = File(intellijRootDir(), "plugins/android/lib").canonicalPath
systemProperty("ideaSdk.androidPlugin.path", androidPluginPath)
systemProperty("robolectric.classpath", robolectricClasspath.asPath)
}
@@ -25,9 +25,16 @@ import java.nio.file.Files
import java.util.concurrent.TimeUnit
abstract class AbstractParcelBoxTest : CodegenTestCase() {
protected companion object {
const val BASE_DIR = "plugins/android-extensions/android-extensions-compiler/testData/parcel/box"
val LIBRARY_KT = File(File(BASE_DIR).parentFile, "boxLib.kt")
companion object {
val LIBRARY_KT = File("plugins/android-extensions/android-extensions-compiler/testData/parcel/boxLib.kt")
private val androidPluginPath: String by lazy {
System.getProperty("ideaSdk.androidPlugin.path")?.takeIf { File(it).isDirectory }
?: throw RuntimeException("Unable to get a valid path from 'ideaSdk.androidPlugin.path' property, please point it to the Idea android plugin location")
}
val layoutlibJar: File by lazy { File(androidPluginPath, "layoutlib-26.5.0.2.jar") }
val layoutlibApiJar: File by lazy { File(androidPluginPath, "layoutlib-api-26.5.0.jar") }
private val JUNIT_GENERATED_TEST_CLASS_BYTES by lazy { constructSyntheticTestClass() }
private const val JUNIT_GENERATED_TEST_CLASS_FQNAME = "test.JunitTest"
@@ -43,7 +50,7 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() {
}
with(visitAnnotation("Lorg/robolectric/annotation/Config;", true)) {
visit("sdk", intArrayOf(19))
visit("sdk", intArrayOf(21))
visit("manifest", "--none")
visitEnd()
}
@@ -92,10 +99,6 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() {
}
}
override fun doTest(filePath: String) {
super.doTest(File(BASE_DIR, "$filePath.kt").absolutePath)
}
private val androidPluginPath: String by lazy {
System.getProperty("ideaSdk.androidPlugin.path")?.takeIf { File(it).isDirectory }
?: throw RuntimeException("Unable to get a valid path from 'ideaSdk.androidPlugin.path' property, please point it to the Idea android plugin location")
@@ -103,7 +106,6 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() {
private fun getClasspathForTest(): List<File> {
val kotlinRuntimeJar = PathUtil.kotlinPathsForIdeaPlugin.stdlibPath
val layoutLibJars = listOf(File(androidPluginPath, "layoutlib.jar"), File(androidPluginPath, "layoutlib-api.jar"))
val robolectricClasspath = System.getProperty("robolectric.classpath")
?: throw RuntimeException("Unable to get a valid classpath from 'robolectric.classpath' property, please set it accordingly")
@@ -112,12 +114,13 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() {
.sortedBy { it.nameWithoutExtension }
val junitCoreResourceName = JUnitCore::class.java.name.replace('.', '/') + ".class"
val junitJar = File(JUnitCore::class.java.classLoader.getResource(junitCoreResourceName).file.substringBeforeLast('!'))
val junitJar =
File(JUnitCore::class.java.classLoader.getResource(junitCoreResourceName).file.substringAfter("file:").substringBeforeLast('!'))
val androidExtensionsRuntimeJars = System.getProperty("androidExtensionsRuntime.classpath")?.split(File.pathSeparator)?.map(::File)
?: error("Unable to get a valid classpath from 'androidExtensionsRuntime.classpath' property")
return listOf(kotlinRuntimeJar) + layoutLibJars + robolectricJars + junitJar + androidExtensionsRuntimeJars
return listOf(kotlinRuntimeJar, layoutlibJar, layoutlibApiJar) + robolectricJars + junitJar + androidExtensionsRuntimeJars
}
override fun doMultiFileTest(wholeFile: File, files: List<TestFile>) {
@@ -138,6 +141,7 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() {
try {
writeClass(JUNIT_GENERATED_TEST_CLASS_FQNAME, JUNIT_GENERATED_TEST_CLASS_BYTES)
classFileFactory.getClassFiles().forEach { writeClass(it.relativePath, it.asByteArray()) }
javaClassesOutputDirectory?.listFiles()?.forEach { writeClass(it.name, it.readBytes()) }
val process = ProcessBuilder(
javaExe.absolutePath,
@@ -146,9 +150,10 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() {
(libraryClasspath + dirForTestClasses).joinToString(File.pathSeparator),
JUnitCore::class.java.name,
JUNIT_GENERATED_TEST_CLASS_FQNAME
).inheritIO().start()
).start()
process.waitFor(3, TimeUnit.MINUTES)
println(process.inputStream.bufferedReader().lineSequence().joinToString("\n"))
if (process.exitValue() != 0) {
throw AssertionError("Process exited with exit code ${process.exitValue()} \n" + classFileFactory.createText())
}
@@ -162,6 +167,10 @@ abstract class AbstractParcelBoxTest : CodegenTestCase() {
override fun setupEnvironment(environment: KotlinCoreEnvironment) {
AndroidComponentRegistrar.registerParcelExtensions(environment.project)
addAndroidExtensionsRuntimeLibrary(environment)
environment.updateClasspath(listOf(JvmClasspathRoot(File(androidPluginPath, "layoutlib.jar"))))
environment.updateClasspath(listOf(JvmClasspathRoot(layoutlibJar)))
}
override fun updateJavaClasspath(javaClasspath: MutableList<String>) {
javaClasspath += layoutlibJar.path
}
}
@@ -16,10 +16,6 @@ abstract class AbstractParcelBytecodeListingTest : AbstractAsmLikeInstructionLis
override fun setupEnvironment(environment: KotlinCoreEnvironment) {
AndroidComponentRegistrar.registerParcelExtensions(environment.project)
addAndroidExtensionsRuntimeLibrary(environment)
val androidPluginPath = System.getProperty("ideaSdk.androidPlugin.path")?.takeIf { File(it).isDirectory }
?: throw RuntimeException(
"Unable to get a valid path from 'ideaSdk.androidPlugin.path' property, please point it to the Idea android plugin location"
)
environment.updateClasspath(listOf(JvmClasspathRoot(File(androidPluginPath, "layoutlib.jar"))))
environment.updateClasspath(listOf(JvmClasspathRoot(AbstractParcelBoxTest.layoutlibJar)))
}
}
@@ -0,0 +1,12 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.android.parcel
import org.jetbrains.kotlin.test.TargetBackend
abstract class AbstractParcelIrBoxTest : AbstractParcelBoxTest() {
override fun getBackend() = TargetBackend.JVM_IR
}
@@ -0,0 +1,17 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.android.parcel
import org.jetbrains.kotlin.test.TargetBackend
import java.io.File
abstract class AbstractParcelIrBytecodeListingTest : AbstractParcelBytecodeListingTest() {
override fun getBackend() = TargetBackend.JVM_IR
override fun getExpectedTextFileName(wholeFile: File): String {
return wholeFile.nameWithoutExtension + ".ir.txt"
}
}
@@ -1,84 +0,0 @@
/*
* Copyright 2010-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.android.parcel
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.junit.runner.RunWith
@RunWith(JUnit3RunnerWithInners::class)
class ParcelBoxTest : AbstractParcelBoxTest() {
fun testSimple() = doTest("simple")
fun testPrimitiveTypes() = doTest("primitiveTypes")
fun testBoxedTypes() = doTest("boxedTypes")
fun testNullableTypesSimple() = doTest("nullableTypesSimple")
fun testNullableTypes() = doTest("nullableTypes")
fun testListSimple() = doTest("listSimple")
fun testLists() = doTest("lists")
fun testListKinds() = doTest("listKinds")
fun testArraySimple() = doTest("arraySimple")
fun testArrays() = doTest("arrays")
fun testMapSimple() = doTest("mapSimple")
fun testMaps() = doTest("maps")
fun testMapKinds() = doTest("mapKinds")
fun testSparseBooleanArray() = doTest("sparseBooleanArray")
fun testBundle() = doTest("bundle")
fun testSparseArrays() = doTest("sparseArrays")
fun testCustomSimple() = doTest("customSimple")
fun testCharSequence() = doTest("charSequence")
fun testEnums() = doTest("enums")
fun testObjects() = doTest("objects")
fun testNestedParcelable() = doTest("nestedParcelable")
fun testKt19749() = doTest("kt19749")
fun testKt19747() = doTest("kt19747")
fun testKt19747_2() = doTest("kt19747_2")
fun test20002() = doTest("kt20002")
fun test20021() = doTest("kt20021")
fun testCustomSerializerSimple() = doTest("customSerializerSimple")
fun testCustomSerializerWriteWith() = doTest("customSerializerWriteWith")
fun testCustomSerializerBoxing() = doTest("customSerializerBoxing")
fun testKt20717() = doTest("kt20717")
fun testEnumObject() = doTest("enumObject")
fun testIntArray() = doTest("intArray")
fun testOpenParcelize() = doTest("openParcelize")
fun testKt25839() = doTest("kt25839")
}
class ParcelBoxTestWithSerializableLikeExtension : AbstractParcelBoxTest() {
fun testSimple() = doTest("simple")
override fun setupEnvironment(environment: KotlinCoreEnvironment) {
super.setupEnvironment(environment)
SyntheticResolveExtension.registerExtension(environment.project, SerializableLike())
}
private class SerializableLike : SyntheticResolveExtension {
override fun getSyntheticCompanionObjectNameIfNeeded(thisDescriptor: ClassDescriptor): Name? {
fun ClassDescriptor.isSerializableLike() = annotations.hasAnnotation(FqName("test.SerializableLike"))
return when {
thisDescriptor.kind == ClassKind.CLASS && thisDescriptor.isSerializableLike() -> Name.identifier("Companion")
else -> return null
}
}
}
}
@@ -0,0 +1,201 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.android.parcel;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;
import java.io.File;
import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("plugins/android-extensions/android-extensions-compiler/testData/parcel/box")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class ParcelBoxTestGenerated extends AbstractParcelBoxTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
}
public void testAllFilesPresentInBox() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/android-extensions/android-extensions-compiler/testData/parcel/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@TestMetadata("arraySimple.kt")
public void testArraySimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/arraySimple.kt");
}
@TestMetadata("arrays.kt")
public void testArrays() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/arrays.kt");
}
@TestMetadata("boxedTypes.kt")
public void testBoxedTypes() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/boxedTypes.kt");
}
@TestMetadata("bundle.kt")
public void testBundle() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/bundle.kt");
}
@TestMetadata("charSequence.kt")
public void testCharSequence() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/charSequence.kt");
}
@TestMetadata("customSerializerBoxing.kt")
public void testCustomSerializerBoxing() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSerializerBoxing.kt");
}
@TestMetadata("customSerializerSimple.kt")
public void testCustomSerializerSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSerializerSimple.kt");
}
@TestMetadata("customSerializerWriteWith.kt")
public void testCustomSerializerWriteWith() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSerializerWriteWith.kt");
}
@TestMetadata("customSimple.kt")
public void testCustomSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSimple.kt");
}
@TestMetadata("enumObject.kt")
public void testEnumObject() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enumObject.kt");
}
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enums.kt");
}
@TestMetadata("intArray.kt")
public void testIntArray() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt");
}
@TestMetadata("kt19747.kt")
public void testKt19747() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt19747.kt");
}
@TestMetadata("kt19747_2.kt")
public void testKt19747_2() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt19747_2.kt");
}
@TestMetadata("kt19749.kt")
public void testKt19749() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt19749.kt");
}
@TestMetadata("kt20002.kt")
public void testKt20002() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt20002.kt");
}
@TestMetadata("kt20021.kt")
public void testKt20021() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt20021.kt");
}
@TestMetadata("kt20717.kt")
public void testKt20717() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt20717.kt");
}
@TestMetadata("kt25839.kt")
public void testKt25839() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt25839.kt");
}
@TestMetadata("listKinds.kt")
public void testListKinds() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/listKinds.kt");
}
@TestMetadata("listSimple.kt")
public void testListSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/listSimple.kt");
}
@TestMetadata("lists.kt")
public void testLists() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/lists.kt");
}
@TestMetadata("mapKinds.kt")
public void testMapKinds() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/mapKinds.kt");
}
@TestMetadata("mapSimple.kt")
public void testMapSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/mapSimple.kt");
}
@TestMetadata("maps.kt")
public void testMaps() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/maps.kt");
}
@TestMetadata("nestedParcelable.kt")
public void testNestedParcelable() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nestedParcelable.kt");
}
@TestMetadata("nullableTypes.kt")
public void testNullableTypes() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypes.kt");
}
@TestMetadata("nullableTypesSimple.kt")
public void testNullableTypesSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypesSimple.kt");
}
@TestMetadata("objects.kt")
public void testObjects() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/objects.kt");
}
@TestMetadata("openParcelize.kt")
public void testOpenParcelize() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/openParcelize.kt");
}
@TestMetadata("primitiveTypes.kt")
public void testPrimitiveTypes() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/primitiveTypes.kt");
}
@TestMetadata("simple.kt")
public void testSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/simple.kt");
}
@TestMetadata("sparseArrays.kt")
public void testSparseArrays() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/sparseArrays.kt");
}
@TestMetadata("sparseBooleanArray.kt")
public void testSparseBooleanArray() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/sparseBooleanArray.kt");
}
}
@@ -0,0 +1,44 @@
/*
* Copyright 2010-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.android.parcel
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
class ParcelBoxTestWithSerializableLikeExtension : AbstractParcelBoxTest() {
fun testSimple() = doTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/simple.kt")
override fun setupEnvironment(environment: KotlinCoreEnvironment) {
super.setupEnvironment(environment)
SyntheticResolveExtension.registerExtension(environment.project, SerializableLike())
}
private class SerializableLike : SyntheticResolveExtension {
override fun getSyntheticCompanionObjectNameIfNeeded(thisDescriptor: ClassDescriptor): Name? {
fun ClassDescriptor.isSerializableLike() = annotations.hasAnnotation(FqName("test.SerializableLike"))
return when {
thisDescriptor.kind == ClassKind.CLASS && thisDescriptor.isSerializableLike() -> Name.identifier("Companion")
else -> return null
}
}
}
}
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.android.parcel;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;
@@ -21,11 +22,11 @@ import java.util.regex.Pattern;
@RunWith(JUnit3RunnerWithInners.class)
public class ParcelBytecodeListingTestGenerated extends AbstractParcelBytecodeListingTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM, testDataFilePath);
}
public void testAllFilesPresentInCodegen() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen"), Pattern.compile("^(.+)\\.kt$"), null, true);
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM, true);
}
@TestMetadata("customDescribeContents.kt")
@@ -0,0 +1,201 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.android.parcel;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;
import java.io.File;
import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("plugins/android-extensions/android-extensions-compiler/testData/parcel/box")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class ParcelIrBoxTestGenerated extends AbstractParcelIrBoxTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInBox() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/android-extensions/android-extensions-compiler/testData/parcel/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@TestMetadata("arraySimple.kt")
public void testArraySimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/arraySimple.kt");
}
@TestMetadata("arrays.kt")
public void testArrays() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/arrays.kt");
}
@TestMetadata("boxedTypes.kt")
public void testBoxedTypes() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/boxedTypes.kt");
}
@TestMetadata("bundle.kt")
public void testBundle() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/bundle.kt");
}
@TestMetadata("charSequence.kt")
public void testCharSequence() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/charSequence.kt");
}
@TestMetadata("customSerializerBoxing.kt")
public void testCustomSerializerBoxing() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSerializerBoxing.kt");
}
@TestMetadata("customSerializerSimple.kt")
public void testCustomSerializerSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSerializerSimple.kt");
}
@TestMetadata("customSerializerWriteWith.kt")
public void testCustomSerializerWriteWith() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSerializerWriteWith.kt");
}
@TestMetadata("customSimple.kt")
public void testCustomSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/customSimple.kt");
}
@TestMetadata("enumObject.kt")
public void testEnumObject() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enumObject.kt");
}
@TestMetadata("enums.kt")
public void testEnums() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/enums.kt");
}
@TestMetadata("intArray.kt")
public void testIntArray() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/intArray.kt");
}
@TestMetadata("kt19747.kt")
public void testKt19747() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt19747.kt");
}
@TestMetadata("kt19747_2.kt")
public void testKt19747_2() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt19747_2.kt");
}
@TestMetadata("kt19749.kt")
public void testKt19749() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt19749.kt");
}
@TestMetadata("kt20002.kt")
public void testKt20002() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt20002.kt");
}
@TestMetadata("kt20021.kt")
public void testKt20021() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt20021.kt");
}
@TestMetadata("kt20717.kt")
public void testKt20717() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt20717.kt");
}
@TestMetadata("kt25839.kt")
public void testKt25839() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/kt25839.kt");
}
@TestMetadata("listKinds.kt")
public void testListKinds() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/listKinds.kt");
}
@TestMetadata("listSimple.kt")
public void testListSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/listSimple.kt");
}
@TestMetadata("lists.kt")
public void testLists() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/lists.kt");
}
@TestMetadata("mapKinds.kt")
public void testMapKinds() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/mapKinds.kt");
}
@TestMetadata("mapSimple.kt")
public void testMapSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/mapSimple.kt");
}
@TestMetadata("maps.kt")
public void testMaps() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/maps.kt");
}
@TestMetadata("nestedParcelable.kt")
public void testNestedParcelable() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nestedParcelable.kt");
}
@TestMetadata("nullableTypes.kt")
public void testNullableTypes() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypes.kt");
}
@TestMetadata("nullableTypesSimple.kt")
public void testNullableTypesSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/nullableTypesSimple.kt");
}
@TestMetadata("objects.kt")
public void testObjects() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/objects.kt");
}
@TestMetadata("openParcelize.kt")
public void testOpenParcelize() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/openParcelize.kt");
}
@TestMetadata("primitiveTypes.kt")
public void testPrimitiveTypes() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/primitiveTypes.kt");
}
@TestMetadata("simple.kt")
public void testSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/simple.kt");
}
@TestMetadata("sparseArrays.kt")
public void testSparseArrays() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/sparseArrays.kt");
}
@TestMetadata("sparseBooleanArray.kt")
public void testSparseBooleanArray() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/sparseBooleanArray.kt");
}
}
@@ -0,0 +1,36 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.android.parcel
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.jetbrains.kotlin.test.TargetBackend
import org.junit.runner.RunWith
class ParcelIrBoxTestWithSerializableLikeExtension : AbstractParcelIrBoxTest() {
fun testSimple() = doTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/simple.kt")
override fun setupEnvironment(environment: KotlinCoreEnvironment) {
super.setupEnvironment(environment)
SyntheticResolveExtension.registerExtension(environment.project, SerializableLike())
}
private class SerializableLike : SyntheticResolveExtension {
override fun getSyntheticCompanionObjectNameIfNeeded(thisDescriptor: ClassDescriptor): Name? {
fun ClassDescriptor.isSerializableLike() = annotations.hasAnnotation(FqName("test.SerializableLike"))
return when {
thisDescriptor.kind == ClassKind.CLASS && thisDescriptor.isSerializableLike() -> Name.identifier("Companion")
else -> return null
}
}
}
}
@@ -0,0 +1,111 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.android.parcel;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;
import java.io.File;
import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class ParcelIrBytecodeListingTestGenerated extends AbstractParcelIrBytecodeListingTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInCodegen() throws Exception {
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
}
@TestMetadata("customDescribeContents.kt")
public void testCustomDescribeContents() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/customDescribeContents.kt");
}
@TestMetadata("customParcelablesDifferentModule.kt")
public void testCustomParcelablesDifferentModule() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/customParcelablesDifferentModule.kt");
}
@TestMetadata("customParcelablesSameModule.kt")
public void testCustomParcelablesSameModule() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/customParcelablesSameModule.kt");
}
@TestMetadata("customSimple.kt")
public void testCustomSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/customSimple.kt");
}
@TestMetadata("customSimpleWithNewArray.kt")
public void testCustomSimpleWithNewArray() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/customSimpleWithNewArray.kt");
}
@TestMetadata("describeContentsFromSuperType.kt")
public void testDescribeContentsFromSuperType() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/describeContentsFromSuperType.kt");
}
@TestMetadata("duplicatingClinit.kt")
public void testDuplicatingClinit() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.kt");
}
@TestMetadata("IBinderIInterface.kt")
public void testIBinderIInterface() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/IBinderIInterface.kt");
}
@TestMetadata("kt25839.kt")
public void testKt25839() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/kt25839.kt");
}
@TestMetadata("listInsideList.kt")
public void testListInsideList() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/listInsideList.kt");
}
@TestMetadata("nullableNotNullSize.kt")
public void testNullableNotNullSize() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/nullableNotNullSize.kt");
}
@TestMetadata("parcelable.kt")
public void testParcelable() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/parcelable.kt");
}
@TestMetadata("serializable.kt")
public void testSerializable() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/serializable.kt");
}
@TestMetadata("simple.kt")
public void testSimple() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/simple.kt");
}
@TestMetadata("simpleList.kt")
public void testSimpleList() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/simpleList.kt");
}
@TestMetadata("size.kt")
public void testSize() throws Exception {
runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/size.kt");
}
}
@@ -1,3 +1,6 @@
// IGNORE_BACKEND: JVM
// See KT-38107
// The JVM backend is missing support for custom parcelers in List<String>
// WITH_RUNTIME
@file:JvmName("TestKt")
@@ -46,6 +49,6 @@ fun box() = parcelTest { parcel ->
}
with (test2) {
assert(a == "Abc" && b == "3" && c == listOf("A", "bc") && d == listOf("A,bc") && e == listOf("A,bc"))
assert(a == "Abc" && b == "3" && c == listOf("1", "2") && d == listOf("A,bc") && e == listOf("A,bc"))
}
}
}
@@ -1,3 +1,6 @@
// IGNORE_BACKEND: JVM
// See KT-38105
// Throws IllegalAccessError, since the code tries to access the private companion field directly from the generated User$Creator class.
// WITH_RUNTIME
@file:JvmName("TestKt")
@@ -31,4 +34,4 @@ fun box() = parcelTest { parcel ->
assert(user.firstName == user2.firstName)
assert(user.secondName == user2.secondName)
assert(user2.age == 0)
}
}
@@ -1,3 +1,6 @@
// IGNORE_BACKEND: JVM
// See KT-38106
// This feature regressed with the fix for KT-22576
// WITH_RUNTIME
@file:JvmName("TestKt")
@@ -42,4 +45,4 @@ fun box() = parcelTest { parcel ->
assert(first.parcelableEnum == ParcelableEnum.THREE)
assert(first2.parcelableEnum == ParcelableEnum.ONE)
assert(first != first2)
}
}
@@ -1,3 +1,4 @@
// IGNORE_BACKEND: JVM_IR
// CURIOUS_ABOUT writeToParcel, createFromParcel
// WITH_RUNTIME
@@ -5,7 +5,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
@@ -82,7 +82,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (binder, Landroid/os/IBinder;)
@@ -0,0 +1,45 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
public int describeContents() {
LABEL (L0)
LINENUMBER (9)
BIPUSH (100)
IRETURN
LABEL (L1)
}
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public final boolean isProUser()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -0,0 +1,69 @@
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
CHECKCAST
INVOKESPECIAL (test/Foo, <init>, (Landroid/accounts/Account;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
LABEL (L1)
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.accounts.Account kp
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(android.accounts.Account kp)
public int describeContents()
public final android.accounts.Account getKp()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (kp, Landroid/accounts/Account;)
CHECKCAST
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
}
@@ -5,7 +5,7 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
@@ -44,7 +44,7 @@ public final class test/Foo : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (kp, Landroid/accounts/Account;)
@@ -0,0 +1,172 @@
public final class k/KotlinParcelable$Companion : java/lang/Object {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
}
public final class k/KotlinParcelable$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public k.KotlinParcelable createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (1)
LDC (source)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (23)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
ISTORE (2)
LABEL (L2)
NEW
DUP
LABEL (L3)
LINENUMBER (24)
ILOAD (2)
INVOKESPECIAL (k/KotlinParcelable, <init>, (I)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel p0) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (k/KotlinParcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Lk/KotlinParcelable;)
ARETURN
LABEL (L1)
}
public k.KotlinParcelable[] newArray(int size)
public java.lang.Object[] newArray(int p0)
}
public final class k/KotlinParcelable : java/lang/Object, android/os/Parcelable {
public final static k.KotlinParcelable$Creator CREATOR
public final static k.KotlinParcelable$Companion Companion
private int data
static void <clinit>() {
NEW
DUP
ACONST_NULL
INVOKESPECIAL (k/KotlinParcelable$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Companion, Lk/KotlinParcelable$Companion;)
LABEL (L0)
LINENUMBER (18)
NEW
DUP
INVOKESPECIAL (k/KotlinParcelable$Creator, <init>, ()V)
PUTSTATIC (CREATOR, Lk/KotlinParcelable$Creator;)
RETURN
}
public void <init>(int data)
public final int component1()
public final k.KotlinParcelable copy(int data)
public static k.KotlinParcelable copy$default(k.KotlinParcelable p0, int p1, int p2, java.lang.Object p3)
public int describeContents()
public boolean equals(java.lang.Object other)
public final int getData()
public int hashCode()
public final void setData(int <set-?>)
public java.lang.String toString()
public void writeToParcel(android.os.Parcel dest, int flags) {
LABEL (L0)
ALOAD (1)
LDC (dest)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (13)
ALOAD (1)
ALOAD (0)
GETFIELD (data, I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
LABEL (L2)
LINENUMBER (14)
RETURN
LABEL (L3)
}
}
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
GETSTATIC (Companion, Lk/KotlinParcelable$Companion;)
POP
GETSTATIC (CREATOR, Lk/KotlinParcelable$Creator;)
ALOAD (1)
INVOKEVIRTUAL (k/KotlinParcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Lk/KotlinParcelable;)
INVOKESPECIAL (test/Foo, <init>, (Lk/KotlinParcelable;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
LABEL (L1)
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final k.KotlinParcelable kp
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(k.KotlinParcelable kp)
public int describeContents()
public final k.KotlinParcelable getKp()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (kp, Lk/KotlinParcelable;)
ALOAD (1)
ILOAD (2)
INVOKEVIRTUAL (k/KotlinParcelable, writeToParcel, (Landroid/os/Parcel;I)V)
RETURN
LABEL (L1)
}
}
@@ -7,11 +7,11 @@ public final class k/KotlinParcelable$Companion : java/lang/Object {
public final class k/KotlinParcelable$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public k.KotlinParcelable createFromParcel(android.os.Parcel this) {
public k.KotlinParcelable createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (1)
LDC (source)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (23)
ALOAD (1)
@@ -87,7 +87,7 @@ public final class k/KotlinParcelable : java/lang/Object, android/os/Parcelable
LABEL (L0)
ALOAD (1)
LDC (dest)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
LINENUMBER (13)
ALOAD (1)
@@ -108,13 +108,13 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
GETSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
SWAP
INVOKEINTERFACE (android/os/Parcelable$Creator, createFromParcel, (Landroid/os/Parcel;)Ljava/lang/Object;)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
CHECKCAST
INVOKESPECIAL (test/Foo, <init>, (Lk/KotlinParcelable;)V)
ARETURN
@@ -147,13 +147,12 @@ public final class test/Foo : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (kp, Lk/KotlinParcelable;)
SWAP
LDC (0)
INVOKEINTERFACE (android/os/Parcelable, writeToParcel, (Landroid/os/Parcel;I)V)
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
@@ -0,0 +1,114 @@
final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public User create(android.os.Parcel parcel)
public java.lang.Object create(android.os.Parcel parcel)
public User[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKESTATIC (kotlinx/android/parcel/Parceler$DefaultImpls, newArray, (Lkotlinx/android/parcel/Parceler;I)[Ljava/lang/Object;)
CHECKCAST
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object $this$write, android.os.Parcel parcel, int flags)
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (User, access$getCompanion$p$s2645995, ()LUser$Companion;)
ALOAD (1)
INVOKEVIRTUAL (User$Companion, create, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public final User[] newArray(int size) {
LABEL (L0)
ILOAD (1)
ANEWARRAY
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Creator, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final static User$Companion Companion
private final int age
private final java.lang.String firstName
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
public final static User$Companion access$getCompanion$p$s2645995()
public int describeContents()
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
GETSTATIC (Companion, LUser$Companion;)
ALOAD (0)
ALOAD (1)
ILOAD (2)
INVOKEVIRTUAL (User$Companion, write, (LUser;Landroid/os/Parcel;I)V)
RETURN
LABEL (L1)
}
}
@@ -27,7 +27,7 @@ final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
ARETURN
}
public void write(User this@write, android.os.Parcel parcel, int flags)
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object p0, android.os.Parcel p1, int p2)
}
@@ -39,7 +39,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
GETSTATIC (Companion, LUser$Companion;)
ALOAD (1)
INVOKEVIRTUAL (User$Companion, create, (Landroid/os/Parcel;)Ljava/lang/Object;)
@@ -59,7 +59,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
public final static User$Companion Companion
private final static User$Companion Companion
private final int age
@@ -83,7 +83,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
GETSTATIC (Companion, LUser$Companion;)
ALOAD (0)
ALOAD (1)
@@ -0,0 +1,85 @@
final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
public User create(android.os.Parcel parcel)
public java.lang.Object create(android.os.Parcel parcel)
public User[] newArray(int size) {
LABEL (L0)
LINENUMBER (19)
ILOAD (1)
ANEWARRAY
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object $this$write, android.os.Parcel parcel, int flags)
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size) {
LABEL (L0)
INVOKESTATIC (User, access$getCompanion$p$s2645995, ()LUser$Companion;)
ILOAD (1)
INVOKEVIRTUAL (User$Companion, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
public java.lang.Object[] newArray(int size) {
LABEL (L0)
ALOAD (0)
ILOAD (1)
INVOKEVIRTUAL (User$Creator, newArray, (I)[LUser;)
ARETURN
LABEL (L1)
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final static User$Companion Companion
private final int age
private final java.lang.String firstName
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
public final static User$Companion access$getCompanion$p$s2645995()
public int describeContents()
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -25,7 +25,7 @@ final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
ARETURN
}
public void write(User this@write, android.os.Parcel parcel, int flags)
public void write(User $this$write, android.os.Parcel parcel, int flags)
public void write(java.lang.Object p0, android.os.Parcel p1, int p2)
}
@@ -48,7 +48,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
public final static User$Companion Companion
private final static User$Companion Companion
private final int age
@@ -0,0 +1,49 @@
public abstract class AbstractUser : java/lang/Object, android/os/Parcelable {
public void <init>()
public int describeContents() {
LABEL (L0)
LINENUMBER (8)
BIPUSH (100)
IRETURN
LABEL (L1)
}
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : AbstractUser {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>()
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
public final int getAge()
public final java.lang.String getFirstName()
public final java.lang.String getLastName()
public final boolean isProUser()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -0,0 +1,57 @@
public final class User$Companion : java/lang/Object {
private void <init>()
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
private static void getTest$annotations()
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
public final static User$Companion Companion
private final java.lang.String firstName
private final static java.lang.StringBuilder test
static void <clinit>() {
NEW
DUP
ACONST_NULL
INVOKESPECIAL (User$Companion, <init>, (Lkotlin/jvm/internal/DefaultConstructorMarker;)V)
PUTSTATIC (Companion, LUser$Companion;)
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
LABEL (L0)
LINENUMBER (12)
NEW
DUP
INVOKESPECIAL (java/lang/StringBuilder, <init>, ()V)
PUTSTATIC (test, Ljava/lang/StringBuilder;)
RETURN
}
public void <init>(java.lang.String firstName)
public int describeContents()
public final java.lang.String getFirstName()
public void writeToParcel(android.os.Parcel out, int flags)
}
@@ -3,7 +3,7 @@ public final class User$Companion : java/lang/Object {
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
private static void test$annotations()
private static void getTest$annotations()
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
@@ -0,0 +1,53 @@
public final class test/SomeClass$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.SomeClass createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
POP
NEW
DUP
INVOKESPECIAL (test/SomeClass, <init>, ()V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/SomeClass$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/SomeClass;)
ARETURN
LABEL (L1)
}
public final test.SomeClass[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/SomeClass : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
static void <clinit>()
public void <init>()
public int describeContents()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
RETURN
LABEL (L1)
}
}
@@ -5,7 +5,7 @@ public final class test/SomeClass$Creator : java/lang/Object, android/os/Parcela
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
@@ -39,7 +39,7 @@ public final class test/SomeClass : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
DUP
@@ -0,0 +1,71 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class Test : java/lang/Object {
public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names
static void <clinit>()
public void <init>(java.util.List names)
public int describeContents()
public final java.util.List getNames()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
ASTORE (3)
ALOAD (1)
ALOAD (3)
INVOKEINTERFACE (java/util/List, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (3)
INVOKEINTERFACE (java/util/List, iterator, ()Ljava/util/Iterator;)
ASTORE (4)
LABEL (L1)
ALOAD (4)
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L2)
ALOAD (4)
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
ASTORE (5)
ALOAD (1)
ALOAD (5)
CHECKCAST
INVOKEINTERFACE (java/util/List, size, ()I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (5)
CHECKCAST
INVOKEINTERFACE (java/util/List, iterator, ()Ljava/util/Iterator;)
ASTORE (6)
LABEL (L3)
ALOAD (6)
INVOKEINTERFACE (java/util/Iterator, hasNext, ()Z)
IFEQ (L1)
ALOAD (1)
ALOAD (6)
INVOKEINTERFACE (java/util/Iterator, next, ()Ljava/lang/Object;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeStringList, (Ljava/util/List;)V)
GOTO (L3)
LABEL (L2)
RETURN
LABEL (L4)
}
}
@@ -23,7 +23,7 @@ public final class Test : java/lang/Object {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
@@ -0,0 +1,90 @@
public final class TestNotNull$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestNotNull createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final TestNotNull[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class TestNotNull : java/lang/Object {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a
static void <clinit>()
public void <init>(android.util.Size a)
public int describeContents()
public final android.util.Size getA()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
RETURN
LABEL (L1)
}
}
public final class TestNullable$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestNullable createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final TestNullable[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class TestNullable : java/lang/Object {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size a
static void <clinit>()
public void <init>(android.util.Size a)
public int describeContents()
public final android.util.Size getA()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
ASTORE (3)
ALOAD (3)
IFNONNULL (L1)
ALOAD (1)
ICONST_0
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
GOTO (L2)
LABEL (L1)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (3)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
@@ -23,7 +23,7 @@ public final class TestNotNull : java/lang/Object {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
@@ -58,7 +58,7 @@ public final class TestNullable : java/lang/Object {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (a, Landroid/util/Size;)
@@ -0,0 +1,67 @@
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final test.Foo createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
LDC (Ltest/Foo;)
INVOKEVIRTUAL (java/lang/Class, getClassLoader, ()Ljava/lang/ClassLoader;)
INVOKEVIRTUAL (android/os/Parcel, readParcelable, (Ljava/lang/ClassLoader;)Landroid/os/Parcelable;)
INVOKESPECIAL (test/Foo, <init>, (Landroid/os/Parcelable;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (test/Foo$Creator, createFromParcel, (Landroid/os/Parcel;)Ltest/Foo;)
ARETURN
LABEL (L1)
}
public final test.Foo[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class test/Foo : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.os.Parcelable parcelable
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (test/Foo$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(android.os.Parcelable parcelable)
public int describeContents()
public final android.os.Parcelable getParcelable()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (parcelable, Landroid/os/Parcelable;)
ILOAD (2)
INVOKEVIRTUAL (android/os/Parcel, writeParcelable, (Landroid/os/Parcelable;I)V)
RETURN
LABEL (L1)
}
}
@@ -5,7 +5,7 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
@@ -43,7 +43,7 @@ public final class test/Foo : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (parcelable, Landroid/os/Parcelable;)
@@ -0,0 +1,90 @@
public final class SerializableSimple : java/lang/Object, java/io/Serializable {
private final java.lang.String a
private final java.lang.String b
public void <init>(java.lang.String a, java.lang.String b)
public final java.lang.String getA()
public final java.lang.String getB()
}
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final User createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSerializable, ()Ljava/io/Serializable;)
CHECKCAST
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSerializable, ()Ljava/io/Serializable;)
CHECKCAST
INVOKESPECIAL (User, <init>, (LSerializableSimple;LSerializableSimple;)V)
ARETURN
LABEL (L1)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public final User[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final SerializableSimple notNull
private final SerializableSimple nullable
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(SerializableSimple notNull, SerializableSimple nullable)
public int describeContents()
public final SerializableSimple getNotNull()
public final SerializableSimple getNullable()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (notNull, LSerializableSimple;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeSerializable, (Ljava/io/Serializable;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (nullable, LSerializableSimple;)
CHECKCAST
INVOKEVIRTUAL (android/os/Parcel, writeSerializable, (Ljava/io/Serializable;)V)
RETURN
LABEL (L1)
}
}
@@ -17,7 +17,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
NEW
DUP
ALOAD (1)
@@ -61,7 +61,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (notNull, LSerializableSimple;)
@@ -0,0 +1,152 @@
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>() {
Local variables:
0 this: LUser$Creator;
}
public final User createFromParcel(android.os.Parcel parcel) {
Local variables:
0 this: LUser$Creator;
1 parcel: Landroid/os/Parcel;
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readString, ()Ljava/lang/String;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readString, ()Ljava/lang/String;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFEQ (L2)
ICONST_1
GOTO (L3)
LABEL (L2)
ICONST_0
LABEL (L3)
INVOKESPECIAL (User, <init>, (Ljava/lang/String;Ljava/lang/String;IZ)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
Local variables:
0 this: LUser$Creator;
1 source: Landroid/os/Parcel;
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (User$Creator, createFromParcel, (Landroid/os/Parcel;)LUser;)
ARETURN
LABEL (L1)
}
public final User[] newArray(int size) {
Local variables:
0 this: LUser$Creator;
1 size: I
}
public java.lang.Object[] newArray(int size) {
Local variables:
0 this: LUser$Creator;
1 size: I
}
}
public final class User : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final int age
private final java.lang.String firstName
private final boolean isProUser
private final java.lang.String lastName
static void <clinit>() {
NEW
DUP
INVOKESPECIAL (User$Creator, <init>, ()V)
CHECKCAST
PUTSTATIC (CREATOR, Landroid/os/Parcelable$Creator;)
RETURN
}
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser) {
Local variables:
0 this: LUser;
1 firstName: Ljava/lang/String;
2 lastName: Ljava/lang/String;
3 age: I
4 isProUser: Z
}
public int describeContents() {
Local variables:
0 this: LUser;
LABEL (L0)
ICONST_0
IRETURN
LABEL (L1)
}
public final int getAge() {
Local variables:
0 this: LUser;
}
public final java.lang.String getFirstName() {
Local variables:
0 this: LUser;
}
public final java.lang.String getLastName() {
Local variables:
0 this: LUser;
}
public final boolean isProUser() {
Local variables:
0 this: LUser;
}
public void writeToParcel(android.os.Parcel out, int flags) {
Local variables:
0 this: LUser;
1 out: Landroid/os/Parcel;
2 flags: I
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (firstName, Ljava/lang/String;)
INVOKEVIRTUAL (android/os/Parcel, writeString, (Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (lastName, Ljava/lang/String;)
INVOKEVIRTUAL (android/os/Parcel, writeString, (Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (age, I)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (0)
GETFIELD (isProUser, Z)
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
RETURN
LABEL (L1)
}
}
@@ -12,7 +12,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
@@ -73,6 +73,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
public int describeContents() {
Local variables:
0 this: LUser;
LABEL (L0)
LDC (0)
IRETURN
@@ -108,7 +109,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (firstName, Ljava/lang/String;)
@@ -0,0 +1,38 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel parcel)
public java.lang.Object createFromParcel(android.os.Parcel source)
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class Test : java/lang/Object {
public final static android.os.Parcelable$Creator CREATOR
private final java.util.List names
static void <clinit>()
public void <init>(java.util.List names)
public int describeContents()
public final java.util.List getNames()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
INVOKEVIRTUAL (android/os/Parcel, writeStringList, (Ljava/util/List;)V)
RETURN
LABEL (L1)
}
}
@@ -23,7 +23,7 @@ public final class Test : java/lang/Object {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (names, Ljava/util/List;)
@@ -0,0 +1,207 @@
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final Test createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSize, ()Landroid/util/Size;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFNE (L2)
ACONST_NULL
CHECKCAST
GOTO (L3)
LABEL (L2)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSize, ()Landroid/util/Size;)
LABEL (L3)
INVOKESPECIAL (Test, <init>, (Landroid/util/Size;Landroid/util/Size;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (Test$Creator, createFromParcel, (Landroid/os/Parcel;)LTest;)
ARETURN
LABEL (L1)
}
public final Test[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class Test : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.Size nullable
private final android.util.Size size
static void <clinit>()
public void <init>(android.util.Size size, android.util.Size nullable)
public final android.util.Size component1()
public final android.util.Size component2()
public final Test copy(android.util.Size size, android.util.Size nullable)
public static Test copy$default(Test p0, android.util.Size p1, android.util.Size p2, int p3, java.lang.Object p4)
public int describeContents()
public boolean equals(java.lang.Object other)
public final android.util.Size getNullable()
public final android.util.Size getSize()
public int hashCode()
public java.lang.String toString()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/Size;)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
ALOAD (0)
GETFIELD (nullable, Landroid/util/Size;)
ASTORE (3)
ALOAD (3)
IFNONNULL (L1)
ALOAD (1)
ICONST_0
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
GOTO (L2)
LABEL (L1)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (3)
INVOKEVIRTUAL (android/os/Parcel, writeSize, (Landroid/util/Size;)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
public final class TestF$Creator : java/lang/Object, android/os/Parcelable$Creator {
public void <init>()
public final TestF createFromParcel(android.os.Parcel parcel) {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSizeF, ()Landroid/util/SizeF;)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readInt, ()I)
IFNE (L2)
ACONST_NULL
CHECKCAST
GOTO (L3)
LABEL (L2)
ALOAD (1)
INVOKEVIRTUAL (android/os/Parcel, readSizeF, ()Landroid/util/SizeF;)
LABEL (L3)
INVOKESPECIAL (TestF, <init>, (Landroid/util/SizeF;Landroid/util/SizeF;)V)
ARETURN
LABEL (L4)
}
public java.lang.Object createFromParcel(android.os.Parcel source) {
LABEL (L0)
ALOAD (0)
ALOAD (1)
INVOKEVIRTUAL (TestF$Creator, createFromParcel, (Landroid/os/Parcel;)LTestF;)
ARETURN
LABEL (L1)
}
public final TestF[] newArray(int size)
public java.lang.Object[] newArray(int size)
}
public final class TestF : java/lang/Object, android/os/Parcelable {
public final static android.os.Parcelable$Creator CREATOR
private final android.util.SizeF nullable
private final android.util.SizeF size
static void <clinit>()
public void <init>(android.util.SizeF size, android.util.SizeF nullable)
public final android.util.SizeF component1()
public final android.util.SizeF component2()
public final TestF copy(android.util.SizeF size, android.util.SizeF nullable)
public static TestF copy$default(TestF p0, android.util.SizeF p1, android.util.SizeF p2, int p3, java.lang.Object p4)
public int describeContents()
public boolean equals(java.lang.Object other)
public final android.util.SizeF getNullable()
public final android.util.SizeF getSize()
public int hashCode()
public java.lang.String toString()
public void writeToParcel(android.os.Parcel out, int flags) {
LABEL (L0)
ALOAD (1)
LDC (out)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/SizeF;)
INVOKEVIRTUAL (android/os/Parcel, writeSizeF, (Landroid/util/SizeF;)V)
ALOAD (0)
GETFIELD (nullable, Landroid/util/SizeF;)
ASTORE (3)
ALOAD (3)
IFNONNULL (L1)
ALOAD (1)
ICONST_0
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
GOTO (L2)
LABEL (L1)
ALOAD (1)
ICONST_1
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
ALOAD (1)
ALOAD (3)
INVOKEVIRTUAL (android/os/Parcel, writeSizeF, (Landroid/util/SizeF;)V)
LABEL (L2)
RETURN
LABEL (L3)
}
}
@@ -5,7 +5,7 @@ public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creato
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
@@ -63,7 +63,7 @@ public final class Test : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/Size;)
@@ -95,7 +95,7 @@ public final class TestF$Creator : java/lang/Object, android/os/Parcelable$Creat
LABEL (L0)
ALOAD (1)
LDC (in)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
LABEL (L1)
NEW
DUP
@@ -153,7 +153,7 @@ public final class TestF : java/lang/Object, android/os/Parcelable {
LABEL (L0)
ALOAD (1)
LDC (parcel)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkParameterIsNotNull, (Ljava/lang/Object;Ljava/lang/String;)V)
INVOKESTATIC (kotlin/jvm/internal/Intrinsics, checkNotNullParameter, (Ljava/lang/Object;Ljava/lang/String;)V)
ALOAD (1)
ALOAD (0)
GETFIELD (size, Landroid/util/SizeF;)