Update Kotlin with tests to 1.3.0-dev-391 (#2037)
This commit is contained in:
committed by
Nikolay Igotti
parent
81b7109856
commit
996ec4a6fd
@@ -150,9 +150,6 @@ def commonSrc = file('build/stdlib')
|
||||
|
||||
task unzipStdlibSources(type: Copy) {
|
||||
from (zipTree(configurations.kotlin_common_stdlib_src.singleFile)) {
|
||||
exclude 'generated/_Sequences.kt'
|
||||
exclude 'kotlin/collections/Sequences.kt'
|
||||
exclude 'kotlin/collections/SlidingWindow.kt'
|
||||
include 'generated/**/*.kt'
|
||||
include 'kotlin/**/*.kt'
|
||||
}
|
||||
@@ -185,6 +182,7 @@ targetList.each { target ->
|
||||
'-produce', 'library', '-module-name', 'stdlib', '-XXLanguage:+AllowContractsForCustomFunctions',
|
||||
'-Xmulti-platform', '-Xuse-experimental=kotlin.Experimental',
|
||||
'-Xuse-experimental=kotlin.contracts.ExperimentalContracts',
|
||||
'-Xuse-experimental=kotlin.ExperimentalMultiplatform',
|
||||
commonSrc.absolutePath,
|
||||
project(':Interop:Runtime').file('src/main/kotlin'),
|
||||
project(':Interop:Runtime').file('src/native/kotlin'),
|
||||
|
||||
+7
-5
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.backend.common.DumpIrTreeWithDescriptorsVisitor
|
||||
import org.jetbrains.kotlin.backend.common.ReflectionTypes
|
||||
import org.jetbrains.kotlin.backend.common.validateIrModule
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.*
|
||||
import org.jetbrains.kotlin.backend.common.descriptors.DescriptorsFactory
|
||||
import org.jetbrains.kotlin.backend.konan.ir.KonanIr
|
||||
import org.jetbrains.kotlin.backend.konan.library.KonanLibraryWriter
|
||||
import org.jetbrains.kotlin.backend.konan.library.LinkData
|
||||
@@ -71,14 +70,17 @@ internal class SpecialDeclarationsFactory(val context: Context) {
|
||||
val outerClass = innerClass.parent as? IrClass
|
||||
?: throw AssertionError("No containing class for inner class ${innerClass.descriptor}")
|
||||
|
||||
val receiver = ReceiverParameterDescriptorImpl(innerClass.descriptor, ImplicitClassReceiver(innerClass.descriptor))
|
||||
val receiver = ReceiverParameterDescriptorImpl(
|
||||
innerClass.descriptor,
|
||||
ImplicitClassReceiver(innerClass.descriptor, null),
|
||||
Annotations.EMPTY
|
||||
)
|
||||
val descriptor = PropertyDescriptorImpl.create(
|
||||
innerClass.descriptor, Annotations.EMPTY, Modality.FINAL,
|
||||
Visibilities.PRIVATE, false, "this$0".synthesizedName, CallableMemberDescriptor.Kind.SYNTHESIZED,
|
||||
SourceElement.NO_SOURCE, false, false, false, false, false, false
|
||||
).apply {
|
||||
val receiverType: KotlinType? = null
|
||||
this.setType(outerClass.descriptor.defaultType, emptyList(), receiver, receiverType)
|
||||
this.setType(outerClass.descriptor.defaultType, emptyList(), receiver, null)
|
||||
initialize(null, null)
|
||||
}
|
||||
|
||||
@@ -261,7 +263,7 @@ internal class SpecialDeclarationsFactory(val context: Context) {
|
||||
}
|
||||
|
||||
internal class Context(config: KonanConfig) : KonanBackendContext(config) {
|
||||
override val descriptorsFactory: DescriptorsFactory
|
||||
override val declarationFactory
|
||||
get() = TODO("not implemented")
|
||||
|
||||
override fun getClass(fqName: FqName): ClassDescriptor {
|
||||
|
||||
+6
-3
@@ -107,13 +107,16 @@ internal class EnumSpecialDeclarationsFactory(val context: Context) {
|
||||
|
||||
private fun createEnumValuesField(enumClassDescriptor: ClassDescriptor, implObjectDescriptor: ClassDescriptor): PropertyDescriptor {
|
||||
val valuesArrayType = context.builtIns.getArrayType(Variance.INVARIANT, enumClassDescriptor.defaultType)
|
||||
val receiver = ReceiverParameterDescriptorImpl(implObjectDescriptor, ImplicitClassReceiver(implObjectDescriptor))
|
||||
val receiver = ReceiverParameterDescriptorImpl(
|
||||
implObjectDescriptor,
|
||||
ImplicitClassReceiver(implObjectDescriptor, null),
|
||||
Annotations.EMPTY
|
||||
)
|
||||
return PropertyDescriptorImpl.create(implObjectDescriptor, Annotations.EMPTY, Modality.FINAL, Visibilities.PUBLIC,
|
||||
false, "VALUES".synthesizedName, CallableMemberDescriptor.Kind.SYNTHESIZED, SourceElement.NO_SOURCE,
|
||||
false, false, false, false, false, false).apply {
|
||||
|
||||
val receiverType: KotlinType? = null
|
||||
this.setType(valuesArrayType, emptyList(), receiver, receiverType)
|
||||
this.setType(valuesArrayType, emptyList(), receiver, null)
|
||||
this.initialize(null, null)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.backend.konan.descriptors
|
||||
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.descriptors.SharedVariablesManager
|
||||
import org.jetbrains.kotlin.backend.common.ir.SharedVariablesManager
|
||||
import org.jetbrains.kotlin.backend.konan.KonanBackendContext
|
||||
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
|
||||
+28
@@ -13,7 +13,10 @@ import org.jetbrains.kotlin.builtins.isFunctionType
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.DescriptorFactory
|
||||
import org.jetbrains.kotlin.resolve.OverridingUtil
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||
@@ -174,3 +177,28 @@ val ClassDescriptor.enumEntries: List<ClassDescriptor>
|
||||
|
||||
internal val DeclarationDescriptor.isExpectMember: Boolean
|
||||
get() = this is MemberDescriptor && this.isExpect
|
||||
|
||||
internal fun KotlinType?.createExtensionReceiver(owner: CallableDescriptor): ReceiverParameterDescriptor? =
|
||||
DescriptorFactory.createExtensionReceiverParameterForCallable(
|
||||
owner,
|
||||
this,
|
||||
Annotations.EMPTY
|
||||
)
|
||||
|
||||
internal fun FunctionDescriptorImpl.initialize(
|
||||
extensionReceiverType: KotlinType?,
|
||||
dispatchReceiverParameter: ReceiverParameterDescriptor?,
|
||||
typeParameters: List<TypeParameterDescriptor>,
|
||||
unsubstitutedValueParameters: List<ValueParameterDescriptor>,
|
||||
unsubstitutedReturnType: KotlinType?,
|
||||
modality: Modality?,
|
||||
visibility: Visibility
|
||||
): FunctionDescriptorImpl = this.initialize(
|
||||
extensionReceiverType.createExtensionReceiver(this),
|
||||
dispatchReceiverParameter,
|
||||
typeParameters,
|
||||
unsubstitutedValueParameters,
|
||||
unsubstitutedReturnType,
|
||||
modality,
|
||||
visibility
|
||||
)
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.metadata.konan.KonanProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
|
||||
|
||||
val DeserializedPropertyDescriptor.backingField: PropertyDescriptor?
|
||||
val DeserializedPropertyDescriptor.konanBackingField: PropertyDescriptor?
|
||||
get() =
|
||||
if (this.proto.getExtension(KonanProtoBuf.hasBackingField))
|
||||
this
|
||||
|
||||
+29
-2
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
// This is what Context collects about IR.
|
||||
@@ -395,13 +396,39 @@ internal class KonanSymbols(context: Context, val symbolTable: SymbolTable, val
|
||||
.filterNot { it.isExpect }.single().getter!!
|
||||
)
|
||||
|
||||
val successOrFailure = symbolTable.referenceClass(
|
||||
val kotlinResult = symbolTable.referenceClass(
|
||||
builtIns.builtInsModule.findClassAcrossModuleDependencies(
|
||||
ClassId.topLevel(FqName("kotlin.SuccessOrFailure")))!!
|
||||
ClassId.topLevel(FqName("kotlin.Result")))!!
|
||||
)
|
||||
|
||||
val kotlinResultGetOrThrow = symbolTable.referenceSimpleFunction(
|
||||
builtInsPackage("kotlin")
|
||||
.getContributedFunctions(Name.identifier("getOrThrow"), NoLookupLocation.FROM_BACKEND)
|
||||
.single {
|
||||
it.extensionReceiverParameter?.type?.constructor?.declarationDescriptor == kotlinResult.descriptor
|
||||
}
|
||||
)
|
||||
|
||||
val refClass = symbolTable.referenceClass(context.getInternalClass("Ref"))
|
||||
|
||||
val isInitializedPropertyDescriptor = builtInsPackage("kotlin")
|
||||
.getContributedVariables(Name.identifier("isInitialized"), NoLookupLocation.FROM_BACKEND).single {
|
||||
it.extensionReceiverParameter.let {
|
||||
it != null && TypeUtils.getClassDescriptor(it.type) == context.reflectionTypes.kProperty0
|
||||
} && !it.isExpect
|
||||
}
|
||||
|
||||
val isInitializedGetterDescriptor = isInitializedPropertyDescriptor.getter!!
|
||||
|
||||
val kFunctionImpl = symbolTable.referenceClass(context.reflectionTypes.kFunctionImpl)
|
||||
|
||||
val kProperty0Impl = symbolTable.referenceClass(context.reflectionTypes.kProperty0Impl)
|
||||
val kProperty1Impl = symbolTable.referenceClass(context.reflectionTypes.kProperty1Impl)
|
||||
val kProperty2Impl = symbolTable.referenceClass(context.reflectionTypes.kProperty2Impl)
|
||||
val kMutableProperty0Impl = symbolTable.referenceClass(context.reflectionTypes.kMutableProperty0Impl)
|
||||
val kMutableProperty1Impl = symbolTable.referenceClass(context.reflectionTypes.kMutableProperty1Impl)
|
||||
val kMutableProperty2Impl = symbolTable.referenceClass(context.reflectionTypes.kMutableProperty2Impl)
|
||||
|
||||
val kLocalDelegatedPropertyImpl = symbolTable.referenceClass(context.reflectionTypes.kLocalDelegatedPropertyImpl)
|
||||
val kLocalDelegatedMutablePropertyImpl = symbolTable.referenceClass(context.reflectionTypes.kLocalDelegatedMutablePropertyImpl)
|
||||
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.backend.konan.irasdescriptors
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.atMostOne
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.backingField
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.konanBackingField
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.isInterface
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
@@ -85,7 +85,7 @@ val IrProperty.konanBackingField: IrField?
|
||||
assert(this.isReal)
|
||||
this.backingField?.let { return it }
|
||||
|
||||
(this.descriptor as? DeserializedPropertyDescriptor)?.backingField?.let { backingFieldDescriptor ->
|
||||
(this.descriptor as? DeserializedPropertyDescriptor)?.konanBackingField?.let { backingFieldDescriptor ->
|
||||
val result = IrFieldImpl(
|
||||
this.startOffset,
|
||||
this.endOffset,
|
||||
|
||||
+2
-2
@@ -1442,7 +1442,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
||||
|
||||
private fun evaluateGetField(value: IrGetField): LLVMValueRef {
|
||||
context.log{"evaluateGetField : ${ir2string(value)}"}
|
||||
if (value.descriptor.dispatchReceiverParameter != null) {
|
||||
if (!value.symbol.owner.isStatic) {
|
||||
val thisPtr = evaluateExpression(value.receiver!!)
|
||||
return functionGenerationContext.loadSlot(
|
||||
fieldPtrOfClass(thisPtr, value.symbol.owner), value.descriptor.isVar())
|
||||
@@ -1467,7 +1467,7 @@ internal class CodeGeneratorVisitor(val context: Context, val lifetimes: Map<IrE
|
||||
private fun evaluateSetField(value: IrSetField): LLVMValueRef {
|
||||
context.log{"evaluateSetField : ${ir2string(value)}"}
|
||||
val valueToAssign = evaluateExpression(value.value)
|
||||
if (value.descriptor.dispatchReceiverParameter != null) {
|
||||
if (!value.symbol.owner.isStatic) {
|
||||
val thisPtr = evaluateExpression(value.receiver!!)
|
||||
assert(thisPtr.type == codegen.kObjHeaderPtr) {
|
||||
LLVMPrintTypeToString(thisPtr.type)?.toKString().toString()
|
||||
|
||||
+30
-16
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
@@ -66,22 +67,35 @@ internal class WorkersBridgesBuilding(val context: Context) : DeclarationContain
|
||||
val jobDescriptor = job.descriptor
|
||||
val arg = jobDescriptor.valueParameters[0]
|
||||
if (!::runtimeJobFunction.isInitialized) {
|
||||
val runtimeJobDescriptor = jobDescriptor.newCopyBuilder()
|
||||
.setReturnType(nullableAnyType)
|
||||
.setValueParameters(listOf(ValueParameterDescriptorImpl(
|
||||
containingDeclaration = jobDescriptor,
|
||||
original = null,
|
||||
index = 0,
|
||||
annotations = Annotations.EMPTY,
|
||||
name = arg.name,
|
||||
outType = nullableAnyType,
|
||||
declaresDefaultValue = arg.declaresDefaultValue(),
|
||||
isCrossinline = arg.isCrossinline,
|
||||
isNoinline = arg.isNoinline,
|
||||
varargElementType = arg.varargElementType,
|
||||
source = arg.source
|
||||
)))
|
||||
.build()!!
|
||||
val runtimeJobDescriptor = SimpleFunctionDescriptorImpl.create(
|
||||
jobDescriptor.containingDeclaration,
|
||||
jobDescriptor.annotations,
|
||||
jobDescriptor.name,
|
||||
jobDescriptor.kind,
|
||||
jobDescriptor.source
|
||||
).apply {
|
||||
initialize(
|
||||
null,
|
||||
null,
|
||||
emptyList(),
|
||||
listOf(ValueParameterDescriptorImpl(
|
||||
containingDeclaration = this,
|
||||
original = null,
|
||||
index = 0,
|
||||
annotations = Annotations.EMPTY,
|
||||
name = arg.name,
|
||||
outType = nullableAnyType,
|
||||
declaresDefaultValue = arg.declaresDefaultValue(),
|
||||
isCrossinline = arg.isCrossinline,
|
||||
isNoinline = arg.isNoinline,
|
||||
varargElementType = arg.varargElementType,
|
||||
source = arg.source
|
||||
)),
|
||||
nullableAnyType,
|
||||
jobDescriptor.modality,
|
||||
jobDescriptor.visibility
|
||||
)
|
||||
}
|
||||
|
||||
runtimeJobFunction = IrFunctionImpl(
|
||||
jobFunction.startOffset,
|
||||
|
||||
+3
-1
@@ -9,6 +9,8 @@ import org.jetbrains.kotlin.backend.common.*
|
||||
import org.jetbrains.kotlin.backend.common.IrElementVisitorVoidWithContext
|
||||
import org.jetbrains.kotlin.backend.common.lower.SimpleMemberScope
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.createExtensionReceiver
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.initialize
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.*
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
@@ -366,7 +368,7 @@ internal class DeepCopyIrTreeWithDescriptors(val targetDescriptor: FunctionDescr
|
||||
/* outType = */ substituteType(oldDescriptor.type)!!,
|
||||
/* typeParameters = */ oldDescriptor.typeParameters,
|
||||
/* dispatchReceiverParameter = */ (containingDeclaration as ClassDescriptor).thisAsReceiverParameter,
|
||||
/* receiverType = */ substituteType(oldDescriptor.extensionReceiverParameter?.type))
|
||||
/* extensionReceiverParamter = */ substituteType(oldDescriptor.extensionReceiverParameter?.type).createExtensionReceiver(this))
|
||||
|
||||
initialize(
|
||||
/* getter = */ oldDescriptor.getter?.let { copyPropertyGetterDescriptor(it, this) },
|
||||
|
||||
+3
-5
@@ -12,12 +12,11 @@ import org.jetbrains.kotlin.backend.common.lower.irBlock
|
||||
import org.jetbrains.kotlin.backend.konan.InteropFqNames
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
||||
import org.jetbrains.kotlin.backend.konan.KonanBackendContext
|
||||
import org.jetbrains.kotlin.backend.konan.getInlinedClass
|
||||
import org.jetbrains.kotlin.backend.konan.irasdescriptors.typeWithStarProjections
|
||||
import org.jetbrains.kotlin.backend.konan.isObjCClass
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
@@ -314,13 +313,12 @@ internal class PropertyDelegationLowering(val context: KonanBackendContext) : Fi
|
||||
|
||||
private fun createKPropertiesFieldDescriptor(containingDeclaration: DeclarationDescriptor, fieldType: KotlinType): PropertyDescriptorImpl {
|
||||
return PropertyDescriptorImpl.create(containingDeclaration,
|
||||
AnnotationsImpl(listOf(AnnotationDescriptorImpl(context.ir.symbols.sharedImmutable.defaultType,
|
||||
Annotations.create(listOf(AnnotationDescriptorImpl(context.ir.symbols.sharedImmutable.defaultType,
|
||||
emptyMap(), SourceElement.NO_SOURCE))), Modality.FINAL, Visibilities.PRIVATE,
|
||||
false, "KPROPERTIES".synthesizedName, CallableMemberDescriptor.Kind.SYNTHESIZED, SourceElement.NO_SOURCE,
|
||||
false, false, false, false, false, false).apply {
|
||||
|
||||
val receiverType: KotlinType? = null
|
||||
this.setType(fieldType, emptyList(), null, receiverType)
|
||||
this.setType(fieldType, emptyList(), null, null)
|
||||
this.initialize(null, null)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -257,7 +257,7 @@ internal class EnumClassLowering(val context: Context) : ClassLoweringPass {
|
||||
val loweredArgument = loweredEnumConstructor.valueParameters[argument.loweredIndex()]
|
||||
val body = irConstructor.getDefault(loweredArgument)!!.deepCopyWithVariables()
|
||||
body.transformChildrenVoid(ParameterMapper(constructor))
|
||||
body.accept(SetDeclarationsParentVisitor, irConstructor)
|
||||
body.accept(SetDeclarationsParentVisitor, constructor)
|
||||
constructor.putDefault(constructorDescriptor.valueParameters[loweredArgument.index], body)
|
||||
}
|
||||
}
|
||||
|
||||
+9
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||
import org.jetbrains.kotlin.resolve.multiplatform.ExpectedActualResolver
|
||||
|
||||
@@ -56,6 +57,14 @@ internal class ExpectDeclarationsRemoving(val context: Context) : FileLoweringPa
|
||||
val index = declaration.index
|
||||
assert(function.valueParameters[index] == declaration)
|
||||
|
||||
if (function is IrConstructor &&
|
||||
ExpectedActualDeclarationChecker.isOptionalAnnotationClass(
|
||||
function.descriptor.constructedClass
|
||||
)
|
||||
) {
|
||||
return
|
||||
}
|
||||
|
||||
function.findActualForExpected().valueParameters[index].defaultValue = defaultValue.also {
|
||||
it.expression = it.expression.remapExpectValueSymbols()
|
||||
}
|
||||
|
||||
+3
-1
@@ -65,7 +65,9 @@ internal class FunctionInlining(val context: Context): IrElementTransformerVoidW
|
||||
|
||||
val irCall = super.visitCall(expression) as IrCall
|
||||
val functionDescriptor = irCall.descriptor
|
||||
if (!functionDescriptor.needsInlining) return irCall // This call does not need inlining.
|
||||
if (!functionDescriptor.needsInlining || functionDescriptor == context.ir.symbols.isInitializedGetterDescriptor) {
|
||||
return irCall // This call does not need inlining.
|
||||
}
|
||||
|
||||
val functionDeclaration = getFunctionDeclaration(functionDescriptor) // Get declaration of the function to be inlined.
|
||||
if (functionDeclaration == null) { // We failed to get the declaration.
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ internal class InnerClassLowering(val context: Context) : ClassLoweringPass {
|
||||
}
|
||||
|
||||
private fun lowerConstructor(irConstructor: IrConstructor): IrConstructor {
|
||||
if (irConstructor.callsSuper()) {
|
||||
if (irConstructor.callsSuper(context.irBuiltIns)) {
|
||||
// Initializing constructor: initialize 'this.this$0' with '$outer'.
|
||||
val blockBody = irConstructor.body as? IrBlockBody
|
||||
?: throw AssertionError("Unexpected constructor body: ${irConstructor.body}")
|
||||
|
||||
+1
-2
@@ -24,7 +24,6 @@ import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
@@ -425,7 +424,7 @@ internal class InteropLoweringPart1(val context: Context) : IrBuildingTransforme
|
||||
SourceElement.NO_SOURCE
|
||||
)
|
||||
|
||||
return AnnotationsImpl(listOf(annotation))
|
||||
return Annotations.create(listOf(annotation))
|
||||
}
|
||||
|
||||
private fun checkKotlinObjCClass(irClass: IrClass) {
|
||||
|
||||
+3
-16
@@ -5,14 +5,13 @@
|
||||
|
||||
package org.jetbrains.kotlin.backend.konan.lower
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.lower.*
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.resolveFakeOverride
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.VariableDescriptor
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
import org.jetbrains.kotlin.ir.IrStatement
|
||||
import org.jetbrains.kotlin.ir.builders.*
|
||||
@@ -27,25 +26,13 @@ import org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.acceptVoid
|
||||
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
|
||||
internal class LateinitLowering(
|
||||
val context: CommonBackendContext,
|
||||
val context: Context,
|
||||
private val generateParameterNameInAssertion: Boolean = false
|
||||
) : FileLoweringPass {
|
||||
|
||||
private val KOTLIN_FQ_NAME = FqName("kotlin")
|
||||
private val kotlinPackageScope = context.ir.irModule.descriptor.getPackage(KOTLIN_FQ_NAME).memberScope
|
||||
private val isInitializedPropertyDescriptor = kotlinPackageScope
|
||||
.getContributedVariables(Name.identifier("isInitialized"), NoLookupLocation.FROM_BACKEND).single {
|
||||
it.extensionReceiverParameter.let {
|
||||
it != null && TypeUtils.getClassDescriptor(it.type) == context.reflectionTypes.kProperty0
|
||||
} && !it.isExpect
|
||||
}
|
||||
private val isInitializedGetterDescriptor = isInitializedPropertyDescriptor.getter!!
|
||||
private val isInitializedGetterDescriptor = context.ir.symbols.isInitializedGetterDescriptor
|
||||
|
||||
override fun lower(irFile: IrFile) {
|
||||
val lateinitPropertyToField = mutableMapOf<PropertyDescriptor, IrField>()
|
||||
|
||||
+10
-14
@@ -1200,26 +1200,22 @@ internal class SuspendFunctionsLowering(val context: Context): FileLoweringPass
|
||||
}
|
||||
}
|
||||
|
||||
private fun IrBuilderWithScope.irGetOrThrow(successOrFailure: IrExpression): IrExpression {
|
||||
// TODO: consider inlining getOrThrow function body here.
|
||||
val successOrFailureClass = symbols.successOrFailure.owner
|
||||
val getOrThrow = successOrFailureClass.simpleFunctions().single { it.name.asString() == "getOrThrow" }
|
||||
return irCall(getOrThrow).apply {
|
||||
dispatchReceiver = successOrFailure
|
||||
}
|
||||
}
|
||||
private fun IrBuilderWithScope.irGetOrThrow(result: IrExpression): IrExpression =
|
||||
irCall(symbols.kotlinResultGetOrThrow.owner).apply {
|
||||
extensionReceiver = result
|
||||
} // TODO: consider inlining getOrThrow function body here.
|
||||
|
||||
private fun IrBuilderWithScope.irExceptionOrNull(successOrFailure: IrExpression): IrExpression {
|
||||
val successOrFailureClass = symbols.successOrFailure.owner
|
||||
val exceptionOrNull = successOrFailureClass.simpleFunctions().single { it.name.asString() == "exceptionOrNull" }
|
||||
private fun IrBuilderWithScope.irExceptionOrNull(result: IrExpression): IrExpression {
|
||||
val resultClass = symbols.kotlinResult.owner
|
||||
val exceptionOrNull = resultClass.simpleFunctions().single { it.name.asString() == "exceptionOrNull" }
|
||||
return irCall(exceptionOrNull).apply {
|
||||
dispatchReceiver = successOrFailure
|
||||
dispatchReceiver = result
|
||||
}
|
||||
}
|
||||
|
||||
fun IrBlockBodyBuilder.irSuccess(value: IrExpression): IrCall {
|
||||
val createSuccessOrFailure = symbols.successOrFailure.owner.constructors.single { it.isPrimary }
|
||||
return irCall(createSuccessOrFailure).apply {
|
||||
val createResult = symbols.kotlinResult.owner.constructors.single { it.isPrimary }
|
||||
return irCall(createResult).apply {
|
||||
putValueArgument(0, value)
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.backend.konan.serialization
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.KonanIrDeserializationException
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.contributedMethods
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.createExtensionReceiver
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.findPackage
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.isFunctionInvoke
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
@@ -182,7 +183,8 @@ internal class IrDescriptorDeserializer(val context: Context,
|
||||
setOriginal(originalDescriptor)
|
||||
setReturnType(deserializeKotlinType(proto.type))
|
||||
if (proto.hasExtensionReceiverType()) {
|
||||
setExtensionReceiverType(deserializeKotlinType(proto.extensionReceiverType))
|
||||
val extensionReceiverType = deserializeKotlinType(proto.extensionReceiverType)
|
||||
setExtensionReceiverParameter(extensionReceiverType.createExtensionReceiver(originalDescriptor))
|
||||
}
|
||||
}.build()!!
|
||||
|
||||
@@ -197,9 +199,7 @@ internal class IrDescriptorDeserializer(val context: Context,
|
||||
val newDescriptor = originalDescriptor.newCopyBuilder().apply() {
|
||||
setOriginal(originalDescriptor)
|
||||
setReturnType(deserializeKotlinType(proto.type))
|
||||
if (proto.hasExtensionReceiverType()) {
|
||||
setExtensionReceiverType(deserializeKotlinType(proto.extensionReceiverType))
|
||||
}
|
||||
assert(!proto.hasExtensionReceiverType())
|
||||
}.build()!!
|
||||
|
||||
descriptorIndex.put(proto.index, newDescriptor)
|
||||
|
||||
+2
-4
@@ -171,10 +171,8 @@ class KonanDescriptorSerializer private constructor(
|
||||
val compileTimeConstant = descriptor.compileTimeInitializer
|
||||
val hasConstant = compileTimeConstant != null && compileTimeConstant !is NullValue
|
||||
|
||||
val hasAnnotations = descriptor.annotations.getAllAnnotations().isNotEmpty()
|
||||
|
||||
val propertyFlags = Flags.getAccessorFlags(
|
||||
hasAnnotations,
|
||||
hasAnnotations(descriptor),
|
||||
ProtoEnumFlags.visibility(normalizeVisibility(descriptor)),
|
||||
ProtoEnumFlags.modality(descriptor.modality),
|
||||
false, false, false
|
||||
@@ -206,7 +204,7 @@ class KonanDescriptorSerializer private constructor(
|
||||
}
|
||||
|
||||
val flags = Flags.getPropertyFlags(
|
||||
hasAnnotations,
|
||||
hasAnnotations(descriptor),
|
||||
ProtoEnumFlags.visibility(normalizeVisibility(descriptor)),
|
||||
ProtoEnumFlags.modality(descriptor.modality),
|
||||
ProtoEnumFlags.memberKind(descriptor.kind),
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ internal class LocalDeclarationSerializer(val context: Context, val rootFunction
|
||||
false, false, false, false, false,
|
||||
isDelegated)
|
||||
|
||||
property.setType(variable.type, listOf(), null, null as KotlinType?)
|
||||
property.setType(variable.type, listOf(), null, null)
|
||||
|
||||
// TODO: transform the getter and the setter too.
|
||||
property.initialize(null, null)
|
||||
|
||||
+4
-4
@@ -288,8 +288,8 @@ private class IrUnboundSymbolReplacer(
|
||||
expression.replaceTypeArguments()
|
||||
|
||||
val field = expression.field?.replaceOrSame(ReferenceSymbolTable::referenceField)
|
||||
val getter = expression.getter?.replace(ReferenceSymbolTable::referenceFunction) ?: expression.getter
|
||||
val setter = expression.setter?.replace(ReferenceSymbolTable::referenceFunction) ?: expression.setter
|
||||
val getter = expression.getter?.replace(ReferenceSymbolTable::referenceSimpleFunction) ?: expression.getter
|
||||
val setter = expression.setter?.replace(ReferenceSymbolTable::referenceSimpleFunction) ?: expression.setter
|
||||
|
||||
if (field == expression.field && getter == expression.getter && setter == expression.setter) {
|
||||
return super.visitPropertyReference(expression)
|
||||
@@ -311,8 +311,8 @@ private class IrUnboundSymbolReplacer(
|
||||
|
||||
override fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference): IrExpression {
|
||||
val delegate = expression.delegate.replaceOrSame(ReferenceSymbolTable::referenceVariable)
|
||||
val getter = expression.getter.replace(ReferenceSymbolTable::referenceFunction) ?: expression.getter
|
||||
val setter = expression.setter?.replace(ReferenceSymbolTable::referenceFunction) ?: expression.setter
|
||||
val getter = expression.getter.replace(ReferenceSymbolTable::referenceSimpleFunction) ?: expression.getter
|
||||
val setter = expression.setter?.replace(ReferenceSymbolTable::referenceSimpleFunction) ?: expression.setter
|
||||
|
||||
if (delegate == expression.delegate && getter == expression.getter && setter == expression.setter) {
|
||||
return super.visitLocalDelegatedPropertyReference(expression)
|
||||
|
||||
+3
-7
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.ir.util
|
||||
|
||||
import org.jetbrains.kotlin.backend.common.CommonBackendContext
|
||||
import org.jetbrains.kotlin.backend.common.descriptors.substitute
|
||||
import org.jetbrains.kotlin.backend.konan.Context
|
||||
import org.jetbrains.kotlin.backend.konan.KonanBackendContext
|
||||
import org.jetbrains.kotlin.backend.konan.KonanCompilationException
|
||||
import org.jetbrains.kotlin.backend.konan.descriptors.synthesizedName
|
||||
@@ -20,7 +19,6 @@ import org.jetbrains.kotlin.descriptors.ParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationsImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||
import org.jetbrains.kotlin.ir.IrElement
|
||||
@@ -41,7 +39,6 @@ import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.OverridingStrategy
|
||||
import org.jetbrains.kotlin.resolve.OverridingUtil
|
||||
import org.jetbrains.kotlin.resolve.calls.checkers.isRestrictsSuspensionReceiver
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||
import org.jetbrains.kotlin.types.*
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.typeUtil.immediateSupertypes
|
||||
@@ -56,7 +53,7 @@ internal fun IrFile.addTopLevelInitializer(expression: IrExpression, context: Ko
|
||||
val fieldDescriptor = PropertyDescriptorImpl.create(
|
||||
this.packageFragmentDescriptor,
|
||||
if (threadLocal)
|
||||
AnnotationsImpl(listOf(AnnotationDescriptorImpl(context.ir.symbols.threadLocal.defaultType,
|
||||
Annotations.create(listOf(AnnotationDescriptorImpl(context.ir.symbols.threadLocal.defaultType,
|
||||
emptyMap(), SourceElement.NO_SOURCE)))
|
||||
else
|
||||
Annotations.EMPTY,
|
||||
@@ -74,7 +71,7 @@ internal fun IrFile.addTopLevelInitializer(expression: IrExpression, context: Ko
|
||||
false
|
||||
)
|
||||
|
||||
fieldDescriptor.setType(expression.type.toKotlinType(), emptyList(), null, null as KotlinType?)
|
||||
fieldDescriptor.setType(expression.type.toKotlinType(), emptyList(), null, null)
|
||||
fieldDescriptor.initialize(null, null)
|
||||
|
||||
val irField = IrFieldImpl(
|
||||
@@ -686,8 +683,7 @@ fun createField(
|
||||
).apply {
|
||||
initialize(null, null)
|
||||
|
||||
val receiverType: KotlinType? = null
|
||||
setType(type.toKotlinType(), emptyList(), owner.thisAsReceiverParameter, receiverType)
|
||||
setType(type.toKotlinType(), emptyList(), owner.thisAsReceiverParameter, null)
|
||||
}
|
||||
|
||||
return IrFieldImpl(startOffset, endOffset, origin, descriptor, type)
|
||||
|
||||
@@ -43,7 +43,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
cli_bc project(path: ':backend.native', configuration: 'cli_bc')
|
||||
update_tests (group: 'org', name: 'Kotlin_13M2_CompilerAllPlugins', version: testKotlinVersion) {
|
||||
update_tests (group: 'org', name: 'Kotlin_dev_CompilerAllPlugins', version: testKotlinVersion) {
|
||||
artifact {
|
||||
name = 'internal/kotlin-test-data'
|
||||
type = 'zip'
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun suspendHere(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
fun builder(c: suspend () -> Unit) {
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
fun builder(c: suspend () -> Unit) {
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1() {
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Unit = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun s1(): Unit = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
suspend fun suspendHere(): Int = suspendCoroutineUninterceptedOrReturn { x ->
|
||||
|
||||
@@ -12,7 +12,7 @@ import kotlin.coroutines.intrinsics.*
|
||||
|
||||
open class EmptyContinuation(override val context: CoroutineContext = EmptyCoroutineContext) : Continuation<Any?> {
|
||||
companion object : EmptyContinuation()
|
||||
override fun resumeWith(result: SuccessOrFailure<Any?>) { result.getOrThrow() }
|
||||
override fun resumeWith(result: Result<Any?>) { result.getOrThrow() }
|
||||
}
|
||||
|
||||
class Controller {
|
||||
|
||||
@@ -58,10 +58,10 @@ fun test(s: S, x1: Long, x2: B2, x3: UShort, x4: UInt, x5: Int, x6: Long) {
|
||||
|
||||
// Also check with some insignificant bits modified:
|
||||
|
||||
assign(s, x1 + 2, x2, (x3 + 8).toUShort(), x4 - 16, x5 + 32, x6 + Long.MIN_VALUE)
|
||||
assign(s, x1 + 2, x2, (x3 + 8u).toUShort(), x4 - 16u, x5 + 32, x6 + Long.MIN_VALUE)
|
||||
check(s, x1, x2, x3, x4, x5, x6)
|
||||
|
||||
assignReversed(s, x1 + 2, x2, (x3 + 8).toUShort(), x4 - 16, x5 + 32, x6 + Long.MIN_VALUE)
|
||||
assignReversed(s, x1 + 2, x2, (x3 + 8u).toUShort(), x4 - 16u, x5 + 32, x6 + Long.MIN_VALUE)
|
||||
check(s, x1, x2, x3, x4, x5, x6)
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ fun main(args: Array<String>) {
|
||||
for (x1 in -1L..0L)
|
||||
for (x2 in B2.values())
|
||||
for (x3 in 0..7)
|
||||
for (x4 in uintArrayOf(0, 6, 15))
|
||||
for (x4 in uintArrayOf(0u, 6u, 15u))
|
||||
for (x5 in intArrayOf(-16, -2, -1, 0, 5, 15))
|
||||
for (x6 in longArrayOf(Long.MIN_VALUE/2, -1L shl 36, -325L, 0, 1L shl 48, Long.MAX_VALUE/2))
|
||||
test(s, x1, x2, x3.toUShort(), x4, x5, x6)
|
||||
|
||||
@@ -26,7 +26,7 @@ fun main(args: Array<String>) {
|
||||
with(serverAddr) {
|
||||
memset(this.ptr, 0, sockaddr_in.size.convert())
|
||||
sin_family = AF_INET.convert()
|
||||
sin_addr.s_addr = htons(0).convert()
|
||||
sin_addr.s_addr = htons(0u).convert()
|
||||
sin_port = htons(port)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user