[KLIB] Fix serialization of loops with control statements in condition
This commit is contained in:
committed by
teamcityserver
parent
e5c6a5b80d
commit
0cb23a6e65
+11
-4
@@ -6,7 +6,9 @@
|
|||||||
package org.jetbrains.kotlin.backend.common.serialization
|
package org.jetbrains.kotlin.backend.common.serialization
|
||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.serialization.encodings.*
|
import org.jetbrains.kotlin.backend.common.serialization.encodings.*
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.InlineClassRepresentation
|
||||||
|
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||||
import org.jetbrains.kotlin.ir.IrElement
|
import org.jetbrains.kotlin.ir.IrElement
|
||||||
import org.jetbrains.kotlin.ir.IrFileEntry
|
import org.jetbrains.kotlin.ir.IrFileEntry
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
@@ -17,7 +19,10 @@ import org.jetbrains.kotlin.ir.util.*
|
|||||||
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
|
||||||
import org.jetbrains.kotlin.library.*
|
import org.jetbrains.kotlin.library.SerializedDeclaration
|
||||||
|
import org.jetbrains.kotlin.library.SerializedIrFile
|
||||||
|
import org.jetbrains.kotlin.library.SkippedDeclaration
|
||||||
|
import org.jetbrains.kotlin.library.TopLevelDeclaration
|
||||||
import org.jetbrains.kotlin.library.impl.IrMemoryArrayWriter
|
import org.jetbrains.kotlin.library.impl.IrMemoryArrayWriter
|
||||||
import org.jetbrains.kotlin.library.impl.IrMemoryDeclarationWriter
|
import org.jetbrains.kotlin.library.impl.IrMemoryDeclarationWriter
|
||||||
import org.jetbrains.kotlin.library.impl.IrMemoryStringWriter
|
import org.jetbrains.kotlin.library.impl.IrMemoryStringWriter
|
||||||
@@ -796,6 +801,9 @@ open class IrFileSerializer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun serializeLoop(expression: IrLoop): ProtoLoop {
|
private fun serializeLoop(expression: IrLoop): ProtoLoop {
|
||||||
|
val loopIdx = currentLoopIndex++
|
||||||
|
loopIndex[expression] = loopIdx
|
||||||
|
|
||||||
val proto = ProtoLoop.newBuilder()
|
val proto = ProtoLoop.newBuilder()
|
||||||
.setCondition(serializeExpression(expression.condition)).apply {
|
.setCondition(serializeExpression(expression.condition)).apply {
|
||||||
expression.origin?.let { setOriginName(serializeIrStatementOrigin(it)) }
|
expression.origin?.let { setOriginName(serializeIrStatementOrigin(it)) }
|
||||||
@@ -805,8 +813,7 @@ open class IrFileSerializer(
|
|||||||
proto.label = serializeString(it)
|
proto.label = serializeString(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
proto.loopId = currentLoopIndex
|
proto.loopId = loopIdx
|
||||||
loopIndex[expression] = currentLoopIndex++
|
|
||||||
|
|
||||||
val body = expression.body
|
val body = expression.body
|
||||||
if (body != null) {
|
if (body != null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user