[kotlin compiler][update] 1.2.50-dev-1070
This commit is contained in:
+4
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.backend.common.validateIrModule
|
|||||||
import org.jetbrains.kotlin.backend.jvm.descriptors.initialize
|
import org.jetbrains.kotlin.backend.jvm.descriptors.initialize
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.*
|
import org.jetbrains.kotlin.backend.konan.descriptors.*
|
||||||
import org.jetbrains.kotlin.backend.common.DumpIrTreeWithDescriptorsVisitor
|
import org.jetbrains.kotlin.backend.common.DumpIrTreeWithDescriptorsVisitor
|
||||||
|
import org.jetbrains.kotlin.backend.common.descriptors.DescriptorsFactory
|
||||||
import org.jetbrains.kotlin.backend.konan.ir.KonanIr
|
import org.jetbrains.kotlin.backend.konan.ir.KonanIr
|
||||||
import org.jetbrains.kotlin.backend.konan.library.KonanLibraryWriter
|
import org.jetbrains.kotlin.backend.konan.library.KonanLibraryWriter
|
||||||
import org.jetbrains.kotlin.backend.konan.library.LinkData
|
import org.jetbrains.kotlin.backend.konan.library.LinkData
|
||||||
@@ -168,6 +169,9 @@ internal class SpecialDeclarationsFactory(val context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal class Context(config: KonanConfig) : KonanBackendContext(config) {
|
internal class Context(config: KonanConfig) : KonanBackendContext(config) {
|
||||||
|
override val descriptorsFactory: DescriptorsFactory
|
||||||
|
get() = TODO("not implemented")
|
||||||
|
|
||||||
override fun getClass(fqName: FqName): ClassDescriptor {
|
override fun getClass(fqName: FqName): ClassDescriptor {
|
||||||
TODO("not implemented")
|
TODO("not implemented")
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.ir.util.*
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver
|
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitClassReceiver
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.TypeProjectionImpl
|
import org.jetbrains.kotlin.types.TypeProjectionImpl
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
@@ -53,7 +54,7 @@ internal class EnumSpecialDeclarationsFactory(val context: Context) {
|
|||||||
val endOffset = enumClassDescriptor.endOffsetOrUndefined
|
val endOffset = enumClassDescriptor.endOffsetOrUndefined
|
||||||
|
|
||||||
val implObjectDescriptor = ClassDescriptorImpl(enumClassDescriptor, "OBJECT".synthesizedName, Modality.FINAL,
|
val implObjectDescriptor = ClassDescriptorImpl(enumClassDescriptor, "OBJECT".synthesizedName, Modality.FINAL,
|
||||||
ClassKind.OBJECT, listOf(context.builtIns.anyType), SourceElement.NO_SOURCE, false)
|
ClassKind.OBJECT, listOf(context.builtIns.anyType), SourceElement.NO_SOURCE, false, LockBasedStorageManager.NO_LOCKS)
|
||||||
|
|
||||||
val valuesProperty = createEnumValuesField(enumClassDescriptor, implObjectDescriptor)
|
val valuesProperty = createEnumValuesField(enumClassDescriptor, implObjectDescriptor)
|
||||||
val valuesField = IrFieldImpl(startOffset, endOffset, DECLARATION_ORIGIN_ENUM, valuesProperty)
|
val valuesField = IrFieldImpl(startOffset, endOffset, DECLARATION_ORIGIN_ENUM, valuesProperty)
|
||||||
|
|||||||
+2
-1
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.storage.getValue
|
import org.jetbrains.kotlin.storage.getValue
|
||||||
|
|
||||||
@@ -47,7 +48,7 @@ class KonanBuiltInClassDescriptorFactory(
|
|||||||
ClassDescriptorImpl(
|
ClassDescriptorImpl(
|
||||||
computeContainingDeclaration(moduleDescriptor),
|
computeContainingDeclaration(moduleDescriptor),
|
||||||
CLONEABLE_NAME, Modality.ABSTRACT, ClassKind.INTERFACE, listOf(moduleDescriptor.builtIns.anyType),
|
CLONEABLE_NAME, Modality.ABSTRACT, ClassKind.INTERFACE, listOf(moduleDescriptor.builtIns.anyType),
|
||||||
SourceElement.NO_SOURCE, /* isExternal = */ false
|
SourceElement.NO_SOURCE, /* isExternal = */ false, LockBasedStorageManager.NO_LOCKS
|
||||||
).apply {
|
).apply {
|
||||||
initialize(CloneableClassScope(storageManager, this), emptySet(), null)
|
initialize(CloneableClassScope(storageManager, this), emptySet(), null)
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-9
@@ -18,11 +18,12 @@ package org.jetbrains.kotlin.backend.konan
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.findPackage
|
import org.jetbrains.kotlin.backend.konan.descriptors.findPackage
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.getStringValue
|
import org.jetbrains.kotlin.backend.konan.descriptors.getStringValue
|
||||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.annotations
|
import org.jetbrains.kotlin.backend.konan.irasdescriptors.*
|
||||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.constructedClass
|
|
||||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.getExternalObjCMethodInfo
|
|
||||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.isReal
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
import org.jetbrains.kotlin.ir.declarations.IrConstructor
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
import org.jetbrains.kotlin.ir.declarations.IrFunction
|
||||||
@@ -128,9 +129,9 @@ fun FunctionDescriptor.getObjCMethodInfo(): ObjCMethodInfo? = this.getObjCMethod
|
|||||||
fun IrFunction.isObjCBridgeBased(): Boolean {
|
fun IrFunction.isObjCBridgeBased(): Boolean {
|
||||||
assert(this.isReal)
|
assert(this.isReal)
|
||||||
|
|
||||||
return this.annotations.hasAnnotation(objCMethodFqName) ||
|
return this.descriptor.annotations.hasAnnotation(objCMethodFqName) ||
|
||||||
this.annotations.hasAnnotation(objCFactoryFqName) ||
|
this.descriptor.annotations.hasAnnotation(objCFactoryFqName) ||
|
||||||
this.annotations.hasAnnotation(objCConstructorFqName)
|
this.descriptor.annotations.hasAnnotation(objCConstructorFqName)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -208,10 +209,10 @@ fun ConstructorDescriptor.getObjCInitMethod(): FunctionDescriptor? {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun IrConstructor.isObjCConstructor(): Boolean = this.annotations.hasAnnotation(objCConstructorFqName)
|
fun IrConstructor.isObjCConstructor(): Boolean = this.descriptor.annotations.hasAnnotation(objCConstructorFqName)
|
||||||
|
|
||||||
fun IrConstructor.getObjCInitMethod(): IrSimpleFunction? {
|
fun IrConstructor.getObjCInitMethod(): IrSimpleFunction? {
|
||||||
return this.annotations.findAnnotation(objCConstructorFqName)?.let {
|
return this.descriptor.annotations.findAnnotation(objCConstructorFqName)?.let {
|
||||||
val initSelector = it.getStringValue("initSelector")
|
val initSelector = it.getStringValue("initSelector")
|
||||||
this.constructedClass.declarations.asSequence()
|
this.constructedClass.declarations.asSequence()
|
||||||
.filterIsInstance<IrSimpleFunction>()
|
.filterIsInstance<IrSimpleFunction>()
|
||||||
|
|||||||
+2
-1
@@ -88,8 +88,9 @@ internal fun IrSimpleFunction.resolveFakeOverride(): IrSimpleFunction {
|
|||||||
|
|
||||||
private val intrinsicAnnotation = FqName("konan.internal.Intrinsic")
|
private val intrinsicAnnotation = FqName("konan.internal.Intrinsic")
|
||||||
|
|
||||||
|
// TODO: don't forget to remove descriptor access here.
|
||||||
internal val FunctionDescriptor.isIntrinsic: Boolean
|
internal val FunctionDescriptor.isIntrinsic: Boolean
|
||||||
get() = this.annotations.hasAnnotation(intrinsicAnnotation)
|
get() = this.descriptor.annotations.hasAnnotation(intrinsicAnnotation)
|
||||||
|
|
||||||
private val intrinsicTypes = setOf(
|
private val intrinsicTypes = setOf(
|
||||||
"kotlin.Boolean", "kotlin.Char",
|
"kotlin.Boolean", "kotlin.Char",
|
||||||
|
|||||||
+2
-1
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl
|
import org.jetbrains.kotlin.resolve.scopes.MemberScopeImpl
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
import org.jetbrains.kotlin.storage.getValue
|
import org.jetbrains.kotlin.storage.getValue
|
||||||
import org.jetbrains.kotlin.utils.Printer
|
import org.jetbrains.kotlin.utils.Printer
|
||||||
@@ -125,7 +126,7 @@ private class ForwardDeclarationsPackageFragmentDescriptor(
|
|||||||
return ClassDescriptorImpl(
|
return ClassDescriptorImpl(
|
||||||
this@ForwardDeclarationsPackageFragmentDescriptor,
|
this@ForwardDeclarationsPackageFragmentDescriptor,
|
||||||
name, Modality.FINAL, classKind,
|
name, Modality.FINAL, classKind,
|
||||||
listOf(supertype), SourceElement.NO_SOURCE, false
|
listOf(supertype), SourceElement.NO_SOURCE, false, LockBasedStorageManager.NO_LOCKS
|
||||||
).apply {
|
).apply {
|
||||||
this.initialize(MemberScope.Empty, emptySet(), null)
|
this.initialize(MemberScope.Empty, emptySet(), null)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -107,6 +107,8 @@ class IrFileImpl(entry: SourceManager.FileEntry) : IrFile {
|
|||||||
|
|
||||||
//-------------------------------------------------------------------------//
|
//-------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
override val annotations: MutableList<IrCall>
|
||||||
|
get() = TODO("not implemented")
|
||||||
override val fqName: FqName
|
override val fqName: FqName
|
||||||
get() = TODO("not implemented")
|
get() = TODO("not implemented")
|
||||||
override val fileAnnotations: MutableList<AnnotationDescriptor>
|
override val fileAnnotations: MutableList<AnnotationDescriptor>
|
||||||
|
|||||||
+9
-2
@@ -18,11 +18,17 @@ package org.jetbrains.kotlin.backend.konan.irasdescriptors
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.konan.*
|
import org.jetbrains.kotlin.backend.konan.*
|
||||||
import org.jetbrains.kotlin.backend.konan.llvm.llvmSymbolOrigin
|
import org.jetbrains.kotlin.backend.konan.llvm.llvmSymbolOrigin
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||||
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrCatch
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrTypeOperatorCall
|
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
|
import org.jetbrains.kotlin.resolve.constants.*
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
|
|
||||||
// This file contains some IR utilities which actually use descriptors.
|
// This file contains some IR utilities which actually use descriptors.
|
||||||
@@ -58,3 +64,4 @@ internal fun IrTypeOperatorCall.getTypeOperandClass(context: Context): IrClass?
|
|||||||
|
|
||||||
internal fun IrCatch.getCatchParameterTypeClass(context: Context): IrClass? =
|
internal fun IrCatch.getCatchParameterTypeClass(context: Context): IrClass? =
|
||||||
context.ir.getClass(this.catchParameter.type)
|
context.ir.getClass(this.catchParameter.type)
|
||||||
|
|
||||||
|
|||||||
+3
-1
@@ -28,10 +28,12 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
|||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
import org.jetbrains.kotlin.ir.declarations.impl.IrFieldImpl
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrConst
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
import org.jetbrains.kotlin.ir.expressions.IrExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
|
import org.jetbrains.kotlin.ir.expressions.IrFunctionAccessExpression
|
||||||
import org.jetbrains.kotlin.ir.expressions.getTypeArgumentOrDefault
|
import org.jetbrains.kotlin.ir.expressions.getTypeArgumentOrDefault
|
||||||
import org.jetbrains.kotlin.ir.util.SymbolTable
|
import org.jetbrains.kotlin.ir.util.SymbolTable
|
||||||
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||||
@@ -218,7 +220,7 @@ fun IrModuleFragment.referenceAllTypeExternalClassifiers(symbolTable: SymbolTabl
|
|||||||
|
|
||||||
override fun visitDeclaration(declaration: IrDeclaration) {
|
override fun visitDeclaration(declaration: IrDeclaration) {
|
||||||
super.visitDeclaration(declaration)
|
super.visitDeclaration(declaration)
|
||||||
declaration.annotations.getAllAnnotations().forEach {
|
declaration.descriptor.annotations.getAllAnnotations().forEach {
|
||||||
handleClassReferences(it.annotation)
|
handleClassReferences(it.annotation)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-16
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.ir.expressions.IrCall
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.constants.StringValue
|
import org.jetbrains.kotlin.resolve.constants.StringValue
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
@@ -48,26 +49,26 @@ import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
|
|||||||
*/
|
*/
|
||||||
internal tailrec fun DeclarationDescriptor.isExported(): Boolean {
|
internal tailrec fun DeclarationDescriptor.isExported(): Boolean {
|
||||||
// TODO: revise
|
// TODO: revise
|
||||||
|
val descriptorAnnotations = this.descriptor.annotations
|
||||||
if (this.annotations.findAnnotation(symbolNameAnnotation) != null) {
|
if (descriptorAnnotations.hasAnnotation(symbolNameAnnotation)) {
|
||||||
// Treat any `@SymbolName` declaration as exported.
|
// Treat any `@SymbolName` declaration as exported.
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (this.annotations.findAnnotation(exportForCppRuntimeAnnotation) != null) {
|
if (descriptorAnnotations.hasAnnotation(exportForCppRuntimeAnnotation)) {
|
||||||
// Treat any `@ExportForCppRuntime` declaration as exported.
|
// Treat any `@ExportForCppRuntime` declaration as exported.
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (this.annotations.findAnnotation(cnameAnnotation) != null) {
|
if (descriptorAnnotations.hasAnnotation(cnameAnnotation)) {
|
||||||
// Treat `@CName` declaration as exported.
|
// Treat `@CName` declaration as exported.
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (this.annotations.hasAnnotation(exportForCompilerAnnotation)) {
|
if (descriptorAnnotations.hasAnnotation(exportForCompilerAnnotation)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (this.annotations.hasAnnotation(publishedApiAnnotation)){
|
if (descriptorAnnotations.hasAnnotation(publishedApiAnnotation)){
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if (this.annotations.hasAnnotation(inlineExposedAnnotation)){
|
if (descriptorAnnotations.hasAnnotation(inlineExposedAnnotation)){
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,16 +203,14 @@ internal val FunctionDescriptor.symbolName: String
|
|||||||
if (!this.isExported()) {
|
if (!this.isExported()) {
|
||||||
throw AssertionError(this.descriptor.toString())
|
throw AssertionError(this.descriptor.toString())
|
||||||
}
|
}
|
||||||
|
this.descriptor.annotations.findAnnotation(symbolNameAnnotation)?.let {
|
||||||
this.annotations.findAnnotation(symbolNameAnnotation)?.let {
|
|
||||||
if (this.isExternal) {
|
if (this.isExternal) {
|
||||||
return getStringValue(it)!!
|
return getStringValue(it)!!
|
||||||
} else {
|
} else {
|
||||||
// ignore; TODO: report compile error
|
// ignore; TODO: report compile error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.descriptor.annotations.findAnnotation(exportForCppRuntimeAnnotation)?.let {
|
||||||
this.annotations.findAnnotation(exportForCppRuntimeAnnotation)?.let {
|
|
||||||
val name = getStringValue(it) ?: this.name.asString()
|
val name = getStringValue(it) ?: this.name.asString()
|
||||||
return name // no wrapping currently required
|
return name // no wrapping currently required
|
||||||
}
|
}
|
||||||
@@ -234,12 +233,10 @@ internal val IrField.symbolName: String
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getStringValue(annotation: AnnotationDescriptor): String? {
|
private fun getStringValue(annotation: AnnotationDescriptor): String? {
|
||||||
annotation.allValueArguments.values.ifNotEmpty {
|
return annotation.allValueArguments.values.ifNotEmpty {
|
||||||
val stringValue = this.single() as StringValue
|
val stringValue = single() as? StringValue
|
||||||
return stringValue.value
|
stringValue?.value
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: bring here dependencies of this method?
|
// TODO: bring here dependencies of this method?
|
||||||
|
|||||||
+1
-1
@@ -2316,7 +2316,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
|||||||
assert(irClass.isInterface)
|
assert(irClass.isInterface)
|
||||||
assert(irClass.isExternalObjCClass())
|
assert(irClass.isExternalObjCClass())
|
||||||
|
|
||||||
val annotation = irClass.annotations.findAnnotation(externalObjCClassFqName)!!
|
val annotation = irClass.descriptor.annotations.findAnnotation(externalObjCClassFqName)!!
|
||||||
val protocolGetterName = annotation.getStringValue("protocolGetter")
|
val protocolGetterName = annotation.getStringValue("protocolGetter")
|
||||||
val protocolGetter = context.llvm.externalFunction(
|
val protocolGetter = context.llvm.externalFunction(
|
||||||
protocolGetterName,
|
protocolGetterName,
|
||||||
|
|||||||
+2
-2
@@ -101,7 +101,7 @@ internal class KotlinObjCClassInfoGenerator(override val context: Context) : Con
|
|||||||
|
|
||||||
private fun selectClassName(irClass: IrClass): String? {
|
private fun selectClassName(irClass: IrClass): String? {
|
||||||
val exportObjCClassAnnotation =
|
val exportObjCClassAnnotation =
|
||||||
irClass.annotations.findAnnotation(context.interopBuiltIns.exportObjCClass.fqNameSafe)
|
irClass.descriptor.annotations.findAnnotation(context.interopBuiltIns.exportObjCClass.fqNameSafe)
|
||||||
|
|
||||||
return if (exportObjCClassAnnotation != null) {
|
return if (exportObjCClassAnnotation != null) {
|
||||||
exportObjCClassAnnotation.getStringValueOrNull("name") ?: irClass.name.asString()
|
exportObjCClassAnnotation.getStringValueOrNull("name") ?: irClass.name.asString()
|
||||||
@@ -141,7 +141,7 @@ internal class KotlinObjCClassInfoGenerator(override val context: Context) : Con
|
|||||||
.filterIsInstance<IrSimpleFunction>()
|
.filterIsInstance<IrSimpleFunction>()
|
||||||
.mapNotNull {
|
.mapNotNull {
|
||||||
val annotation =
|
val annotation =
|
||||||
it.annotations.findAnnotation(context.interopBuiltIns.objCMethodImp.fqNameSafe) ?:
|
it.descriptor.annotations.findAnnotation(context.interopBuiltIns.objCMethodImp.fqNameSafe) ?:
|
||||||
return@mapNotNull null
|
return@mapNotNull null
|
||||||
|
|
||||||
ObjCMethodDesc(
|
ObjCMethodDesc(
|
||||||
|
|||||||
+1
-1
@@ -87,7 +87,7 @@ internal class RTTIGenerator(override val context: Context) : ContextUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun exportTypeInfoIfRequired(classDesc: ClassDescriptor, typeInfoGlobal: LLVMValueRef?) {
|
private fun exportTypeInfoIfRequired(classDesc: ClassDescriptor, typeInfoGlobal: LLVMValueRef?) {
|
||||||
val annot = classDesc.annotations.findAnnotation(FqName("konan.ExportTypeInfo"))
|
val annot = classDesc.descriptor.annotations.findAnnotation(FqName("konan.ExportTypeInfo"))
|
||||||
if (annot != null) {
|
if (annot != null) {
|
||||||
val nameValue = annot.allValueArguments.values.single() as StringValue
|
val nameValue = annot.allValueArguments.values.single() as StringValue
|
||||||
// TODO: use LLVMAddAlias?
|
// TODO: use LLVMAddAlias?
|
||||||
|
|||||||
+3
-1
@@ -57,6 +57,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.TypeUtils
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
|
|
||||||
@@ -208,7 +209,8 @@ internal class CallableReferenceLowering(val context: Context): FileLoweringPass
|
|||||||
/* kind = */ ClassKind.CLASS,
|
/* kind = */ ClassKind.CLASS,
|
||||||
/* superTypes = */ superTypes,
|
/* superTypes = */ superTypes,
|
||||||
/* source = */ SourceElement.NO_SOURCE,
|
/* source = */ SourceElement.NO_SOURCE,
|
||||||
/* isExternal = */ false
|
/* isExternal = */ false,
|
||||||
|
/* storageManager = */ LockBasedStorageManager.NO_LOCKS
|
||||||
) {
|
) {
|
||||||
override fun getVisibility() = Visibilities.PRIVATE
|
override fun getVisibility() = Visibilities.PRIVATE
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -40,6 +40,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny
|
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassOrAny
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces
|
import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperInterfaces
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||||
import org.jetbrains.kotlin.types.TypeUtils
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
@@ -221,7 +222,8 @@ internal class DeepCopyIrTreeWithDescriptors(val targetDescriptor: FunctionDescr
|
|||||||
/* kind = */ oldDescriptor.kind,
|
/* kind = */ oldDescriptor.kind,
|
||||||
/* supertypes = */ listOf(newSuperClass.defaultType) + newInterfaces.map { it.defaultType },
|
/* supertypes = */ listOf(newSuperClass.defaultType) + newInterfaces.map { it.defaultType },
|
||||||
/* source = */ oldDescriptor.source,
|
/* source = */ oldDescriptor.source,
|
||||||
/* isExternal = */ oldDescriptor.isExternal
|
/* isExternal = */ oldDescriptor.isExternal,
|
||||||
|
/* storageManager = */ LockBasedStorageManager.NO_LOCKS
|
||||||
) {
|
) {
|
||||||
override fun getVisibility() = visibility
|
override fun getVisibility() = visibility
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -46,6 +46,7 @@ import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
|||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.TypeProjectionImpl
|
import org.jetbrains.kotlin.types.TypeProjectionImpl
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
@@ -252,7 +253,7 @@ internal class EnumClassLowering(val context: Context) : ClassLoweringPass {
|
|||||||
val endOffset = irClass.endOffset
|
val endOffset = irClass.endOffset
|
||||||
val descriptor = irClass.descriptor
|
val descriptor = irClass.descriptor
|
||||||
val defaultClassDescriptor = ClassDescriptorImpl(descriptor, "DEFAULT".synthesizedName, Modality.FINAL,
|
val defaultClassDescriptor = ClassDescriptorImpl(descriptor, "DEFAULT".synthesizedName, Modality.FINAL,
|
||||||
ClassKind.CLASS, listOf(descriptor.defaultType), SourceElement.NO_SOURCE, false)
|
ClassKind.CLASS, listOf(descriptor.defaultType), SourceElement.NO_SOURCE, false, LockBasedStorageManager.NO_LOCKS)
|
||||||
val defaultClass = IrClassImpl(startOffset, endOffset, IrDeclarationOrigin.DEFINED, defaultClassDescriptor)
|
val defaultClass = IrClassImpl(startOffset, endOffset, IrDeclarationOrigin.DEFINED, defaultClassDescriptor)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+3
-4
@@ -19,10 +19,7 @@ package org.jetbrains.kotlin.backend.konan.lower
|
|||||||
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
import org.jetbrains.kotlin.backend.common.ClassLoweringPass
|
||||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
|
||||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||||
import org.jetbrains.kotlin.ir.IrStatement
|
import org.jetbrains.kotlin.ir.IrStatement
|
||||||
@@ -138,6 +135,8 @@ internal class InitializersLowering(val context: CommonBackendContext) : ClassLo
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun lowerConstructors(initializerMethodSymbol: IrSimpleFunctionSymbol?) {
|
private fun lowerConstructors(initializerMethodSymbol: IrSimpleFunctionSymbol?) {
|
||||||
|
if (irClass.kind == ClassKind.ANNOTATION_CLASS)
|
||||||
|
return
|
||||||
irClass.transformChildrenVoid(object : IrElementTransformerVoid() {
|
irClass.transformChildrenVoid(object : IrElementTransformerVoid() {
|
||||||
|
|
||||||
override fun visitClass(declaration: IrClass): IrStatement {
|
override fun visitClass(declaration: IrClass): IrStatement {
|
||||||
|
|||||||
+3
-1
@@ -56,6 +56,7 @@ import org.jetbrains.kotlin.ir.visitors.*
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.typeUtil.isUnit
|
import org.jetbrains.kotlin.types.typeUtil.isUnit
|
||||||
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
|
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
|
||||||
@@ -331,7 +332,8 @@ internal class SuspendFunctionsLowering(val context: Context): DeclarationContai
|
|||||||
/* kind = */ ClassKind.CLASS,
|
/* kind = */ ClassKind.CLASS,
|
||||||
/* superTypes = */ superTypes,
|
/* superTypes = */ superTypes,
|
||||||
/* source = */ SourceElement.NO_SOURCE,
|
/* source = */ SourceElement.NO_SOURCE,
|
||||||
/* isExternal = */ false
|
/* isExternal = */ false,
|
||||||
|
/* storageManager = */ LockBasedStorageManager.NO_LOCKS
|
||||||
)
|
)
|
||||||
coroutineClass = IrClassImpl(
|
coroutineClass = IrClassImpl(
|
||||||
startOffset = irFunction.startOffset,
|
startOffset = irFunction.startOffset,
|
||||||
|
|||||||
+3
-1
@@ -53,6 +53,7 @@ import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
internal class TestProcessor (val context: KonanBackendContext) {
|
internal class TestProcessor (val context: KonanBackendContext) {
|
||||||
@@ -531,7 +532,8 @@ internal class TestProcessor (val context: KonanBackendContext) {
|
|||||||
/* kind = */ ClassKind.CLASS,
|
/* kind = */ ClassKind.CLASS,
|
||||||
/* superTypes = */ listOf(superType),
|
/* superTypes = */ listOf(superType),
|
||||||
/* source = */ SourceElement.NO_SOURCE,
|
/* source = */ SourceElement.NO_SOURCE,
|
||||||
/* isExternal = */ false
|
/* isExternal = */ false,
|
||||||
|
/* storageManager = */ LockBasedStorageManager.NO_LOCKS
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-2
@@ -30,12 +30,15 @@ import org.jetbrains.kotlin.backend.konan.ir.IrSuspensionPoint
|
|||||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.*
|
import org.jetbrains.kotlin.backend.konan.irasdescriptors.*
|
||||||
import org.jetbrains.kotlin.backend.konan.llvm.functionName
|
import org.jetbrains.kotlin.backend.konan.llvm.functionName
|
||||||
import org.jetbrains.kotlin.backend.konan.llvm.localHash
|
import org.jetbrains.kotlin.backend.konan.llvm.localHash
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||||
|
import org.jetbrains.kotlin.ir.backend.js.utils.constructedClass
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.*
|
import org.jetbrains.kotlin.ir.expressions.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||||
|
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.getArguments
|
import org.jetbrains.kotlin.ir.util.getArguments
|
||||||
import org.jetbrains.kotlin.ir.util.simpleFunctions
|
import org.jetbrains.kotlin.ir.util.simpleFunctions
|
||||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||||
@@ -231,6 +234,18 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
|
|||||||
element.acceptChildrenVoid(this)
|
element.acceptChildrenVoid(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitConstructor(declaration: IrConstructor) {
|
||||||
|
val body = declaration.body
|
||||||
|
assert (body != null || declaration.symbol.constructedClass.kind == ClassKind.ANNOTATION_CLASS) {
|
||||||
|
"Non-annotation class constructor has empty body"
|
||||||
|
}
|
||||||
|
DEBUG_OUTPUT(0) {
|
||||||
|
println("Analysing function ${declaration.descriptor}")
|
||||||
|
println("IR: ${ir2stringWhole(declaration)}")
|
||||||
|
}
|
||||||
|
analyze(declaration, body)
|
||||||
|
}
|
||||||
|
|
||||||
override fun visitFunction(declaration: IrFunction) {
|
override fun visitFunction(declaration: IrFunction) {
|
||||||
declaration.body?.let {
|
declaration.body?.let {
|
||||||
DEBUG_OUTPUT(0) {
|
DEBUG_OUTPUT(0) {
|
||||||
@@ -251,10 +266,10 @@ internal class ModuleDFGBuilder(val context: Context, val irModule: IrModuleFrag
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun analyze(descriptor: DeclarationDescriptor, body: IrElement) {
|
private fun analyze(descriptor: DeclarationDescriptor, body: IrElement?) {
|
||||||
// Find all interesting expressions, variables and functions.
|
// Find all interesting expressions, variables and functions.
|
||||||
val visitor = ElementFinderVisitor()
|
val visitor = ElementFinderVisitor()
|
||||||
body.acceptVoid(visitor)
|
body?.acceptVoid(visitor)
|
||||||
|
|
||||||
DEBUG_OUTPUT(0) {
|
DEBUG_OUTPUT(0) {
|
||||||
println("FIRST PHASE")
|
println("FIRST PHASE")
|
||||||
|
|||||||
+2
-2
@@ -522,8 +522,8 @@ internal object DataFlowIR {
|
|||||||
val name = if (it.isExported()) it.symbolName else it.internalName
|
val name = if (it.isExported()) it.symbolName else it.internalName
|
||||||
val numberOfParameters = it.allParameters.size + if (it.isSuspend) 1 else 0
|
val numberOfParameters = it.allParameters.size + if (it.isSuspend) 1 else 0
|
||||||
if (it.module != irModule.descriptor || it.isExternal || (it.origin == IrDeclarationOrigin.IR_BUILTINS_STUB)) {
|
if (it.module != irModule.descriptor || it.isExternal || (it.origin == IrDeclarationOrigin.IR_BUILTINS_STUB)) {
|
||||||
val escapesAnnotation = it.annotations.findAnnotation(FQ_NAME_ESCAPES)
|
val escapesAnnotation = it.descriptor.annotations.findAnnotation(FQ_NAME_ESCAPES)
|
||||||
val pointsToAnnotation = it.annotations.findAnnotation(FQ_NAME_POINTS_TO)
|
val pointsToAnnotation = it.descriptor.annotations.findAnnotation(FQ_NAME_POINTS_TO)
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val escapesBitMask = (escapesAnnotation?.allValueArguments?.get(escapesWhoDescriptor.name) as? ConstantValue<Int>)?.value
|
val escapesBitMask = (escapesAnnotation?.allValueArguments?.get(escapesWhoDescriptor.name) as? ConstantValue<Int>)?.value
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
|
|||||||
+3
-1
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.*
|
|||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.*
|
||||||
import org.jetbrains.kotlin.types.*
|
import org.jetbrains.kotlin.types.*
|
||||||
import org.jetbrains.kotlin.resolve.calls.inference.*
|
import org.jetbrains.kotlin.resolve.calls.inference.*
|
||||||
|
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||||
|
|
||||||
private val konanInternalPackageName = FqName("konan.internal")
|
private val konanInternalPackageName = FqName("konan.internal")
|
||||||
private val fakeCapturedTypeClassName = Name.identifier("FAKE_CAPTURED_TYPE_CLASS")
|
private val fakeCapturedTypeClassName = Name.identifier("FAKE_CAPTURED_TYPE_CLASS")
|
||||||
@@ -36,7 +37,8 @@ internal fun createFakeClass(packageName: FqName, className: Name)
|
|||||||
/* isInner = */ false,
|
/* isInner = */ false,
|
||||||
/* isExternal = */ false,
|
/* isExternal = */ false,
|
||||||
className,
|
className,
|
||||||
SourceElement.NO_SOURCE
|
SourceElement.NO_SOURCE,
|
||||||
|
LockBasedStorageManager.NO_LOCKS
|
||||||
)
|
)
|
||||||
|
|
||||||
// We do the trick similar to FAKE_CONTINUATION_CLASS_DESCRIPTOR.
|
// We do the trick similar to FAKE_CONTINUATION_CLASS_DESCRIPTOR.
|
||||||
|
|||||||
+4
-3
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.serialization
|
|||||||
import org.jetbrains.kotlin.backend.common.onlyIf
|
import org.jetbrains.kotlin.backend.common.onlyIf
|
||||||
import org.jetbrains.kotlin.backend.konan.descriptors.needsSerializedIr
|
import org.jetbrains.kotlin.backend.konan.descriptors.needsSerializedIr
|
||||||
import org.jetbrains.kotlin.backend.konan.serialization.IrAwareExtension
|
import org.jetbrains.kotlin.backend.konan.serialization.IrAwareExtension
|
||||||
|
import org.jetbrains.kotlin.backend.konan.serialization.KonanStringTable
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.builtins.isSuspendFunctionType
|
import org.jetbrains.kotlin.builtins.isSuspendFunctionType
|
||||||
import org.jetbrains.kotlin.builtins.transformSuspendFunctionToRuntimeFunctionType
|
import org.jetbrains.kotlin.builtins.transformSuspendFunctionToRuntimeFunctionType
|
||||||
@@ -27,6 +28,7 @@ import org.jetbrains.kotlin.descriptors.*
|
|||||||
import org.jetbrains.kotlin.descriptors.annotations.Annotated
|
import org.jetbrains.kotlin.descriptors.annotations.Annotated
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
||||||
|
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirement
|
||||||
import org.jetbrains.kotlin.metadata.serialization.Interner
|
import org.jetbrains.kotlin.metadata.serialization.Interner
|
||||||
import org.jetbrains.kotlin.metadata.serialization.MutableTypeTable
|
import org.jetbrains.kotlin.metadata.serialization.MutableTypeTable
|
||||||
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
||||||
@@ -44,7 +46,6 @@ import org.jetbrains.kotlin.resolve.constants.IntValue
|
|||||||
import org.jetbrains.kotlin.resolve.constants.NullValue
|
import org.jetbrains.kotlin.resolve.constants.NullValue
|
||||||
import org.jetbrains.kotlin.resolve.constants.StringValue
|
import org.jetbrains.kotlin.resolve.constants.StringValue
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.ProtoEnumFlags
|
import org.jetbrains.kotlin.serialization.deserialization.ProtoEnumFlags
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.VersionRequirement
|
|
||||||
import org.jetbrains.kotlin.types.*
|
import org.jetbrains.kotlin.types.*
|
||||||
import org.jetbrains.kotlin.types.typeUtil.contains
|
import org.jetbrains.kotlin.types.typeUtil.contains
|
||||||
import org.jetbrains.kotlin.metadata.serialization.*
|
import org.jetbrains.kotlin.metadata.serialization.*
|
||||||
@@ -540,7 +541,7 @@ class KonanDescriptorSerializer private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (type.isSuspendFunctionType) {
|
if (type.isSuspendFunctionType) {
|
||||||
val functionType = type(transformSuspendFunctionToRuntimeFunctionType(type))
|
val functionType = type(transformSuspendFunctionToRuntimeFunctionType(type, extension.releaseCoroutines()))
|
||||||
functionType.flags = Flags.getTypeFlags(true)
|
functionType.flags = Flags.getTypeFlags(true)
|
||||||
return functionType
|
return functionType
|
||||||
}
|
}
|
||||||
@@ -773,7 +774,7 @@ class KonanDescriptorSerializer private constructor(
|
|||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun serialize(message: MessageLite, stringTable: StringTable): ByteArray {
|
fun serialize(message: MessageLite, stringTable: StringTable): ByteArray {
|
||||||
return ByteArrayOutputStream().apply {
|
return ByteArrayOutputStream().apply {
|
||||||
stringTable.serializeTo(this)
|
(stringTable as KonanStringTable).serializeTo(this)
|
||||||
message.writeTo(this)
|
message.writeTo(this)
|
||||||
}.toByteArray()
|
}.toByteArray()
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.classId
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperClassifiers
|
import org.jetbrains.kotlin.resolve.descriptorUtil.getAllSuperClassifiers
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
|
import java.io.OutputStream
|
||||||
|
|
||||||
class KonanStringTable : StringTableImpl() {
|
class KonanStringTable : StringTableImpl() {
|
||||||
|
|
||||||
@@ -54,4 +55,10 @@ class KonanStringTable : StringTableImpl() {
|
|||||||
super.getLocalClassIdReplacement(descriptor)
|
super.getLocalClassIdReplacement(descriptor)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun serializeTo(output: OutputStream) {
|
||||||
|
val (strings, qualifiedNames) = buildProto()
|
||||||
|
strings.writeDelimitedTo(output)
|
||||||
|
qualifiedNames.writeDelimitedTo(output)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -28,9 +28,9 @@ import org.jetbrains.kotlin.metadata.KonanLinkData
|
|||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl
|
import org.jetbrains.kotlin.metadata.deserialization.NameResolverImpl
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.TypeTable
|
import org.jetbrains.kotlin.metadata.deserialization.TypeTable
|
||||||
|
import org.jetbrains.kotlin.metadata.deserialization.VersionRequirementTable
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.VersionRequirementTable
|
|
||||||
|
|
||||||
// This class knows how to construct contexts for
|
// This class knows how to construct contexts for
|
||||||
// MemberDeserializer to deserialize descriptors declared in IR.
|
// MemberDeserializer to deserialize descriptors declared in IR.
|
||||||
|
|||||||
+3
-3
@@ -15,13 +15,13 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
# A version of the Kotlin "toolchain" (compiler, runtime, stdlib etc) used by the build script.
|
# A version of the Kotlin "toolchain" (compiler, runtime, stdlib etc) used by the build script.
|
||||||
buildKotlinVersion=1.2.40
|
buildKotlinVersion=1.2.41
|
||||||
remoteRoot=konan_tests
|
remoteRoot=konan_tests
|
||||||
#kotlinCompilerModule=org.jetbrains.kotlin:kotlin-compiler:1.1-SNAPSHOT
|
#kotlinCompilerModule=org.jetbrains.kotlin:kotlin-compiler:1.1-SNAPSHOT
|
||||||
# Download artifacts of https://teamcity.jetbrains.com/viewType.html?buildTypeId=Kotlin_120_Compiler
|
# Download artifacts of https://teamcity.jetbrains.com/viewType.html?buildTypeId=Kotlin_120_Compiler
|
||||||
testDataVersion=1226829:id
|
testDataVersion=1226829:id
|
||||||
kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.2.50-dev-515,tag:kotlin-native,pinned:true/artifacts/content/maven
|
kotlinCompilerRepo=https://teamcity.jetbrains.com/guestAuth/app/rest/builds/buildType:(id:Kotlin_dev_CompilerAllPlugins),number:1.2.50-dev-1070,tag:kotlin-native,pinned:true/artifacts/content/maven
|
||||||
kotlinVersion=1.2.50-dev-515
|
kotlinVersion=1.2.50-dev-1070
|
||||||
konanVersion=0.7
|
konanVersion=0.7
|
||||||
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
org.gradle.jvmargs='-Dfile.encoding=UTF-8'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user