[scripting] Fix Kotlin reflection metadata for script constructors
This commit is contained in:
committed by
teamcityserver
parent
176803689a
commit
7283ea86af
@@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.codegen.context.CodegenContext
|
||||
import org.jetbrains.kotlin.codegen.context.MethodContext
|
||||
import org.jetbrains.kotlin.codegen.context.ScriptContext
|
||||
import org.jetbrains.kotlin.codegen.serialization.JvmSerializationBindings.METHOD_FOR_FUNCTION
|
||||
import org.jetbrains.kotlin.codegen.serialization.JvmSerializerExtension
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
@@ -82,6 +83,8 @@ class ScriptCodegen private constructor(
|
||||
val jvmSignature = typeMapper.mapScriptSignature(scriptDescriptor)
|
||||
val asmMethod = jvmSignature.asmMethod
|
||||
|
||||
classBuilder.serializationBindings.put(METHOD_FOR_FUNCTION, scriptDescriptor.unsubstitutedPrimaryConstructor, asmMethod)
|
||||
|
||||
scriptContext.resultFieldInfo?.let { resultFieldInfo ->
|
||||
classBuilder.newField(
|
||||
NO_ORIGIN,
|
||||
|
||||
@@ -23,9 +23,10 @@ import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrSetFieldImpl
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrValueParameterSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.types.IrSimpleType
|
||||
import org.jetbrains.kotlin.ir.types.toArrayOrPrimitiveArrayType
|
||||
import org.jetbrains.kotlin.ir.util.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.ir.util.indexOrMinusOne
|
||||
import org.jetbrains.kotlin.ir.util.isCrossinline
|
||||
import org.jetbrains.kotlin.ir.util.isNoinline
|
||||
import org.jetbrains.kotlin.ir.util.varargElementType
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.psi.KtDestructuringDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtScript
|
||||
@@ -155,6 +156,7 @@ class ScriptGenerator(declarationGenerator: DeclarationGenerator) : DeclarationG
|
||||
irScript.providedProperties.forEach { add(it.first) }
|
||||
}
|
||||
irConstructor.parent = irScript
|
||||
irConstructor.metadata = DescriptorMetadataSource.Function(descriptor.unsubstitutedPrimaryConstructor)
|
||||
}
|
||||
|
||||
for (d in ktScript.declarations) {
|
||||
|
||||
Reference in New Issue
Block a user