Minor: Move AbstractParcelBytecodeListingTest to compiler tests, change its format a bit
This commit is contained in:
-197
@@ -1,197 +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.codegen.CodegenTestCase
|
||||
import org.jetbrains.kotlin.codegen.getClassFiles
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.org.objectweb.asm.ClassReader
|
||||
import org.jetbrains.org.objectweb.asm.Label
|
||||
import org.jetbrains.org.objectweb.asm.Opcodes.*
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
import org.jetbrains.org.objectweb.asm.tree.*
|
||||
import org.jetbrains.org.objectweb.asm.util.Printer
|
||||
import java.io.File
|
||||
|
||||
private val LINE_SEPARATOR = System.getProperty("line.separator")
|
||||
|
||||
abstract class AbstractAsmLikeInstructionListingTest : CodegenTestCase() {
|
||||
private companion object {
|
||||
val CURIOUS_ABOUT_DIRECTIVE = "// CURIOUS_ABOUT "
|
||||
val LOCAL_VARIABLES_TABLE_DIRECTIVE = "// LOCAL_VARIABLES_TABLE"
|
||||
}
|
||||
|
||||
override fun doMultiFileTest(wholeFile: File, files: List<TestFile>, javaFilesDir: File?) {
|
||||
val txtFile = File(wholeFile.parentFile, wholeFile.nameWithoutExtension + ".txt")
|
||||
compile(files, javaFilesDir)
|
||||
|
||||
val classes = classFileFactory
|
||||
.getClassFiles()
|
||||
.sortedBy { it.relativePath }
|
||||
.map { file -> ClassNode().also { ClassReader(file.asByteArray()).accept(it, ClassReader.EXPAND_FRAMES) } }
|
||||
|
||||
val testFileLines = wholeFile.readLines()
|
||||
|
||||
val printBytecodeForTheseMethods = testFileLines
|
||||
.filter { it.startsWith(CURIOUS_ABOUT_DIRECTIVE) }
|
||||
.map { it.substring(CURIOUS_ABOUT_DIRECTIVE.length) }
|
||||
.flatMap { it.split(',').map { it.trim() } }
|
||||
|
||||
val showLocalVariables = testFileLines.any { it.trim() == LOCAL_VARIABLES_TABLE_DIRECTIVE }
|
||||
|
||||
KotlinTestUtils.assertEqualsToFile(txtFile, classes.joinToString(LINE_SEPARATOR.repeat(2)) {
|
||||
renderClassNode(it, printBytecodeForTheseMethods, showLocalVariables)
|
||||
})
|
||||
}
|
||||
|
||||
private fun renderClassNode(clazz: ClassNode, printBytecodeForTheseMethods: List<String>, showLocalVariables: Boolean): String {
|
||||
val fields = (clazz.fields ?: emptyList()).sortedBy { it.name }
|
||||
val methods = (clazz.methods ?: emptyList()).sortedBy { it.name }
|
||||
|
||||
val superTypes = (listOf(clazz.superName) + clazz.interfaces).filterNotNull()
|
||||
|
||||
return buildString {
|
||||
renderVisibilityModifiers(clazz.access)
|
||||
renderModalityModifiers(clazz.access)
|
||||
append(if ((clazz.access and ACC_INTERFACE) != 0) "interface " else "class ")
|
||||
append(clazz.name)
|
||||
|
||||
if (superTypes.isNotEmpty()) {
|
||||
append(" : " + superTypes.joinToString())
|
||||
}
|
||||
|
||||
appendln(" {")
|
||||
|
||||
fields.joinTo(this, LINE_SEPARATOR.repeat(2)) { renderField(it).withMargin() }
|
||||
|
||||
if (fields.isNotEmpty()) {
|
||||
appendln().appendln()
|
||||
}
|
||||
|
||||
methods.joinTo(this, LINE_SEPARATOR.repeat(2)) {
|
||||
val printBytecode = printBytecodeForTheseMethods.contains(it.name)
|
||||
renderMethod(it, printBytecode, showLocalVariables).withMargin()
|
||||
}
|
||||
|
||||
appendln().append("}")
|
||||
}
|
||||
}
|
||||
|
||||
private fun renderField(field: FieldNode) = buildString {
|
||||
renderVisibilityModifiers(field.access)
|
||||
renderModalityModifiers(field.access)
|
||||
append(Type.getType(field.desc).className).append(' ')
|
||||
append(field.name)
|
||||
}
|
||||
|
||||
private fun renderMethod(method: MethodNode, printBytecode: Boolean, showLocalVariables: Boolean) = buildString {
|
||||
renderVisibilityModifiers(method.access)
|
||||
renderModalityModifiers(method.access)
|
||||
val (returnType, parameterTypes) = with(Type.getMethodType(method.desc)) { returnType to argumentTypes }
|
||||
append(returnType.className).append(' ')
|
||||
append(method.name)
|
||||
parameterTypes.mapIndexed { index, type -> "${type.className} p$index" }.joinTo(this, prefix = "(", postfix = ")")
|
||||
|
||||
if (printBytecode && (method.access and ACC_ABSTRACT) == 0) {
|
||||
appendln(" {")
|
||||
append(renderBytecodeInstructions(method.instructions).trimEnd().withMargin())
|
||||
|
||||
if (showLocalVariables) {
|
||||
val localVariableTable = buildLocalVariableTable(method)
|
||||
if (localVariableTable.isNotEmpty()) {
|
||||
appendln().appendln()
|
||||
append(localVariableTable.withMargin())
|
||||
}
|
||||
}
|
||||
|
||||
appendln().append("}")
|
||||
}
|
||||
}
|
||||
|
||||
private fun buildLocalVariableTable(method: MethodNode): String {
|
||||
val localVariables = method.localVariables?.takeIf { it.isNotEmpty() } ?: return ""
|
||||
return buildString {
|
||||
append("Local variables:")
|
||||
for (variable in localVariables) {
|
||||
appendln().append((variable.name + ": " + variable.desc).withMargin())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun renderBytecodeInstructions(instructions: InsnList) = buildString {
|
||||
val labelMappings = LabelMappings()
|
||||
|
||||
var currentInsn = instructions.first
|
||||
while (currentInsn != null) {
|
||||
renderInstruction(currentInsn, labelMappings)
|
||||
currentInsn = currentInsn.next
|
||||
}
|
||||
}
|
||||
|
||||
private fun StringBuilder.renderInstruction(node: AbstractInsnNode, labelMappings: LabelMappings) {
|
||||
if (node is LabelNode) {
|
||||
appendln("LABEL (L" + labelMappings[node.label] + ")")
|
||||
return
|
||||
}
|
||||
|
||||
if (node is LineNumberNode) {
|
||||
appendln("LINENUMBER (" + node.line + ")")
|
||||
return
|
||||
}
|
||||
|
||||
if (node is FrameNode) return
|
||||
|
||||
append(" ").append(Printer.OPCODES[node.opcode] ?: error("Invalid opcode ${node.opcode}"))
|
||||
|
||||
when (node) {
|
||||
is FieldInsnNode -> append(" (" + node.name + ", " + node.desc + ")")
|
||||
is JumpInsnNode -> append(" (L" + labelMappings[node.label.label] + ")")
|
||||
is IntInsnNode -> append(" (" + node.operand + ")")
|
||||
is MethodInsnNode -> append(" (" + node.owner + ", "+ node.name + ", " + node.desc + ")")
|
||||
is VarInsnNode -> append(" (" + node.`var` + ")")
|
||||
is LdcInsnNode -> append(" (" + node.cst + ")")
|
||||
}
|
||||
|
||||
appendln()
|
||||
}
|
||||
|
||||
private fun String.withMargin(margin: String = " "): String {
|
||||
return lineSequence().map { margin + it }.joinToString(LINE_SEPARATOR)
|
||||
}
|
||||
|
||||
private fun StringBuilder.renderVisibilityModifiers(access: Int) {
|
||||
if ((access and ACC_PUBLIC) != 0) append("public ")
|
||||
if ((access and ACC_PRIVATE) != 0) append("private ")
|
||||
if ((access and ACC_PROTECTED) != 0) append("protected ")
|
||||
}
|
||||
|
||||
private fun StringBuilder.renderModalityModifiers(access: Int) {
|
||||
if ((access and ACC_FINAL) != 0) append("final ")
|
||||
if ((access and ACC_ABSTRACT) != 0) append("abstract ")
|
||||
if ((access and ACC_STATIC) != 0) append("static ")
|
||||
}
|
||||
|
||||
private class LabelMappings {
|
||||
private var mappings = hashMapOf<Int, Int>()
|
||||
private var currentIndex = 0
|
||||
|
||||
operator fun get(label: Label): Int {
|
||||
val hashCode = System.identityHashCode(label)
|
||||
return mappings.getOrPut(hashCode) { currentIndex++ }
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.android.synthetic.AndroidComponentRegistrar
|
||||
import org.jetbrains.kotlin.android.synthetic.test.addAndroidExtensionsRuntimeLibrary
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
|
||||
import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension
|
||||
import org.jetbrains.kotlin.codegen.AbstractAsmLikeInstructionListingTest
|
||||
import java.io.File
|
||||
|
||||
abstract class AbstractParcelBytecodeListingTest : AbstractAsmLikeInstructionListingTest() {
|
||||
|
||||
plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/IBinderIInterface.txt
Vendored
+4
-4
@@ -1,7 +1,7 @@
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -46,7 +46,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
|
||||
LABEL (L4)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class User : java/lang/Object, android/os/Parcelable {
|
||||
@@ -64,7 +64,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(android.os.IBinder p0, android.os.IBinder[] p1, java.util.List p2, java.util.ArrayList p3, android.os.IInterface p4)
|
||||
public void <init>(android.os.IBinder binder, android.os.IBinder[] binderArray, java.util.List binderList, java.util.ArrayList binderArrayList, android.os.IInterface intf)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
@@ -78,7 +78,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public final android.os.IInterface getIntf()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
+4
-4
@@ -1,9 +1,9 @@
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class User : java/lang/Object, android/os/Parcelable {
|
||||
@@ -19,7 +19,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(java.lang.String p0, java.lang.String p1, int p2, boolean p3)
|
||||
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
|
||||
|
||||
public int describeContents() {
|
||||
LABEL (L0)
|
||||
@@ -37,5 +37,5 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public final boolean isProUser()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1)
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags)
|
||||
}
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -18,7 +18,7 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr
|
||||
LABEL (L1)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class test/Foo : java/lang/Object, android/os/Parcelable {
|
||||
@@ -34,13 +34,13 @@ public final class test/Foo : java/lang/Object, android/os/Parcelable {
|
||||
RETURN
|
||||
}
|
||||
|
||||
public void <init>(android.accounts.Account p0)
|
||||
public void <init>(android.accounts.Account kp)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final android.accounts.Account getKp()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
+11
-11
@@ -1,13 +1,13 @@
|
||||
public final class k/KotlinParcelable$Companion : java/lang/Object {
|
||||
private void <init>()
|
||||
|
||||
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker p0)
|
||||
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 p0) {
|
||||
public k.KotlinParcelable createFromParcel(android.os.Parcel this) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (source)
|
||||
@@ -36,7 +36,7 @@ public final class k/KotlinParcelable$Creator : java/lang/Object, android/os/Par
|
||||
ARETURN
|
||||
}
|
||||
|
||||
public k.KotlinParcelable[] newArray(int p0)
|
||||
public k.KotlinParcelable[] newArray(int size)
|
||||
|
||||
public java.lang.Object[] newArray(int p0)
|
||||
}
|
||||
@@ -63,11 +63,11 @@ public final class k/KotlinParcelable : java/lang/Object, android/os/Parcelable
|
||||
RETURN
|
||||
}
|
||||
|
||||
public void <init>(int p0)
|
||||
public void <init>(int data)
|
||||
|
||||
public final int component1()
|
||||
|
||||
public final k.KotlinParcelable copy(int p0)
|
||||
public final k.KotlinParcelable copy(int data)
|
||||
|
||||
public static k.KotlinParcelable copy$default(k.KotlinParcelable p0, int p1, int p2, java.lang.Object p3)
|
||||
|
||||
@@ -79,11 +79,11 @@ public final class k/KotlinParcelable : java/lang/Object, android/os/Parcelable
|
||||
|
||||
public int hashCode()
|
||||
|
||||
public final void setData(int p0)
|
||||
public final void setData(int <set-?>)
|
||||
|
||||
public java.lang.String toString()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel dest, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (dest)
|
||||
@@ -104,7 +104,7 @@ public final class k/KotlinParcelable : java/lang/Object, android/os/Parcelable
|
||||
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -121,7 +121,7 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr
|
||||
LABEL (L1)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class test/Foo : java/lang/Object, android/os/Parcelable {
|
||||
@@ -137,13 +137,13 @@ public final class test/Foo : java/lang/Object, android/os/Parcelable {
|
||||
RETURN
|
||||
}
|
||||
|
||||
public void <init>(k.KotlinParcelable p0)
|
||||
public void <init>(k.KotlinParcelable kp)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final k.KotlinParcelable getKp()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
Vendored
+8
-8
@@ -1,13 +1,13 @@
|
||||
final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
|
||||
private void <init>()
|
||||
|
||||
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker p0)
|
||||
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
|
||||
|
||||
public User create(android.os.Parcel p0)
|
||||
public User create(android.os.Parcel parcel)
|
||||
|
||||
public java.lang.Object create(android.os.Parcel p0)
|
||||
|
||||
public User[] newArray(int p0) {
|
||||
public User[] newArray(int size) {
|
||||
LABEL (L0)
|
||||
LINENUMBER (10)
|
||||
ALOAD (0)
|
||||
@@ -27,7 +27,7 @@ final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
|
||||
ARETURN
|
||||
}
|
||||
|
||||
public void write(User p0, android.os.Parcel p1, int p2)
|
||||
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)
|
||||
}
|
||||
@@ -35,7 +35,7 @@ final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -47,7 +47,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
|
||||
LABEL (L1)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0) {
|
||||
public final java.lang.Object[] newArray(int size) {
|
||||
LABEL (L0)
|
||||
ILOAD (1)
|
||||
ANEWARRAY
|
||||
@@ -69,7 +69,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(java.lang.String p0, java.lang.String p1, int p2)
|
||||
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
@@ -79,7 +79,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public final java.lang.String getLastName()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
+8
-8
@@ -1,13 +1,13 @@
|
||||
final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
|
||||
private void <init>()
|
||||
|
||||
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker p0)
|
||||
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
|
||||
|
||||
public User create(android.os.Parcel p0)
|
||||
public User create(android.os.Parcel parcel)
|
||||
|
||||
public java.lang.Object create(android.os.Parcel p0)
|
||||
|
||||
public User[] newArray(int p0) {
|
||||
public User[] newArray(int size) {
|
||||
LABEL (L0)
|
||||
LINENUMBER (19)
|
||||
ILOAD (1)
|
||||
@@ -25,7 +25,7 @@ final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
|
||||
ARETURN
|
||||
}
|
||||
|
||||
public void write(User p0, android.os.Parcel p1, int p2)
|
||||
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)
|
||||
}
|
||||
@@ -33,9 +33,9 @@ final class User$Companion : java/lang/Object, kotlinx/android/parcel/Parceler {
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0) {
|
||||
public final java.lang.Object[] newArray(int size) {
|
||||
LABEL (L0)
|
||||
GETSTATIC (Companion, LUser$Companion;)
|
||||
ILOAD (1)
|
||||
@@ -58,7 +58,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(java.lang.String p0, java.lang.String p1, int p2)
|
||||
public void <init>(java.lang.String firstName, java.lang.String lastName, int age)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
@@ -68,5 +68,5 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public final java.lang.String getLastName()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1)
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags)
|
||||
}
|
||||
|
||||
+4
-4
@@ -13,9 +13,9 @@ public abstract class AbstractUser : java/lang/Object, android/os/Parcelable {
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class User : AbstractUser {
|
||||
@@ -31,7 +31,7 @@ public final class User : AbstractUser {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(java.lang.String p0, java.lang.String p1, int p2, boolean p3)
|
||||
public void <init>(java.lang.String firstName, java.lang.String lastName, int age, boolean isProUser)
|
||||
|
||||
public final int getAge()
|
||||
|
||||
@@ -41,5 +41,5 @@ public final class User : AbstractUser {
|
||||
|
||||
public final boolean isProUser()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1)
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags)
|
||||
}
|
||||
|
||||
plugins/android-extensions/android-extensions-compiler/testData/parcel/codegen/duplicatingClinit.txt
Vendored
+5
-5
@@ -1,7 +1,7 @@
|
||||
public final class User$Companion : java/lang/Object {
|
||||
private void <init>()
|
||||
|
||||
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker p0)
|
||||
public void <init>(kotlin.jvm.internal.DefaultConstructorMarker $constructor_marker)
|
||||
|
||||
private static void test$annotations()
|
||||
}
|
||||
@@ -9,9 +9,9 @@ public final class User$Companion : java/lang/Object {
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class User : java/lang/Object, android/os/Parcelable {
|
||||
@@ -42,11 +42,11 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
RETURN
|
||||
}
|
||||
|
||||
public void <init>(java.lang.String p0)
|
||||
public void <init>(java.lang.String firstName)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final java.lang.String getFirstName()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1)
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags)
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
public final class test/SomeClass$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -23,7 +23,7 @@ public final class test/SomeClass$Creator : java/lang/Object, android/os/Parcela
|
||||
LABEL (L4)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class test/SomeClass : java/lang/Object, android/os/Parcelable {
|
||||
@@ -35,7 +35,7 @@ public final class test/SomeClass : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
Vendored
+4
-4
@@ -1,9 +1,9 @@
|
||||
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class Test : java/lang/Object {
|
||||
@@ -13,13 +13,13 @@ public final class Test : java/lang/Object {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(java.util.List p0)
|
||||
public void <init>(java.util.List names)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final java.util.List getNames()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
+8
-8
@@ -1,9 +1,9 @@
|
||||
public final class TestNotNull$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class TestNotNull : java/lang/Object {
|
||||
@@ -13,13 +13,13 @@ public final class TestNotNull : java/lang/Object {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(android.util.Size p0)
|
||||
public void <init>(android.util.Size a)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final android.util.Size getA()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
@@ -36,9 +36,9 @@ public final class TestNotNull : java/lang/Object {
|
||||
public final class TestNullable$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class TestNullable : java/lang/Object {
|
||||
@@ -48,13 +48,13 @@ public final class TestNullable : java/lang/Object {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(android.util.Size p0)
|
||||
public void <init>(android.util.Size a)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final android.util.Size getA()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
Vendored
+4
-4
@@ -1,7 +1,7 @@
|
||||
public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -17,7 +17,7 @@ public final class test/Foo$Creator : java/lang/Object, android/os/Parcelable$Cr
|
||||
LABEL (L1)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class test/Foo : java/lang/Object, android/os/Parcelable {
|
||||
@@ -33,13 +33,13 @@ public final class test/Foo : java/lang/Object, android/os/Parcelable {
|
||||
RETURN
|
||||
}
|
||||
|
||||
public void <init>(android.os.Parcelable p0)
|
||||
public void <init>(android.os.Parcelable parcelable)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final android.os.Parcelable getParcelable()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
Vendored
+5
-5
@@ -3,7 +3,7 @@ public final class SerializableSimple : java/lang/Object, java/io/Serializable {
|
||||
|
||||
private final java.lang.String b
|
||||
|
||||
public void <init>(java.lang.String p0, java.lang.String p1)
|
||||
public void <init>(java.lang.String a, java.lang.String b)
|
||||
|
||||
public final java.lang.String getA()
|
||||
|
||||
@@ -13,7 +13,7 @@ public final class SerializableSimple : java/lang/Object, java/io/Serializable {
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -31,7 +31,7 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
|
||||
LABEL (L1)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class User : java/lang/Object, android/os/Parcelable {
|
||||
@@ -49,7 +49,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
RETURN
|
||||
}
|
||||
|
||||
public void <init>(SerializableSimple p0, SerializableSimple p1)
|
||||
public void <init>(SerializableSimple notNull, SerializableSimple nullable)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
@@ -57,7 +57,7 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public final SerializableSimple getNullable()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// CURIOUS_ABOUT writeToParcel, createFromParcel, <clinit>, describeContents
|
||||
// WITH_RUNTIME
|
||||
// LOCAL_VARIABLES_TABLE
|
||||
// LOCAL_VARIABLE_TABLE
|
||||
|
||||
import kotlinx.android.parcel.*
|
||||
import android.os.Parcelable
|
||||
|
||||
+46
-21
@@ -1,7 +1,14 @@
|
||||
public final class User$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
public void <init>() {
|
||||
Local variables:
|
||||
0 this: LUser$Creator;
|
||||
}
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
Local variables:
|
||||
0 this: LUser$Creator;
|
||||
1 in: Landroid/os/Parcel;
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -26,13 +33,13 @@ public final class User$Creator : java/lang/Object, android/os/Parcelable$Creato
|
||||
INVOKESPECIAL (User, <init>, (Ljava/lang/String;Ljava/lang/String;IZ)V)
|
||||
ARETURN
|
||||
LABEL (L4)
|
||||
|
||||
Local variables:
|
||||
this: LUser$Creator;
|
||||
in: Landroid/os/Parcel;
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final 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 {
|
||||
@@ -54,27 +61,50 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
RETURN
|
||||
}
|
||||
|
||||
public void <init>(java.lang.String p0, java.lang.String p1, int p2, boolean p3)
|
||||
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)
|
||||
LDC (0)
|
||||
IRETURN
|
||||
LABEL (L1)
|
||||
|
||||
Local variables:
|
||||
this: LUser;
|
||||
}
|
||||
|
||||
public final int getAge()
|
||||
public final int getAge() {
|
||||
Local variables:
|
||||
0 this: LUser;
|
||||
}
|
||||
|
||||
public final java.lang.String getFirstName()
|
||||
public final java.lang.String getFirstName() {
|
||||
Local variables:
|
||||
0 this: LUser;
|
||||
}
|
||||
|
||||
public final java.lang.String getLastName()
|
||||
public final java.lang.String getLastName() {
|
||||
Local variables:
|
||||
0 this: LUser;
|
||||
}
|
||||
|
||||
public final boolean isProUser()
|
||||
public final boolean isProUser() {
|
||||
Local variables:
|
||||
0 this: LUser;
|
||||
}
|
||||
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
Local variables:
|
||||
0 this: LUser;
|
||||
1 parcel: Landroid/os/Parcel;
|
||||
2 flags: I
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
@@ -97,10 +127,5 @@ public final class User : java/lang/Object, android/os/Parcelable {
|
||||
INVOKEVIRTUAL (android/os/Parcel, writeInt, (I)V)
|
||||
RETURN
|
||||
LABEL (L1)
|
||||
|
||||
Local variables:
|
||||
this: LUser;
|
||||
parcel: Landroid/os/Parcel;
|
||||
flags: I
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+4
-4
@@ -1,9 +1,9 @@
|
||||
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0)
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in)
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class Test : java/lang/Object {
|
||||
@@ -13,13 +13,13 @@ public final class Test : java/lang/Object {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(java.util.List p0)
|
||||
public void <init>(java.util.List names)
|
||||
|
||||
public int describeContents()
|
||||
|
||||
public final java.util.List getNames()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
+10
-10
@@ -1,7 +1,7 @@
|
||||
public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -25,7 +25,7 @@ public final class Test$Creator : java/lang/Object, android/os/Parcelable$Creato
|
||||
LABEL (L4)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class Test : java/lang/Object, android/os/Parcelable {
|
||||
@@ -37,13 +37,13 @@ public final class Test : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(android.util.Size p0, android.util.Size p1)
|
||||
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 p0, android.util.Size p1)
|
||||
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)
|
||||
|
||||
@@ -59,7 +59,7 @@ public final class Test : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public java.lang.String toString()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
@@ -91,7 +91,7 @@ public final class Test : java/lang/Object, android/os/Parcelable {
|
||||
public final class TestF$Creator : java/lang/Object, android/os/Parcelable$Creator {
|
||||
public void <init>()
|
||||
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel p0) {
|
||||
public final java.lang.Object createFromParcel(android.os.Parcel in) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (in)
|
||||
@@ -115,7 +115,7 @@ public final class TestF$Creator : java/lang/Object, android/os/Parcelable$Creat
|
||||
LABEL (L4)
|
||||
}
|
||||
|
||||
public final java.lang.Object[] newArray(int p0)
|
||||
public final java.lang.Object[] newArray(int size)
|
||||
}
|
||||
|
||||
public final class TestF : java/lang/Object, android/os/Parcelable {
|
||||
@@ -127,13 +127,13 @@ public final class TestF : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
static void <clinit>()
|
||||
|
||||
public void <init>(android.util.SizeF p0, android.util.SizeF p1)
|
||||
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 p0, android.util.SizeF p1)
|
||||
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)
|
||||
|
||||
@@ -149,7 +149,7 @@ public final class TestF : java/lang/Object, android/os/Parcelable {
|
||||
|
||||
public java.lang.String toString()
|
||||
|
||||
public void writeToParcel(android.os.Parcel p0, int p1) {
|
||||
public void writeToParcel(android.os.Parcel parcel, int flags) {
|
||||
LABEL (L0)
|
||||
ALOAD (1)
|
||||
LDC (parcel)
|
||||
|
||||
Reference in New Issue
Block a user