[JVM IR] Fix plugin API for JVM IR
- Unmute ktx.serialization test
This commit is contained in:
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.jvm
|
||||
import org.jetbrains.kotlin.backend.common.CodegenUtil
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
|
||||
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
|
||||
import org.jetbrains.kotlin.backend.common.ir.BuiltinSymbolsBase
|
||||
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
|
||||
import org.jetbrains.kotlin.backend.jvm.codegen.ClassCodegen
|
||||
import org.jetbrains.kotlin.backend.jvm.lower.MultifileFacadeFileEntry
|
||||
@@ -53,20 +54,24 @@ object JvmBackendFacade {
|
||||
mangler
|
||||
)
|
||||
|
||||
val pluginContext by lazy {
|
||||
psi2irContext.run {
|
||||
val symbols = BuiltinSymbolsBase(irBuiltIns, moduleDescriptor.builtIns, symbolTable.lazyWrapper)
|
||||
IrPluginContext(
|
||||
moduleDescriptor, bindingContext, languageVersionSettings, symbolTable, typeTranslator, irBuiltIns, irLinker, symbols
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
for (extension in pluginExtensions) {
|
||||
psi2ir.addPostprocessingStep { module ->
|
||||
extension.generate(
|
||||
module,
|
||||
IrPluginContext(
|
||||
psi2irContext.moduleDescriptor,
|
||||
psi2irContext.bindingContext,
|
||||
psi2irContext.languageVersionSettings,
|
||||
psi2irContext.symbolTable,
|
||||
psi2irContext.typeTranslator,
|
||||
psi2irContext.irBuiltIns,
|
||||
linker = irLinker
|
||||
)
|
||||
)
|
||||
val old = stubGenerator.unboundSymbolGeneration
|
||||
try {
|
||||
stubGenerator.unboundSymbolGeneration = true
|
||||
extension.generate(module, pluginContext)
|
||||
} finally {
|
||||
stubGenerator.unboundSymbolGeneration = old
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+59
-59
@@ -8,6 +8,23 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
|
||||
DUP
|
||||
INVOKESPECIAL (ListOfUsers$$serializer, <init>, ()V)
|
||||
PUTSTATIC (INSTANCE, LListOfUsers$$serializer;)
|
||||
LABEL (L0)
|
||||
LINENUMBER (12)
|
||||
NEW
|
||||
DUP
|
||||
LDC (ListOfUsers)
|
||||
GETSTATIC (INSTANCE, LListOfUsers$$serializer;)
|
||||
CHECKCAST
|
||||
ICONST_1
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (0)
|
||||
ALOAD (0)
|
||||
LDC (list)
|
||||
ICONST_0
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (0)
|
||||
CHECKCAST
|
||||
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
|
||||
RETURN
|
||||
}
|
||||
|
||||
@@ -17,21 +34,6 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
|
||||
LABEL (L1)
|
||||
LINENUMBER (12)
|
||||
INVOKESPECIAL (java/lang/Object, <init>, ()V)
|
||||
NEW
|
||||
DUP
|
||||
LDC (ListOfUsers)
|
||||
ALOAD (0)
|
||||
CHECKCAST
|
||||
ICONST_1
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (1)
|
||||
ALOAD (1)
|
||||
LDC (list)
|
||||
ICONST_0
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (1)
|
||||
CHECKCAST
|
||||
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
|
||||
RETURN
|
||||
LABEL (L2)
|
||||
}
|
||||
@@ -203,10 +205,8 @@ public final class ListOfUsers$$serializer : java/lang/Object, kotlinx/serializa
|
||||
ALOAD (4)
|
||||
ALOAD (3)
|
||||
INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, endStructure, (Lkotlinx/serialization/SerialDescriptor;)V)
|
||||
LABEL (L2)
|
||||
LINENUMBER (13)
|
||||
RETURN
|
||||
LABEL (L3)
|
||||
LABEL (L2)
|
||||
}
|
||||
|
||||
public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) {
|
||||
@@ -317,6 +317,23 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
|
||||
DUP
|
||||
INVOKESPECIAL (OptionalUser$$serializer, <init>, ()V)
|
||||
PUTSTATIC (INSTANCE, LOptionalUser$$serializer;)
|
||||
LABEL (L0)
|
||||
LINENUMBER (9)
|
||||
NEW
|
||||
DUP
|
||||
LDC (OptionalUser)
|
||||
GETSTATIC (INSTANCE, LOptionalUser$$serializer;)
|
||||
CHECKCAST
|
||||
ICONST_1
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (0)
|
||||
ALOAD (0)
|
||||
LDC (user)
|
||||
ICONST_1
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (0)
|
||||
CHECKCAST
|
||||
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
|
||||
RETURN
|
||||
}
|
||||
|
||||
@@ -326,21 +343,6 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
|
||||
LABEL (L1)
|
||||
LINENUMBER (9)
|
||||
INVOKESPECIAL (java/lang/Object, <init>, ()V)
|
||||
NEW
|
||||
DUP
|
||||
LDC (OptionalUser)
|
||||
ALOAD (0)
|
||||
CHECKCAST
|
||||
ICONST_1
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (1)
|
||||
ALOAD (1)
|
||||
LDC (user)
|
||||
ICONST_1
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (1)
|
||||
CHECKCAST
|
||||
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
|
||||
RETURN
|
||||
LABEL (L2)
|
||||
}
|
||||
@@ -519,10 +521,8 @@ public final class OptionalUser$$serializer : java/lang/Object, kotlinx/serializ
|
||||
ALOAD (4)
|
||||
ALOAD (3)
|
||||
INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, endStructure, (Lkotlinx/serialization/SerialDescriptor;)V)
|
||||
LABEL (L7)
|
||||
LINENUMBER (10)
|
||||
RETURN
|
||||
LABEL (L8)
|
||||
LABEL (L7)
|
||||
}
|
||||
|
||||
public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) {
|
||||
@@ -670,6 +670,27 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
|
||||
DUP
|
||||
INVOKESPECIAL (User$$serializer, <init>, ()V)
|
||||
PUTSTATIC (INSTANCE, LUser$$serializer;)
|
||||
LABEL (L0)
|
||||
LINENUMBER (6)
|
||||
NEW
|
||||
DUP
|
||||
LDC (User)
|
||||
GETSTATIC (INSTANCE, LUser$$serializer;)
|
||||
CHECKCAST
|
||||
ICONST_2
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (0)
|
||||
ALOAD (0)
|
||||
LDC (firstName)
|
||||
ICONST_0
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (0)
|
||||
LDC (lastName)
|
||||
ICONST_0
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (0)
|
||||
CHECKCAST
|
||||
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
|
||||
RETURN
|
||||
}
|
||||
|
||||
@@ -679,25 +700,6 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
|
||||
LABEL (L1)
|
||||
LINENUMBER (6)
|
||||
INVOKESPECIAL (java/lang/Object, <init>, ()V)
|
||||
NEW
|
||||
DUP
|
||||
LDC (User)
|
||||
ALOAD (0)
|
||||
CHECKCAST
|
||||
ICONST_2
|
||||
INVOKESPECIAL (kotlinx/serialization/internal/SerialClassDescImpl, <init>, (Ljava/lang/String;Lkotlinx/serialization/internal/GeneratedSerializer;I)V)
|
||||
ASTORE (1)
|
||||
ALOAD (1)
|
||||
LDC (firstName)
|
||||
ICONST_0
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (1)
|
||||
LDC (lastName)
|
||||
ICONST_0
|
||||
INVOKEVIRTUAL (kotlinx/serialization/internal/SerialClassDescImpl, addElement, (Ljava/lang/String;Z)V)
|
||||
ALOAD (1)
|
||||
CHECKCAST
|
||||
PUTSTATIC (descriptor, Lkotlinx/serialization/SerialDescriptor;)
|
||||
RETURN
|
||||
LABEL (L2)
|
||||
}
|
||||
@@ -878,10 +880,8 @@ public final class User$$serializer : java/lang/Object, kotlinx/serialization/in
|
||||
ALOAD (4)
|
||||
ALOAD (3)
|
||||
INVOKEINTERFACE (kotlinx/serialization/CompositeEncoder, endStructure, (Lkotlinx/serialization/SerialDescriptor;)V)
|
||||
LABEL (L2)
|
||||
LINENUMBER (7)
|
||||
RETURN
|
||||
LABEL (L3)
|
||||
LABEL (L2)
|
||||
}
|
||||
|
||||
public void serialize(kotlinx.serialization.Encoder encoder, java.lang.Object value) {
|
||||
@@ -1008,4 +1008,4 @@ public final class User : java/lang/Object {
|
||||
public final java.lang.String getFirstName()
|
||||
|
||||
public final java.lang.String getLastName()
|
||||
}
|
||||
}
|
||||
@@ -52,7 +52,6 @@ org.jetbrains.kotlin.psi.injection.StringInterpolationInjectionTest.testInterpol
|
||||
org.jetbrains.kotlin.nj2k.NewJavaToKotlinConverterSingleFileTestGenerated.Issues.testKt_8170, KT-36459,,
|
||||
org.jetbrains.kotlin.shortenRefs.ShortenRefsTestGenerated.testExtensionForObject2, Always red,,
|
||||
org.jetbrains.kotlin.util.KotlinVersionsTest.testVersionsAreConsistent, KT-35567,,
|
||||
org.jetbrains.kotlinx.serialization.SerializationIrBytecodeListingTestGenerated.testBasic, wait until new serialization runtime version will be publicly available,,
|
||||
org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithAPT.testClassWithTypeParameter, KT-36448,,
|
||||
org.jetbrains.kotlin.jvm.compiler.CompileKotlinAgainstJavaTestGenerated.WithoutAPT.testClassWithTypeParameter, KT-36448,,
|
||||
org.jetbrains.kotlin.idea.debugger.test.AsyncStackTraceTestGenerated.testAllFilesPresentInAsyncStackTrace, redesign test AsyncStackTraces,,
|
||||
|
||||
|
Reference in New Issue
Block a user