[IR] Split const folding into necessary one and for optimizations only

In this commit we have a lot of change in test data. This was caused
by the way where we evaluate constants. We split constant evaluation
into two distinct parts: only necessary evaluations for `fir2ir`
(like const val and annotations) and optimizations for lowering.
Now we don't do all constant evaluation on `fir2ir`, but IR
dump is executed after this phase, so test data changed.

#KT-58923
This commit is contained in:
Ivan Kylchik
2023-05-28 18:43:30 +02:00
committed by Space Team
parent 8067df3c94
commit dd264cff50
96 changed files with 648 additions and 327 deletions
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.ir.interpreter.IrInterpreter
import org.jetbrains.kotlin.ir.interpreter.IrInterpreterConfiguration
import org.jetbrains.kotlin.ir.interpreter.IrInterpreterEnvironment
import org.jetbrains.kotlin.ir.interpreter.checker.EvaluationMode
import org.jetbrains.kotlin.ir.interpreter.transformer.preprocessForConstTransformer
import org.jetbrains.kotlin.ir.interpreter.transformer.transformConst
import org.jetbrains.kotlin.ir.util.KotlinMangler
import org.jetbrains.kotlin.ir.util.NaiveSourceBasedFileEntryImpl
@@ -431,12 +432,7 @@ class Fir2IrConverter(
val interpreter = IrInterpreter(IrInterpreterEnvironment(irModuleFragment.irBuiltins, configuration))
val mode = if (intrinsicConstEvaluation) EvaluationMode.ONLY_INTRINSIC_CONST else EvaluationMode.ONLY_BUILTINS
irModuleFragment.files.forEach {
it.transformConst(
interpreter,
mode = mode,
evaluatedConstTracker = fir2IrConfiguration.evaluatedConstTracker,
inlineConstTracker = fir2IrConfiguration.inlineConstTracker,
)
it.transformConst(interpreter, mode, fir2IrConfiguration.evaluatedConstTracker, fir2IrConfiguration.inlineConstTracker)
}
}
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.backend.common.lower
import org.jetbrains.kotlin.backend.common.CommonBackendContext
import org.jetbrains.kotlin.backend.common.FileLoweringPass
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.expressions.IrErrorExpression
@@ -15,7 +17,8 @@ import org.jetbrains.kotlin.ir.interpreter.IrInterpreter
import org.jetbrains.kotlin.ir.interpreter.IrInterpreterConfiguration
import org.jetbrains.kotlin.ir.interpreter.IrInterpreterEnvironment
import org.jetbrains.kotlin.ir.interpreter.checker.EvaluationMode
import org.jetbrains.kotlin.ir.interpreter.transformer.transformConst
import org.jetbrains.kotlin.ir.interpreter.transformer.preprocessForConstTransformer
import org.jetbrains.kotlin.ir.interpreter.transformer.runConstOptimizations
class ConstEvaluationLowering(
val context: CommonBackendContext,
@@ -27,13 +30,11 @@ class ConstEvaluationLowering(
private val interpreter = IrInterpreter(IrInterpreterEnvironment(context.irBuiltIns, configuration), emptyMap())
private val evaluatedConstTracker = context.configuration[CommonConfigurationKeys.EVALUATED_CONST_TRACKER]
private val inlineConstTracker = context.configuration[CommonConfigurationKeys.INLINE_CONST_TRACKER]
private val mode = EvaluationMode.ONLY_INTRINSIC_CONST
override fun lower(irFile: IrFile) {
irFile.transformConst(
interpreter,
mode = EvaluationMode.ONLY_INTRINSIC_CONST,
evaluatedConstTracker, inlineConstTracker,
onWarning, onError, suppressErrors
irFile.runConstOptimizations(
interpreter, mode, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressErrors
)
}
}
@@ -0,0 +1,36 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.ir.interpreter.transformer
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrStringConcatenationImpl
import org.jetbrains.kotlin.ir.interpreter.IrInterpreter
import org.jetbrains.kotlin.ir.interpreter.checker.EvaluationMode
import org.jetbrains.kotlin.ir.interpreter.checker.IrInterpreterChecker
import org.jetbrains.kotlin.ir.interpreter.createGetField
import kotlin.math.max
import kotlin.math.min
internal class IrConstAllTransformer(
interpreter: IrInterpreter,
irFile: IrFile,
mode: EvaluationMode,
checker: IrInterpreterChecker,
evaluatedConstTracker: EvaluatedConstTracker?,
inlineConstTracker: InlineConstTracker?,
onWarning: (IrFile, IrElement, IrErrorExpression) -> Unit,
onError: (IrFile, IrElement, IrErrorExpression) -> Unit,
suppressExceptions: Boolean,
) : IrConstExpressionTransformer(
interpreter, irFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.ir.interpreter.createGetField
import kotlin.math.max
import kotlin.math.min
internal class IrConstExpressionTransformer(
internal abstract class IrConstExpressionTransformer(
interpreter: IrInterpreter,
irFile: IrFile,
mode: EvaluationMode,
@@ -32,7 +32,7 @@ internal class IrConstExpressionTransformer(
onError: (IrFile, IrElement, IrErrorExpression) -> Unit,
suppressExceptions: Boolean,
) : IrConstTransformer(interpreter, irFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions) {
private var inAnnotation: Boolean = false
protected var inAnnotation: Boolean = false
private inline fun <T> visitAnnotationClass(crossinline block: () -> T): T {
val oldInAnnotation = inAnnotation
@@ -67,10 +67,8 @@ internal class IrConstExpressionTransformer(
override fun visitField(declaration: IrField, data: Nothing?): IrStatement {
val initializer = declaration.initializer
val expression = initializer?.expression ?: return declaration
val isConst = declaration.correspondingPropertySymbol?.owner?.isConst == true
if (!isConst) return super.visitField(declaration, data)
val getField = declaration.createGetField()
if (getField.canBeInterpreted()) {
initializer.expression = expression.interpret(failAsError = true)
}
@@ -0,0 +1,69 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.ir.interpreter.transformer
import org.jetbrains.kotlin.constant.EvaluatedConstTracker
import org.jetbrains.kotlin.incremental.components.InlineConstTracker
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.IrStatement
import org.jetbrains.kotlin.ir.declarations.IrField
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.interpreter.IrInterpreter
import org.jetbrains.kotlin.ir.interpreter.checker.EvaluationMode
import org.jetbrains.kotlin.ir.interpreter.checker.IrInterpreterChecker
/**
* This transformer will visit all expressions and will evaluate only those that are necessary. By "necessary" we mean expressions
* that are used in `const val` and inside annotations.
*/
internal class IrConstOnlyNecessaryTransformer(
interpreter: IrInterpreter,
irFile: IrFile,
mode: EvaluationMode,
checker: IrInterpreterChecker,
evaluatedConstTracker: EvaluatedConstTracker?,
inlineConstTracker: InlineConstTracker?,
onWarning: (IrFile, IrElement, IrErrorExpression) -> Unit,
onError: (IrFile, IrElement, IrErrorExpression) -> Unit,
suppressExceptions: Boolean,
) : IrConstExpressionTransformer(
interpreter, irFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
) {
override fun visitCall(expression: IrCall, data: Nothing?): IrElement {
val isConstGetter = (expression.symbol.owner as? IrSimpleFunction)?.correspondingPropertySymbol?.owner?.isConst == true
if (!inAnnotation && !isConstGetter) {
expression.transformChildren(this, null)
return expression
}
return super.visitCall(expression, data)
}
override fun visitGetField(expression: IrGetField, data: Nothing?): IrExpression {
val isConst = expression.symbol.owner.correspondingPropertySymbol?.owner?.isConst == true
if (!inAnnotation && !isConst) return expression
return super.visitGetField(expression, data)
}
override fun visitStringConcatenation(expression: IrStringConcatenation, data: Nothing?): IrExpression {
if (!inAnnotation) {
expression.transformChildren(this, null)
return expression
}
return super.visitStringConcatenation(expression, data)
}
override fun visitField(declaration: IrField, data: Nothing?): IrStatement {
val isConst = declaration.correspondingPropertySymbol?.owner?.isConst == true
if (!isConst) {
declaration.transformChildren(this, null)
return declaration
}
return super.visitField(declaration, data)
}
}
@@ -33,24 +33,51 @@ fun IrFile.transformConst(
onError: (IrFile, IrElement, IrErrorExpression) -> Unit = { _, _, _ -> },
suppressExceptions: Boolean = false,
) {
val preprocessedFile = this.preprocessForConstTransformer(interpreter, mode)
val checker = IrInterpreterCommonChecker()
val irConstExpressionTransformer = IrConstOnlyNecessaryTransformer(
interpreter, preprocessedFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
preprocessedFile.transform(irConstExpressionTransformer, null)
val irConstDeclarationAnnotationTransformer = IrConstDeclarationAnnotationTransformer(
interpreter, preprocessedFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
preprocessedFile.transform(irConstDeclarationAnnotationTransformer, null)
val irConstTypeAnnotationTransformer = IrConstTypeAnnotationTransformer(
interpreter, preprocessedFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
preprocessedFile.transform(irConstTypeAnnotationTransformer, null)
}
fun IrFile.runConstOptimizations(
interpreter: IrInterpreter,
mode: EvaluationMode,
evaluatedConstTracker: EvaluatedConstTracker? = null,
inlineConstTracker: InlineConstTracker? = null,
onWarning: (IrFile, IrElement, IrErrorExpression) -> Unit = { _, _, _ -> },
onError: (IrFile, IrElement, IrErrorExpression) -> Unit = { _, _, _ -> },
suppressExceptions: Boolean = false,
) {
val preprocessedFile = this.preprocessForConstTransformer(interpreter, mode)
val checker = IrInterpreterCommonChecker()
val irConstExpressionTransformer = IrConstAllTransformer(
interpreter, preprocessedFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
preprocessedFile.transform(irConstExpressionTransformer, null)
}
fun IrFile.preprocessForConstTransformer(
interpreter: IrInterpreter,
mode: EvaluationMode,
): IrFile {
val preprocessors = setOf(IrInterpreterKCallableNamePreprocessor())
val preprocessedFile = preprocessors.fold(this) { file, preprocessor ->
preprocessor.preprocess(file, IrInterpreterPreprocessorData(mode, interpreter.irBuiltIns))
}
val checker = IrInterpreterCommonChecker()
val irConstExpressionTransformer = IrConstExpressionTransformer(
interpreter, preprocessedFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
val irConstDeclarationAnnotationTransformer = IrConstDeclarationAnnotationTransformer(
interpreter, preprocessedFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
val irConstTypeAnnotationTransformer = IrConstTypeAnnotationTransformer(
interpreter, preprocessedFile, mode, checker, evaluatedConstTracker, inlineConstTracker, onWarning, onError, suppressExceptions
)
preprocessedFile.transform(irConstExpressionTransformer, null)
preprocessedFile.transform(irConstDeclarationAnnotationTransformer, null)
preprocessedFile.transform(irConstTypeAnnotationTransformer, null)
return preprocessedFile
}
// Note: We are using `IrElementTransformer` here instead of `IrElementTransformerVoid` to avoid conflicts with `IrTypeVisitorVoid`
+2 -2
View File
@@ -1,5 +1,5 @@
// IGNORE_BACKEND_K1: JS_IR
// IGNORE_BACKEND_K1: JS_IR_ES6
// IGNORE_BACKEND: JS_IR
// IGNORE_BACKEND: JS_IR_ES6
// TODO: muted automatically, investigate should it be ran for JS or not
// IGNORE_BACKEND: JS
@@ -1,5 +1,7 @@
// TARGET_BACKEND: JS_IR
// IGNORE_BACKEND_K1: JS_IR, JS_IR_ES6
// IGNORE_BACKEND_K2: JS_IR, JS_IR_ES6
// TODO enable for K2 when const lowering is applied for js
fun <T> T.id() = this
const val toStringDouble1 = 1.0.<!EVALUATED("1")!>toString()<!>
@@ -1,4 +1,5 @@
// TARGET_BACKEND: JVM_IR
// IGNORE_BACKEND_K1: JVM_IR
// WITH_REFLECT
annotation class A(vararg val strings: String)
@@ -1,6 +1,5 @@
// TARGET_BACKEND: JVM_IR
// TARGET_BACKEND: NATIVE
// TARGET_BACKEND: JS_IR
// TODO enable for JS, Native when const lowering is applied in corresponding backends
// WITH_STDLIB
object Test {
@@ -9,7 +9,7 @@ FILE fqName:<root> fileName:/Child.kt
$this: VALUE_PARAMETER name:<this> type:<root>.Child
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun foo (): kotlin.String declared in <root>.Child'
CONST String type=kotlin.String value="OK"
GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:publicStaticField type:kotlin.String visibility:public [final,static]' type=kotlin.String origin=GET_PROPERTY
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in javapackage.PublicParentClass
@@ -104,7 +104,8 @@ FILE fqName:<root> fileName:/recordWithCompanion.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Tag'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Tag(id="
CONST String type=kotlin.String value="Tag("
CONST String type=kotlin.String value="id="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:id type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Tag declared in <root>.Tag.toString' type=<root>.Tag origin=null
CONST String type=kotlin.String value=")"
@@ -2,6 +2,4 @@
/exceptionFromInterpreter_ir.kt:7:26: warning: Constant expression will throw an exception at runtime: / by zero
/exceptionFromInterpreter_ir.kt:8:39: error: Cannot evaluate constant expression: marginPrefix must be non-blank string.
/exceptionFromInterpreter_ir.kt:12:4: error: Cannot evaluate constant expression: / by zero
/exceptionFromInterpreter_ir.kt:8:39: error: Cannot evaluate constant expression: marginPrefix must be non-blank string.
@@ -3,5 +3,3 @@
/exceptionFromInterpreter_ir.kt:(205,210): warning: Division by zero
/exceptionFromInterpreter_ir.kt:(243,264): error: Const 'val' initializer should be a constant value
/exceptionFromInterpreter_ir.kt:(313,318): warning: Division by zero
@@ -7,7 +7,8 @@ const val divideByZero = <!EXCEPTION_IN_CONST_VAL_INITIALIZER!>1 / 0<!>
val disivionByZeroWarn = <!EXCEPTION_IN_CONST_EXPRESSION!>1 / 0<!>
const val trimMarginException = "123".<!EXCEPTION_IN_CONST_VAL_INITIALIZER!>trimMargin(" ")<!>
annotation class A(val i: Int, val b: Int)
@A(<!EXCEPTION_IN_CONST_VAL_INITIALIZER!>1 / 0<!>, 2)
fun foo() {}
// TODO must report all these exceptions directly from fir2ir
//annotation class A(val i: Int, val b: Int)
//
//@A(1 / 0, 2)
//fun foo() {}
@@ -413,39 +413,48 @@ FILE fqName:<root> fileName:/dataClassWithArrayMembers.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test1'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test1(stringArray="
CONST String type=kotlin.String value="Test1("
CONST String type=kotlin.String value="stringArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:stringArray type:kotlin.Array<kotlin.String> visibility:private [final]' type=kotlin.Array<kotlin.String> origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", charArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="charArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:charArray type:kotlin.CharArray visibility:private [final]' type=kotlin.CharArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", booleanArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="booleanArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:booleanArray type:kotlin.BooleanArray visibility:private [final]' type=kotlin.BooleanArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", byteArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="byteArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:byteArray type:kotlin.ByteArray visibility:private [final]' type=kotlin.ByteArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", shortArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="shortArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:shortArray type:kotlin.ShortArray visibility:private [final]' type=kotlin.ShortArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", intArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="intArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:intArray type:kotlin.IntArray visibility:private [final]' type=kotlin.IntArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", longArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="longArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:longArray type:kotlin.LongArray visibility:private [final]' type=kotlin.LongArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", floatArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="floatArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:floatArray type:kotlin.FloatArray visibility:private [final]' type=kotlin.FloatArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", doubleArray="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="doubleArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:doubleArray type:kotlin.DoubleArray visibility:private [final]' type=kotlin.DoubleArray origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
@@ -536,7 +545,8 @@ FILE fqName:<root> fileName:/dataClassWithArrayMembers.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test2'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test2(genericArray="
CONST String type=kotlin.String value="Test2("
CONST String type=kotlin.String value="genericArray="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:genericArray type:kotlin.Array<T of <root>.Test2> visibility:private [final]' type=kotlin.Array<T of <root>.Test2> origin=null
receiver: GET_VAR '<this>: <root>.Test2<T of <root>.Test2> declared in <root>.Test2.toString' type=<root>.Test2<T of <root>.Test2> origin=null
@@ -634,7 +644,8 @@ FILE fqName:<root> fileName:/dataClassWithArrayMembers.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test3'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test3(anyArrayN="
CONST String type=kotlin.String value="Test3("
CONST String type=kotlin.String value="anyArrayN="
CALL 'public final fun dataClassArrayMemberToString (arg0: kotlin.Any?): kotlin.String declared in kotlin.internal.ir' type=kotlin.String origin=null
arg0: GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:anyArrayN type:kotlin.Array<kotlin.Any>? visibility:private [final]' type=kotlin.Array<kotlin.Any>? origin=null
receiver: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3.toString' type=<root>.Test3 origin=null
@@ -133,7 +133,7 @@ data class Test1 {
}
override fun toString(): String {
return "Test1(stringArray=" + dataClassArrayMemberToString(arg0 = <this>.#stringArray) + ", charArray=" + dataClassArrayMemberToString(arg0 = <this>.#charArray) + ", booleanArray=" + dataClassArrayMemberToString(arg0 = <this>.#booleanArray) + ", byteArray=" + dataClassArrayMemberToString(arg0 = <this>.#byteArray) + ", shortArray=" + dataClassArrayMemberToString(arg0 = <this>.#shortArray) + ", intArray=" + dataClassArrayMemberToString(arg0 = <this>.#intArray) + ", longArray=" + dataClassArrayMemberToString(arg0 = <this>.#longArray) + ", floatArray=" + dataClassArrayMemberToString(arg0 = <this>.#floatArray) + ", doubleArray=" + dataClassArrayMemberToString(arg0 = <this>.#doubleArray) + ")"
return "Test1(" + "stringArray=" + dataClassArrayMemberToString(arg0 = <this>.#stringArray) + ", " + "charArray=" + dataClassArrayMemberToString(arg0 = <this>.#charArray) + ", " + "booleanArray=" + dataClassArrayMemberToString(arg0 = <this>.#booleanArray) + ", " + "byteArray=" + dataClassArrayMemberToString(arg0 = <this>.#byteArray) + ", " + "shortArray=" + dataClassArrayMemberToString(arg0 = <this>.#shortArray) + ", " + "intArray=" + dataClassArrayMemberToString(arg0 = <this>.#intArray) + ", " + "longArray=" + dataClassArrayMemberToString(arg0 = <this>.#longArray) + ", " + "floatArray=" + dataClassArrayMemberToString(arg0 = <this>.#floatArray) + ", " + "doubleArray=" + dataClassArrayMemberToString(arg0 = <this>.#doubleArray) + ")"
}
}
@@ -176,7 +176,7 @@ data class Test2<T : Any?> {
}
override fun toString(): String {
return "Test2(genericArray=" + dataClassArrayMemberToString(arg0 = <this>.#genericArray) + ")"
return "Test2(" + "genericArray=" + dataClassArrayMemberToString(arg0 = <this>.#genericArray) + ")"
}
}
@@ -222,7 +222,7 @@ data class Test3 {
}
override fun toString(): String {
return "Test3(anyArrayN=" + dataClassArrayMemberToString(arg0 = <this>.#anyArrayN) + ")"
return "Test3(" + "anyArrayN=" + dataClassArrayMemberToString(arg0 = <this>.#anyArrayN) + ")"
}
}
@@ -167,13 +167,16 @@ FILE fqName:<root> fileName:/dataClasses.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test1'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test1(x="
CONST String type=kotlin.String value="Test1("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", y="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="y="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=", z="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="z="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:z type:kotlin.Any visibility:private [final]' type=kotlin.Any origin=null
receiver: GET_VAR '<this>: <root>.Test1 declared in <root>.Test1.toString' type=<root>.Test1 origin=null
CONST String type=kotlin.String value=")"
@@ -270,7 +273,8 @@ FILE fqName:<root> fileName:/dataClasses.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test2'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test2(x="
CONST String type=kotlin.String value="Test2("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Any? visibility:private [final]' type=kotlin.Any? origin=null
receiver: GET_VAR '<this>: <root>.Test2 declared in <root>.Test2.toString' type=<root>.Test2 origin=null
CONST String type=kotlin.String value=")"
@@ -501,16 +505,20 @@ FILE fqName:<root> fileName:/dataClasses.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test3'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test3(d="
CONST String type=kotlin.String value="Test3("
CONST String type=kotlin.String value="d="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:d type:kotlin.Double visibility:private [final]' type=kotlin.Double origin=null
receiver: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3.toString' type=<root>.Test3 origin=null
CONST String type=kotlin.String value=", dn="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="dn="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:dn type:kotlin.Double? visibility:private [final]' type=kotlin.Double? origin=null
receiver: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3.toString' type=<root>.Test3 origin=null
CONST String type=kotlin.String value=", f="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="f="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:f type:kotlin.Float visibility:private [final]' type=kotlin.Float origin=null
receiver: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3.toString' type=<root>.Test3 origin=null
CONST String type=kotlin.String value=", df="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="df="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:df type:kotlin.Float? visibility:private [final]' type=kotlin.Float? origin=null
receiver: GET_VAR '<this>: <root>.Test3 declared in <root>.Test3.toString' type=<root>.Test3 origin=null
CONST String type=kotlin.String value=")"
@@ -61,7 +61,7 @@ data class Test1 {
}
override fun toString(): String {
return "Test1(x=" + <this>.#x + ", y=" + <this>.#y + ", z=" + <this>.#z + ")"
return "Test1(" + "x=" + <this>.#x + ", " + "y=" + <this>.#y + ", " + "z=" + <this>.#z + ")"
}
}
@@ -107,7 +107,7 @@ data class Test2 {
}
override fun toString(): String {
return "Test2(x=" + <this>.#x + ")"
return "Test2(" + "x=" + <this>.#x + ")"
}
}
@@ -193,7 +193,7 @@ data class Test3 {
}
override fun toString(): String {
return "Test3(d=" + <this>.#d + ", dn=" + <this>.#dn + ", f=" + <this>.#f + ", df=" + <this>.#df + ")"
return "Test3(" + "d=" + <this>.#d + ", " + "dn=" + <this>.#dn + ", " + "f=" + <this>.#f + ", " + "df=" + <this>.#df + ")"
}
}
@@ -94,7 +94,8 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test1'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test1(x="
CONST String type=kotlin.String value="Test1("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:T of <root>.Test1 visibility:private [final]' type=T of <root>.Test1 origin=null
receiver: GET_VAR '<this>: <root>.Test1<T of <root>.Test1> declared in <root>.Test1.toString' type=<root>.Test1<T of <root>.Test1> origin=null
CONST String type=kotlin.String value=")"
@@ -184,7 +185,8 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test2'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test2(x="
CONST String type=kotlin.String value="Test2("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:T of <root>.Test2 visibility:private [final]' type=T of <root>.Test2 origin=null
receiver: GET_VAR '<this>: <root>.Test2<T of <root>.Test2> declared in <root>.Test2.toString' type=<root>.Test2<T of <root>.Test2> origin=null
CONST String type=kotlin.String value=")"
@@ -274,7 +276,8 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test3'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test3(x="
CONST String type=kotlin.String value="Test3("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.collections.List<T of <root>.Test3> visibility:private [final]' type=kotlin.collections.List<T of <root>.Test3> origin=null
receiver: GET_VAR '<this>: <root>.Test3<T of <root>.Test3> declared in <root>.Test3.toString' type=<root>.Test3<T of <root>.Test3> origin=null
CONST String type=kotlin.String value=")"
@@ -362,7 +365,8 @@ FILE fqName:<root> fileName:/dataClassesGeneric.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test4'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test4(x="
CONST String type=kotlin.String value="Test4("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.collections.List<kotlin.String> visibility:private [final]' type=kotlin.collections.List<kotlin.String> origin=null
receiver: GET_VAR '<this>: <root>.Test4 declared in <root>.Test4.toString' type=<root>.Test4 origin=null
CONST String type=kotlin.String value=")"
@@ -39,7 +39,7 @@ data class Test1<T : Any?> {
}
override fun toString(): String {
return "Test1(x=" + <this>.#x + ")"
return "Test1(" + "x=" + <this>.#x + ")"
}
}
@@ -82,7 +82,7 @@ data class Test2<T : Number> {
}
override fun toString(): String {
return "Test2(x=" + <this>.#x + ")"
return "Test2(" + "x=" + <this>.#x + ")"
}
}
@@ -125,7 +125,7 @@ data class Test3<T : Any?> {
}
override fun toString(): String {
return "Test3(x=" + <this>.#x + ")"
return "Test3(" + "x=" + <this>.#x + ")"
}
}
@@ -168,7 +168,7 @@ data class Test4 {
}
override fun toString(): String {
return "Test4(x=" + <this>.#x + ")"
return "Test4(" + "x=" + <this>.#x + ")"
}
}
@@ -132,7 +132,8 @@ FILE fqName:<root> fileName:/delegationInSealed.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.A.B'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="B(c="
CONST String type=kotlin.String value="B("
CONST String type=kotlin.String value="c="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:c type:kotlin.CharSequence visibility:private [final]' type=kotlin.CharSequence origin=null
receiver: GET_VAR '<this>: <root>.A.B declared in <root>.A.B.toString' type=<root>.A.B origin=null
CONST String type=kotlin.String value=")"
@@ -56,7 +56,7 @@ sealed class A : CharSequence {
}
override fun toString(): String {
return "B(c=" + <this>.#c + ")"
return "B(" + "c=" + <this>.#c + ")"
}
}
@@ -92,7 +92,8 @@ FILE fqName:<root> fileName:/kt31649.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.TestData'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="TestData(nn="
CONST String type=kotlin.String value="TestData("
CONST String type=kotlin.String value="nn="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:nn type:kotlin.Nothing? visibility:private [final]' type=kotlin.Nothing? origin=null
receiver: GET_VAR '<this>: <root>.TestData declared in <root>.TestData.toString' type=<root>.TestData origin=null
CONST String type=kotlin.String value=")"
@@ -166,7 +167,8 @@ FILE fqName:<root> fileName:/kt31649.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.TestInline'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="TestInline(nn="
CONST String type=kotlin.String value="TestInline("
CONST String type=kotlin.String value="nn="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:nn type:kotlin.Nothing? visibility:private [final]' type=kotlin.Nothing? origin=null
receiver: GET_VAR '<this>: <root>.TestInline declared in <root>.TestInline.toString' type=<root>.TestInline origin=null
CONST String type=kotlin.String value=")"
@@ -39,7 +39,7 @@ data class TestData {
}
override fun toString(): String {
return "TestData(nn=" + <this>.#nn + ")"
return "TestData(" + "nn=" + <this>.#nn + ")"
}
}
@@ -74,7 +74,7 @@ value class TestInline {
}
override fun toString(): String {
return "TestInline(nn=" + <this>.#nn + ")"
return "TestInline(" + "nn=" + <this>.#nn + ")"
}
}
@@ -91,7 +91,8 @@ FILE fqName:<root> fileName:/kt49936.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.A'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="A(x="
CONST String type=kotlin.String value="A("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.A declared in <root>.A.toString' type=<root>.A origin=null
CONST String type=kotlin.String value=")"
@@ -91,7 +91,8 @@ FILE fqName:<root> fileName:/lambdaInDataClassDefaultParameter.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.A'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="A(runA="
CONST String type=kotlin.String value="A("
CONST String type=kotlin.String value="runA="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:runA type:@[ExtensionFunctionType] kotlin.Function2<<root>.A, kotlin.String, kotlin.Unit> visibility:private [final]' type=@[ExtensionFunctionType] kotlin.Function2<<root>.A, kotlin.String, kotlin.Unit> origin=null
receiver: GET_VAR '<this>: <root>.A declared in <root>.A.toString' type=<root>.A origin=null
CONST String type=kotlin.String value=")"
@@ -201,7 +202,8 @@ FILE fqName:<root> fileName:/lambdaInDataClassDefaultParameter.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.B'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="B(x="
CONST String type=kotlin.String value="B("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Any visibility:private [final]' type=kotlin.Any origin=null
receiver: GET_VAR '<this>: <root>.B declared in <root>.B.toString' type=<root>.B origin=null
CONST String type=kotlin.String value=")"
@@ -39,7 +39,7 @@ data class A {
}
override fun toString(): String {
return "A(runA=" + <this>.#runA + ")"
return "A(" + "runA=" + <this>.#runA + ")"
}
}
@@ -93,7 +93,7 @@ data class B {
}
override fun toString(): String {
return "B(x=" + <this>.#x + ")"
return "B(" + "x=" + <this>.#x + ")"
}
}
@@ -128,10 +128,12 @@ FILE fqName:<root> fileName:/openDataClass.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.ValidatedProperties'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="ValidatedProperties(test1="
CONST String type=kotlin.String value="ValidatedProperties("
CONST String type=kotlin.String value="test1="
CALL 'public open fun <get-test1> (): kotlin.String declared in <root>.ValidatedProperties' type=kotlin.String origin=null
$this: GET_VAR '<this>: <root>.ValidatedProperties declared in <root>.ValidatedProperties.toString' type=<root>.ValidatedProperties origin=null
CONST String type=kotlin.String value=", test2="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="test2="
CALL 'public open fun <get-test2> (): kotlin.String declared in <root>.ValidatedProperties' type=kotlin.String origin=null
$this: GET_VAR '<this>: <root>.ValidatedProperties declared in <root>.ValidatedProperties.toString' type=<root>.ValidatedProperties origin=null
CONST String type=kotlin.String value=")"
@@ -50,7 +50,7 @@ open data class ValidatedProperties {
}
override fun toString(): String {
return "ValidatedProperties(test1=" + <this>.<get-test1>() + ", test2=" + <this>.<get-test2>() + ")"
return "ValidatedProperties(" + "test1=" + <this>.<get-test1>() + ", " + "test2=" + <this>.<get-test2>() + ")"
}
}
+2 -1
View File
@@ -60,7 +60,8 @@ FILE fqName:<root> fileName:/inlineClass.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test(x="
CONST String type=kotlin.String value="Test("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.Test declared in <root>.Test.toString' type=<root>.Test origin=null
CONST String type=kotlin.String value=")"
+1 -1
View File
@@ -25,7 +25,7 @@ value class Test {
}
override fun toString(): String {
return "Test(x=" + <this>.#x + ")"
return "Test(" + "x=" + <this>.#x + ")"
}
}
@@ -105,7 +105,8 @@ FILE fqName:<root> fileName:/inlineClassSyntheticMethods.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.IC'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="IC(c="
CONST String type=kotlin.String value="IC("
CONST String type=kotlin.String value="c="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:c type:<root>.C<TT of <root>.IC> visibility:private [final]' type=<root>.C<TT of <root>.IC> origin=null
receiver: GET_VAR '<this>: <root>.IC<TT of <root>.IC> declared in <root>.IC.toString' type=<root>.IC<TT of <root>.IC> origin=null
CONST String type=kotlin.String value=")"
@@ -46,7 +46,7 @@ value class IC<TT : Any?> {
}
override fun toString(): String {
return "IC(c=" + <this>.#c + ")"
return "IC(" + "c=" + <this>.#c + ")"
}
}
@@ -91,7 +91,8 @@ FILE fqName:<root> fileName:/arrayAccessCompositeOperators.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.MyContainer'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="MyContainer(i="
CONST String type=kotlin.String value="MyContainer("
CONST String type=kotlin.String value="i="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.MyContainer declared in <root>.MyContainer.toString' type=<root>.MyContainer origin=null
CONST String type=kotlin.String value=")"
@@ -37,7 +37,7 @@ data class MyContainer {
}
override fun toString(): String {
return "MyContainer(i=" + <this>.#i + ")"
return "MyContainer(" + "i=" + <this>.#i + ")"
}
}
@@ -91,7 +91,8 @@ FILE fqName:<root> fileName:/arrayAccessOperators.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.MyContainer'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="MyContainer(s="
CONST String type=kotlin.String value="MyContainer("
CONST String type=kotlin.String value="s="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.MyContainer declared in <root>.MyContainer.toString' type=<root>.MyContainer origin=null
CONST String type=kotlin.String value=")"
@@ -37,7 +37,7 @@ data class MyContainer {
}
override fun toString(): String {
return "MyContainer(s=" + <this>.#s + ")"
return "MyContainer(" + "s=" + <this>.#s + ")"
}
}
@@ -91,7 +91,8 @@ FILE fqName:<root> fileName:/compoundAssignmentOperators.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Result'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Result(i="
CONST String type=kotlin.String value="Result("
CONST String type=kotlin.String value="i="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.Result declared in <root>.Result.toString' type=<root>.Result origin=null
CONST String type=kotlin.String value=")"
@@ -37,7 +37,7 @@ data class Result {
}
override fun toString(): String {
return "Result(i=" + <this>.#i + ")"
return "Result(" + "i=" + <this>.#i + ")"
}
}
@@ -148,10 +148,12 @@ FILE fqName:<root> fileName:/compareTo.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Pair'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Pair(first="
CONST String type=kotlin.String value="Pair("
CONST String type=kotlin.String value="first="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:first type:A of <root>.Pair visibility:private [final]' type=A of <root>.Pair origin=null
receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.toString' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
CONST String type=kotlin.String value=", second="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="second="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:second type:B of <root>.Pair visibility:private [final]' type=B of <root>.Pair origin=null
receiver: GET_VAR '<this>: <root>.Pair<A of <root>.Pair, B of <root>.Pair> declared in <root>.Pair.toString' type=<root>.Pair<A of <root>.Pair, B of <root>.Pair> origin=null
CONST String type=kotlin.String value=")"
@@ -55,7 +55,7 @@ data class Pair<A : Any?, B : Any?> {
}
override fun toString(): String {
return "Pair(first=" + <this>.#first + ", second=" + <this>.#second + ")"
return "Pair(" + "first=" + <this>.#first + ", " + "second=" + <this>.#second + ")"
}
}
@@ -93,7 +93,8 @@ FILE fqName:<root> fileName:/iteratorOperator.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Counter'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Counter(i="
CONST String type=kotlin.String value="Counter("
CONST String type=kotlin.String value="i="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.Counter declared in <root>.Counter.toString' type=<root>.Counter origin=null
CONST String type=kotlin.String value=")"
@@ -183,7 +184,8 @@ FILE fqName:<root> fileName:/iteratorOperator.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.CounterConfig'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="CounterConfig(max="
CONST String type=kotlin.String value="CounterConfig("
CONST String type=kotlin.String value="max="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:max type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.CounterConfig declared in <root>.CounterConfig.toString' type=<root>.CounterConfig origin=null
CONST String type=kotlin.String value=")"
@@ -37,7 +37,7 @@ data class Counter {
}
override fun toString(): String {
return "Counter(i=" + <this>.#i + ")"
return "Counter(" + "i=" + <this>.#i + ")"
}
}
@@ -80,7 +80,7 @@ data class CounterConfig {
}
override fun toString(): String {
return "CounterConfig(max=" + <this>.#max + ")"
return "CounterConfig(" + "max=" + <this>.#max + ")"
}
}
@@ -83,7 +83,8 @@ FILE fqName:<root> fileName:/unaryOperators.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Result'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Result(i="
CONST String type=kotlin.String value="Result("
CONST String type=kotlin.String value="i="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:i type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.Result declared in <root>.Result.toString' type=<root>.Result origin=null
CONST String type=kotlin.String value=")"
@@ -36,7 +36,7 @@ data class Result {
}
override fun toString(): String {
return "Result(i=" + <this>.#i + ")"
return "Result(" + "i=" + <this>.#i + ")"
}
}
@@ -60,7 +60,8 @@ FILE fqName:<root> fileName:/inlineCollectionOfInlineClass.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.IT'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="IT(x="
CONST String type=kotlin.String value="IT("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.IT declared in <root>.IT.toString' type=<root>.IT origin=null
CONST String type=kotlin.String value=")"
@@ -241,7 +242,8 @@ FILE fqName:<root> fileName:/inlineCollectionOfInlineClass.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.InlineMutableSet'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="InlineMutableSet(ms="
CONST String type=kotlin.String value="InlineMutableSet("
CONST String type=kotlin.String value="ms="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:ms type:kotlin.collections.MutableSet<<root>.IT> visibility:private [final]' type=kotlin.collections.MutableSet<<root>.IT> origin=null
receiver: GET_VAR '<this>: <root>.InlineMutableSet declared in <root>.InlineMutableSet.toString' type=<root>.InlineMutableSet origin=null
CONST String type=kotlin.String value=")"
@@ -25,7 +25,7 @@ value class IT {
}
override fun toString(): String {
return "IT(x=" + <this>.#x + ")"
return "IT(" + "x=" + <this>.#x + ")"
}
}
@@ -102,7 +102,7 @@ value class InlineMutableSet : MutableSet<IT> {
}
override fun toString(): String {
return "InlineMutableSet(ms=" + <this>.#ms + ")"
return "InlineMutableSet(" + "ms=" + <this>.#ms + ")"
}
}
@@ -85,7 +85,8 @@ FILE fqName:<root> fileName:/dataClassWithJvmRecord.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.MyRec'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="MyRec(name="
CONST String type=kotlin.String value="MyRec("
CONST String type=kotlin.String value="name="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:name type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.MyRec declared in <root>.MyRec.toString' type=<root>.MyRec origin=null
CONST String type=kotlin.String value=")"
@@ -37,7 +37,7 @@ data class MyRec : Record {
}
override fun toString(): String {
return "MyRec(name=" + <this>.#name + ")"
return "MyRec(" + "name=" + <this>.#name + ")"
}
}
@@ -0,0 +1,42 @@
FILE fqName:interop fileName:/Definitions.kt
CLASS OBJECT name:Definitions modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:interop.Definitions
CONSTRUCTOR visibility:private <> () returnType:interop.Definitions [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS OBJECT name:Definitions modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:KT_CONSTANT visibility:public modality:FINAL [const,val]
FIELD PROPERTY_BACKING_FIELD name:KT_CONSTANT type:kotlin.String visibility:public [final]
EXPRESSION_BODY
CONST String type=kotlin.String value="constant"
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-KT_CONSTANT> visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:kotlin.String
correspondingProperty: PROPERTY name:KT_CONSTANT visibility:public modality:FINAL [const,val]
$this: VALUE_PARAMETER name:<this> type:interop.Definitions
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-KT_CONSTANT> (): kotlin.String declared in interop.Definitions'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:KT_CONSTANT type:kotlin.String visibility:public [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: interop.Definitions declared in interop.Definitions.<get-KT_CONSTANT>' type=interop.Definitions origin=null
PROPERTY name:ktValue visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:ktValue type:kotlin.String visibility:private [final]
EXPRESSION_BODY
GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:CONSTANT type:kotlin.String visibility:public [final,static]' type=kotlin.String origin=GET_PROPERTY
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-ktValue> visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:kotlin.String
correspondingProperty: PROPERTY name:ktValue visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:interop.Definitions
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-ktValue> (): kotlin.String declared in interop.Definitions'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:ktValue type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: interop.Definitions declared in interop.Definitions.<get-ktValue>' type=interop.Definitions origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -0,0 +1,19 @@
package interop
object Definitions {
private constructor() /* primary */ {
super/*Any*/()
/* <init>() */
}
const val KT_CONSTANT: String
field = "constant"
get
val ktValue: String
field = #CONSTANT
get
}
-1
View File
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// TARGET_BACKEND: JVM
// FILE: Definitions.kt
// IR_FILE: kt29833.txt
@@ -16,3 +16,4 @@ object Definitions {
get
}
@@ -117,7 +117,8 @@ FILE fqName:<root> fileName:/kt52677.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.LoginSuccessPacket'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="LoginSuccessPacket(id="
CONST String type=kotlin.String value="LoginSuccessPacket("
CONST String type=kotlin.String value="id="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:id type:@[MySerializable(c = ...)] <root>.Uuid1 visibility:private [final]' type=@[MySerializable(c = CLASS_REFERENCE 'CLASS OBJECT name:UuidSerializer modality:FINAL visibility:public superTypes:[<root>.MySerializer<@[MySerializable(c = ...)] <root>.Uuid1>]' type=kotlin.reflect.KClass<<root>.UuidSerializer>)] <root>.Uuid1 origin=null
receiver: GET_VAR '<this>: <root>.LoginSuccessPacket declared in <root>.LoginSuccessPacket.toString' type=<root>.LoginSuccessPacket origin=null
CONST String type=kotlin.String value=")"
@@ -51,7 +51,7 @@ data class LoginSuccessPacket {
}
override fun toString(): String {
return "LoginSuccessPacket(id=" + <this>.#id + ")"
return "LoginSuccessPacket(" + "id=" + <this>.#id + ")"
}
}
@@ -139,10 +139,12 @@ FILE fqName:<root> fileName:/dataClassMembers.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Test'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Test(x="
CONST String type=kotlin.String value="Test("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:T of <root>.Test visibility:private [final]' type=T of <root>.Test origin=null
receiver: GET_VAR '<this>: <root>.Test<T of <root>.Test> declared in <root>.Test.toString' type=<root>.Test<T of <root>.Test> origin=null
CONST String type=kotlin.String value=", y="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="y="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Test<T of <root>.Test> declared in <root>.Test.toString' type=<root>.Test<T of <root>.Test> origin=null
CONST String type=kotlin.String value=")"
@@ -52,7 +52,7 @@ data class Test<T : Any?> {
}
override fun toString(): String {
return "Test(x=" + <this>.#x + ", y=" + <this>.#y + ")"
return "Test(" + "x=" + <this>.#x + ", " + "y=" + <this>.#y + ")"
}
}
@@ -1,55 +0,0 @@
FILE fqName:<root> fileName:/genericConstructorCallWithTypeArguments.kt
FUN name:testSimple visibility:public modality:FINAL <> () returnType:<root>.Box<kotlin.Long>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun testSimple (): <root>.Box<kotlin.Long> declared in <root>'
CONSTRUCTOR_CALL 'public constructor <init> (value: T of <root>.Box) declared in <root>.Box' type=<root>.Box<kotlin.Long> origin=null
<class: T>: kotlin.Long
value: CONST Long type=kotlin.Long value=6
FUN name:testArray visibility:public modality:FINAL <T> (n:kotlin.Int, block:kotlin.Function0<T of <root>.testArray>) returnType:kotlin.Array<T of <root>.testArray> [inline]
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:true
VALUE_PARAMETER name:n index:0 type:kotlin.Int
VALUE_PARAMETER name:block index:1 type:kotlin.Function0<T of <root>.testArray> [crossinline]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun testArray <T> (n: kotlin.Int, block: kotlin.Function0<T of <root>.testArray>): kotlin.Array<T of <root>.testArray> declared in <root>'
CONSTRUCTOR_CALL 'public constructor <init> (size: kotlin.Int, init: kotlin.Function1<kotlin.Int, T of kotlin.Array>) declared in kotlin.Array' type=kotlin.Array<T of <root>.testArray> origin=null
<class: T>: T of <root>.testArray
size: GET_VAR 'n: kotlin.Int declared in <root>.testArray' type=kotlin.Int origin=null
init: FUN_EXPR type=kotlin.Function1<kotlin.Int, T of <root>.testArray> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (it:kotlin.Int) returnType:T of <root>.testArray
VALUE_PARAMETER name:it index:0 type:kotlin.Int
BLOCK_BODY
RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: kotlin.Int): T of <root>.testArray declared in <root>.testArray'
CALL 'public abstract fun invoke (): R of kotlin.Function0 declared in kotlin.Function0' type=T of <root>.testArray origin=INVOKE
$this: GET_VAR 'block: kotlin.Function0<T of <root>.testArray> declared in <root>.testArray' type=kotlin.Function0<T of <root>.testArray> origin=VARIABLE_AS_FUNCTION
CLASS CLASS name:Box modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Box<T of <root>.Box>
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?] reified:false
CONSTRUCTOR visibility:public <> (value:T of <root>.Box) returnType:<root>.Box<T of <root>.Box> [primary]
VALUE_PARAMETER name:value index:0 type:T of <root>.Box
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Box modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:value visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:value type:T of <root>.Box visibility:private [final]
EXPRESSION_BODY
GET_VAR 'value: T of <root>.Box declared in <root>.Box.<init>' type=T of <root>.Box origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-value> visibility:public modality:FINAL <> ($this:<root>.Box<T of <root>.Box>) returnType:T of <root>.Box
correspondingProperty: PROPERTY name:value visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.Box<T of <root>.Box>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-value> (): T of <root>.Box declared in <root>.Box'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of <root>.Box visibility:private [final]' type=T of <root>.Box origin=null
receiver: GET_VAR '<this>: <root>.Box<T of <root>.Box> declared in <root>.Box.<get-value>' type=<root>.Box<T of <root>.Box> origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -1,23 +0,0 @@
fun testSimple(): Box<Long> {
return Box<Long>(value = 6L)
}
inline fun <reified T : Any?> testArray(n: Int, crossinline block: Function0<T>): Array<T> {
return Array<T>(size = n, init = local fun <anonymous>(it: Int): T {
return block.invoke()
}
)
}
class Box<T : Any?> {
constructor(value: T) /* primary */ {
super/*Any*/()
/* <init>() */
}
val value: T
field = value
get
}
@@ -1,3 +1,5 @@
// FIR_IDENTICAL
fun testSimple() = Box<Long>(2L * 3)
inline fun <reified T> testArray(n: Int, crossinline block: () -> T): Array<T> {
@@ -0,0 +1,157 @@
FILE fqName:<root> fileName:/literals.kt
PROPERTY name:test1 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test1 type:kotlin.Int visibility:private [final,static]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test1> visibility:public modality:FINAL <> () returnType:kotlin.Int
correspondingProperty: PROPERTY name:test1 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test1> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test1 type:kotlin.Int visibility:private [final,static]' type=kotlin.Int origin=null
PROPERTY name:test2 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test2 type:kotlin.Int visibility:private [final,static]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=-1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test2> visibility:public modality:FINAL <> () returnType:kotlin.Int
correspondingProperty: PROPERTY name:test2 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test2> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test2 type:kotlin.Int visibility:private [final,static]' type=kotlin.Int origin=null
PROPERTY name:test3 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test3 type:kotlin.Boolean visibility:private [final,static]
EXPRESSION_BODY
CONST Boolean type=kotlin.Boolean value=true
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test3> visibility:public modality:FINAL <> () returnType:kotlin.Boolean
correspondingProperty: PROPERTY name:test3 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test3> (): kotlin.Boolean declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test3 type:kotlin.Boolean visibility:private [final,static]' type=kotlin.Boolean origin=null
PROPERTY name:test4 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test4 type:kotlin.Boolean visibility:private [final,static]
EXPRESSION_BODY
CONST Boolean type=kotlin.Boolean value=false
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test4> visibility:public modality:FINAL <> () returnType:kotlin.Boolean
correspondingProperty: PROPERTY name:test4 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test4> (): kotlin.Boolean declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test4 type:kotlin.Boolean visibility:private [final,static]' type=kotlin.Boolean origin=null
PROPERTY name:test5 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test5 type:kotlin.String visibility:private [final,static]
EXPRESSION_BODY
CONST String type=kotlin.String value="abc"
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test5> visibility:public modality:FINAL <> () returnType:kotlin.String
correspondingProperty: PROPERTY name:test5 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test5> (): kotlin.String declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test5 type:kotlin.String visibility:private [final,static]' type=kotlin.String origin=null
PROPERTY name:test6 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test6 type:kotlin.Nothing? visibility:private [final,static]
EXPRESSION_BODY
CONST Null type=kotlin.Nothing? value=null
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test6> visibility:public modality:FINAL <> () returnType:kotlin.Nothing?
correspondingProperty: PROPERTY name:test6 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test6> (): kotlin.Nothing? declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test6 type:kotlin.Nothing? visibility:private [final,static]' type=kotlin.Nothing? origin=null
PROPERTY name:test7 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test7 type:kotlin.Long visibility:private [final,static]
EXPRESSION_BODY
CONST Long type=kotlin.Long value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test7> visibility:public modality:FINAL <> () returnType:kotlin.Long
correspondingProperty: PROPERTY name:test7 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test7> (): kotlin.Long declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test7 type:kotlin.Long visibility:private [final,static]' type=kotlin.Long origin=null
PROPERTY name:test8 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test8 type:kotlin.Long visibility:private [final,static]
EXPRESSION_BODY
CALL 'public final fun unaryMinus (): kotlin.Long declared in kotlin.Long' type=kotlin.Long origin=null
$this: CONST Long type=kotlin.Long value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test8> visibility:public modality:FINAL <> () returnType:kotlin.Long
correspondingProperty: PROPERTY name:test8 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test8> (): kotlin.Long declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test8 type:kotlin.Long visibility:private [final,static]' type=kotlin.Long origin=null
PROPERTY name:test9 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test9 type:kotlin.Double visibility:private [final,static]
EXPRESSION_BODY
CONST Double type=kotlin.Double value=1.0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test9> visibility:public modality:FINAL <> () returnType:kotlin.Double
correspondingProperty: PROPERTY name:test9 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test9> (): kotlin.Double declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test9 type:kotlin.Double visibility:private [final,static]' type=kotlin.Double origin=null
PROPERTY name:test10 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test10 type:kotlin.Double visibility:private [final,static]
EXPRESSION_BODY
CALL 'public final fun unaryMinus (): kotlin.Double declared in kotlin.Double' type=kotlin.Double origin=null
$this: CONST Double type=kotlin.Double value=1.0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test10> visibility:public modality:FINAL <> () returnType:kotlin.Double
correspondingProperty: PROPERTY name:test10 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test10> (): kotlin.Double declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test10 type:kotlin.Double visibility:private [final,static]' type=kotlin.Double origin=null
PROPERTY name:test11 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test11 type:kotlin.Float visibility:private [final,static]
EXPRESSION_BODY
CONST Float type=kotlin.Float value=1.0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test11> visibility:public modality:FINAL <> () returnType:kotlin.Float
correspondingProperty: PROPERTY name:test11 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test11> (): kotlin.Float declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test11 type:kotlin.Float visibility:private [final,static]' type=kotlin.Float origin=null
PROPERTY name:test12 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test12 type:kotlin.Float visibility:private [final,static]
EXPRESSION_BODY
CALL 'public final fun unaryMinus (): kotlin.Float declared in kotlin.Float' type=kotlin.Float origin=null
$this: CONST Float type=kotlin.Float value=1.0
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test12> visibility:public modality:FINAL <> () returnType:kotlin.Float
correspondingProperty: PROPERTY name:test12 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test12> (): kotlin.Float declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test12 type:kotlin.Float visibility:private [final,static]' type=kotlin.Float origin=null
PROPERTY name:test13 visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test13 type:kotlin.Char visibility:private [final,static]
EXPRESSION_BODY
CONST Char type=kotlin.Char value='a'
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test13> visibility:public modality:FINAL <> () returnType:kotlin.Char
correspondingProperty: PROPERTY name:test13 visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test13> (): kotlin.Char declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test13 type:kotlin.Char visibility:private [final,static]' type=kotlin.Char origin=null
PROPERTY name:testB visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:testB type:kotlin.Byte visibility:private [final,static]
EXPRESSION_BODY
CONST Byte type=kotlin.Byte value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-testB> visibility:public modality:FINAL <> () returnType:kotlin.Byte
correspondingProperty: PROPERTY name:testB visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-testB> (): kotlin.Byte declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:testB type:kotlin.Byte visibility:private [final,static]' type=kotlin.Byte origin=null
PROPERTY name:testS visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:testS type:kotlin.Short visibility:private [final,static]
EXPRESSION_BODY
CONST Short type=kotlin.Short value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-testS> visibility:public modality:FINAL <> () returnType:kotlin.Short
correspondingProperty: PROPERTY name:testS visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-testS> (): kotlin.Short declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:testS type:kotlin.Short visibility:private [final,static]' type=kotlin.Short origin=null
PROPERTY name:testI visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:testI type:kotlin.Int visibility:private [final,static]
EXPRESSION_BODY
CONST Int type=kotlin.Int value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-testI> visibility:public modality:FINAL <> () returnType:kotlin.Int
correspondingProperty: PROPERTY name:testI visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-testI> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:testI type:kotlin.Int visibility:private [final,static]' type=kotlin.Int origin=null
PROPERTY name:testL visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:testL type:kotlin.Long visibility:private [final,static]
EXPRESSION_BODY
CONST Long type=kotlin.Long value=1
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-testL> visibility:public modality:FINAL <> () returnType:kotlin.Long
correspondingProperty: PROPERTY name:testL visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-testL> (): kotlin.Long declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:testL type:kotlin.Long visibility:private [final,static]' type=kotlin.Long origin=null
@@ -0,0 +1,67 @@
val test1: Int
field = 1
get
val test2: Int
field = -1
get
val test3: Boolean
field = true
get
val test4: Boolean
field = false
get
val test5: String
field = "abc"
get
val test6: Nothing?
field = null
get
val test7: Long
field = 1L
get
val test8: Long
field = 1L.unaryMinus()
get
val test9: Double
field = 1.0
get
val test10: Double
field = 1.0.unaryMinus()
get
val test11: Float
field = 1.0F
get
val test12: Float
field = 1.0F.unaryMinus()
get
val test13: Char
field = 'a'
get
val testB: Byte
field = 1B
get
val testS: Short
field = 1S
get
val testI: Int
field = 1
get
val testL: Long
field = 1L
get
-2
View File
@@ -1,5 +1,3 @@
// FIR_IDENTICAL
// IGNORE_BACKEND_K2: JS_IR
val test1 = 1
val test2 = -1
val test3 = true
@@ -28,4 +28,5 @@ FILE fqName:<root> fileName:/simpleUnaryOperators.kt
FUN name:test6 visibility:public modality:FINAL <> () returnType:kotlin.Boolean
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test6 (): kotlin.Boolean declared in <root>'
CONST Boolean type=kotlin.Boolean value=false
CALL 'public final fun not (): kotlin.Boolean declared in kotlin.Boolean' type=kotlin.Boolean origin=null
$this: CONST Boolean type=kotlin.Boolean value=true
@@ -19,5 +19,5 @@ fun test5(x: Boolean): Boolean {
}
fun test6(): Boolean {
return false
return true.not()
}
@@ -824,10 +824,12 @@ FILE fqName:<root> fileName:/ArrayMap.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.ArrayMapImpl.Entry'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Entry(key="
CONST String type=kotlin.String value="Entry("
CONST String type=kotlin.String value="key="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:key type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.ArrayMapImpl.Entry<T of <root>.ArrayMapImpl.Entry> declared in <root>.ArrayMapImpl.Entry.toString' type=<root>.ArrayMapImpl.Entry<T of <root>.ArrayMapImpl.Entry> origin=null
CONST String type=kotlin.String value=", value="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="value="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of <root>.ArrayMapImpl.Entry visibility:private [final]' type=T of <root>.ArrayMapImpl.Entry origin=null
receiver: GET_VAR '<this>: <root>.ArrayMapImpl.Entry<T of <root>.ArrayMapImpl.Entry> declared in <root>.ArrayMapImpl.Entry.toString' type=<root>.ArrayMapImpl.Entry<T of <root>.ArrayMapImpl.Entry> origin=null
CONST String type=kotlin.String value=")"
@@ -322,7 +322,7 @@ internal class ArrayMapImpl<T : Any> : ArrayMap<T> {
}
override fun toString(): String {
return "Entry(key=" + <this>.#key + ", value=" + <this>.#value + ")"
return "Entry(" + "key=" + <this>.#key + ", " + "value=" + <this>.#value + ")"
}
}
@@ -94,7 +94,8 @@ FILE fqName:<root> fileName:/MultiList.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Some'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Some(value="
CONST String type=kotlin.String value="Some("
CONST String type=kotlin.String value="value="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of <root>.Some visibility:private [final]' type=T of <root>.Some origin=null
receiver: GET_VAR '<this>: <root>.Some<T of <root>.Some> declared in <root>.Some.toString' type=<root>.Some<T of <root>.Some> origin=null
CONST String type=kotlin.String value=")"
@@ -39,7 +39,7 @@ data class Some<T : Any?> {
}
override fun toString(): String {
return "Some(value=" + <this>.#value + ")"
return "Some(" + "value=" + <this>.#value + ")"
}
}
@@ -176,7 +176,8 @@ FILE fqName:<root> fileName:/SignatureClash.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.DataClass'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="DataClass(delegate="
CONST String type=kotlin.String value="DataClass("
CONST String type=kotlin.String value="delegate="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:delegate type:<root>.Delegate visibility:private [final]' type=<root>.Delegate origin=null
receiver: GET_VAR '<this>: <root>.DataClass declared in <root>.DataClass.toString' type=<root>.DataClass origin=null
CONST String type=kotlin.String value=")"
@@ -71,7 +71,7 @@ data class DataClass : Derived, Delegate {
}
override fun toString(): String {
return "DataClass(delegate=" + <this>.#delegate + ")"
return "DataClass(" + "delegate=" + <this>.#delegate + ")"
}
}
@@ -1,36 +0,0 @@
FILE fqName:<root> fileName:/kt59102.kt
CLASS CLASS name:XAlign modality:FINAL visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.XAlign
CONSTRUCTOR visibility:public <> (bits:kotlin.Long) returnType:<root>.XAlign [primary]
VALUE_PARAMETER name:bits index:0 type:kotlin.Long
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:XAlign modality:FINAL visibility:public superTypes:[kotlin.Any]'
PROPERTY name:bits visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:bits type:kotlin.Long visibility:private [final]
EXPRESSION_BODY
GET_VAR 'bits: kotlin.Long declared in <root>.XAlign.<init>' type=kotlin.Long origin=INITIALIZE_PROPERTY_FROM_PARAMETER
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-bits> visibility:public modality:FINAL <> ($this:<root>.XAlign) returnType:kotlin.Long
correspondingProperty: PROPERTY name:bits visibility:public modality:FINAL [val]
$this: VALUE_PARAMETER name:<this> type:<root>.XAlign
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-bits> (): kotlin.Long declared in <root>.XAlign'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:bits type:kotlin.Long visibility:private [final]' type=kotlin.Long origin=null
receiver: GET_VAR '<this>: <root>.XAlign declared in <root>.XAlign.<get-bits>' type=<root>.XAlign origin=null
CONSTRUCTOR visibility:public <> () returnType:<root>.XAlign
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> (bits: kotlin.Long) declared in <root>.XAlign'
bits: CONST Long type=kotlin.Long value=2
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -1,16 +0,0 @@
class XAlign {
constructor(bits: Long) /* primary */ {
super/*Any*/()
/* <init>() */
}
val bits: Long
field = bits
get
constructor() {
this/*XAlign*/(bits = 2L)
}
}
+1
View File
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
class XAlign(val bits: Long) {
constructor() : this(1 shl 1)
}
@@ -13,7 +13,9 @@ FILE fqName:<root> fileName:/timesInBuilder.kt
$receiver: CALL 'public final fun lessEq <T> (t: T of <root>.lessEq): <root>.Expression declared in <root>' type=<root>.Expression origin=null
<T>: kotlin.Int
$receiver: CALL 'public final fun <get-spentTime> (): <root>.Column declared in <root>' type=<root>.Column origin=GET_PROPERTY
t: CONST Int type=kotlin.Int value=120
t: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=MUL
$this: CONST Int type=kotlin.Int value=2
other: CONST Int type=kotlin.Int value=60
CALL 'public final fun unaryPlus (): kotlin.Unit declared in <root>.ArgumentsBuilder' type=kotlin.Unit origin=null
$this: GET_VAR '$this$countIssues: <root>.ArgumentsBuilder declared in <root>.test.<anonymous>' type=<root>.ArgumentsBuilder origin=null
$receiver: CALL 'public final fun lessEq <T> (t: T of <root>.lessEq): <root>.Expression declared in <root>' type=<root>.Expression origin=null
@@ -21,13 +23,18 @@ FILE fqName:<root> fileName:/timesInBuilder.kt
$receiver: CALL 'public final fun <get-spentTime> (): <root>.Column declared in <root>' type=<root>.Column origin=GET_PROPERTY
t: CALL 'public final fun id <I> (arg: I of <root>.id): I of <root>.id declared in <root>' type=kotlin.Int origin=null
<I>: kotlin.Int
arg: CONST Int type=kotlin.Int value=120
arg: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=MUL
$this: CONST Int type=kotlin.Int value=2
other: CONST Int type=kotlin.Int value=60
CALL 'public final fun unaryPlus (): kotlin.Unit declared in <root>.ArgumentsBuilder' type=kotlin.Unit origin=null
$this: GET_VAR '$this$countIssues: <root>.ArgumentsBuilder declared in <root>.test.<anonymous>' type=<root>.ArgumentsBuilder origin=null
$receiver: CALL 'public final fun select <T> (t: T of <root>.select, r: T of <root>.select): <root>.Expression declared in <root>' type=<root>.Expression origin=null
<T>: kotlin.Long
$receiver: CALL 'public final fun <get-spentTime> (): <root>.Column declared in <root>' type=<root>.Column origin=GET_PROPERTY
t: CONST Long type=kotlin.Long value=120
t: CALL 'public open fun toLong (): kotlin.Long declared in kotlin.Int' type=kotlin.Long origin=null
$this: CALL 'public final fun times (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=MUL
$this: CONST Int type=kotlin.Int value=2
other: CONST Int type=kotlin.Int value=60
r: GET_VAR 'x: kotlin.Long declared in <root>.test' type=kotlin.Long origin=null
PROPERTY name:spentTime visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:spentTime type:<root>.Column visibility:private [final,static]
@@ -1,8 +1,8 @@
private fun test(x: Long) {
return countIssues(restrictionsBuilder = local fun ArgumentsBuilder.<anonymous>() {
($this$countIssues, <get-spentTime>().lessEq<Int>(t = 120)).unaryPlus()
($this$countIssues, <get-spentTime>().lessEq<Int>(t = id<Int>(arg = 120))).unaryPlus()
($this$countIssues, <get-spentTime>().select<Long>(t = 120L, r = x)).unaryPlus()
($this$countIssues, <get-spentTime>().lessEq<Int>(t = 2.times(other = 60))).unaryPlus()
($this$countIssues, <get-spentTime>().lessEq<Int>(t = id<Int>(arg = 2.times(other = 60)))).unaryPlus()
($this$countIssues, <get-spentTime>().select<Long>(t = 2.times(other = 60).toLong(), r = x)).unaryPlus()
}
)
}
@@ -62,7 +62,8 @@ FILE fqName:<root> fileName:/valueClassEquals.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Z'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Z(s="
CONST String type=kotlin.String value="Z("
CONST String type=kotlin.String value="s="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:s type:kotlin.String visibility:private [final]' type=kotlin.String origin=null
receiver: GET_VAR '<this>: <root>.Z declared in <root>.Z.toString' type=<root>.Z origin=null
CONST String type=kotlin.String value=")"
@@ -26,7 +26,7 @@ value class Z {
}
override fun toString(): String {
return "Z(s=" + <this>.#s + ")"
return "Z(" + "s=" + <this>.#s + ")"
}
}
@@ -126,10 +126,12 @@ FILE fqName:<root> fileName:/destructuringInLambda.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.A'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="A(x="
CONST String type=kotlin.String value="A("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.A declared in <root>.A.toString' type=<root>.A origin=null
CONST String type=kotlin.String value=", y="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="y="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.A declared in <root>.A.toString' type=<root>.A origin=null
CONST String type=kotlin.String value=")"
@@ -49,7 +49,7 @@ data class A {
}
override fun toString(): String {
return "A(x=" + <this>.#x + ", y=" + <this>.#y + ")"
return "A(" + "x=" + <this>.#x + ", " + "y=" + <this>.#y + ")"
}
}
+4 -2
View File
@@ -157,10 +157,12 @@ FILE fqName:<root> fileName:/kt45236.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.NetRequestStatus.Error'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Error(error="
CONST String type=kotlin.String value="Error("
CONST String type=kotlin.String value="error="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:error type:kotlin.Throwable visibility:private [final]' type=kotlin.Throwable origin=null
receiver: GET_VAR '<this>: <root>.NetRequestStatus.Error<T of <root>.NetRequestStatus.Error> declared in <root>.NetRequestStatus.Error.toString' type=<root>.NetRequestStatus.Error<T of <root>.NetRequestStatus.Error> origin=null
CONST String type=kotlin.String value=", value="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="value="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:value type:T of <root>.NetRequestStatus.Error? visibility:private [final]' type=T of <root>.NetRequestStatus.Error? origin=null
receiver: GET_VAR '<this>: <root>.NetRequestStatus.Error<T of <root>.NetRequestStatus.Error> declared in <root>.NetRequestStatus.Error.toString' type=<root>.NetRequestStatus.Error<T of <root>.NetRequestStatus.Error> origin=null
CONST String type=kotlin.String value=")"
+12
View File
@@ -0,0 +1,12 @@
FILE fqName:<root> fileName:/simple.kt
PROPERTY name:test visibility:public modality:FINAL [val]
FIELD PROPERTY_BACKING_FIELD name:test type:kotlin.Int visibility:private [final,static]
EXPRESSION_BODY
CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=PLUS
$this: CONST Int type=kotlin.Int value=2
other: CONST Int type=kotlin.Int value=2
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-test> visibility:public modality:FINAL <> () returnType:kotlin.Int
correspondingProperty: PROPERTY name:test visibility:public modality:FINAL [val]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-test> (): kotlin.Int declared in <root>'
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test type:kotlin.Int visibility:private [final,static]' type=kotlin.Int origin=null
+3
View File
@@ -0,0 +1,3 @@
val test: Int
field = 2.plus(other = 2)
get
-2
View File
@@ -1,3 +1 @@
// FIR_IDENTICAL
val test = 2 + 2
@@ -252,10 +252,12 @@ FILE fqName:<root> fileName:/enhancedNullabilityInForLoop.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.P'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="P(x="
CONST String type=kotlin.String value="P("
CONST String type=kotlin.String value="x="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.P declared in <root>.P.toString' type=<root>.P origin=null
CONST String type=kotlin.String value=", y="
CONST String type=kotlin.String value=", "
CONST String type=kotlin.String value="y="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.Int visibility:private [final]' type=kotlin.Int origin=null
receiver: GET_VAR '<this>: <root>.P declared in <root>.P.toString' type=<root>.P origin=null
CONST String type=kotlin.String value=")"
@@ -125,7 +125,7 @@ data class P {
}
override fun toString(): String {
return "P(x=" + <this>.#x + ", y=" + <this>.#y + ")"
return "P(" + "x=" + <this>.#x + ", " + "y=" + <this>.#y + ")"
}
}
@@ -87,7 +87,8 @@ FILE fqName:<root> fileName:/typeAliasWithUnsafeVariance.kt
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun toString (): kotlin.String declared in <root>.Tag'
STRING_CONCATENATION type=kotlin.String
CONST String type=kotlin.String value="Tag(action="
CONST String type=kotlin.String value="Tag("
CONST String type=kotlin.String value="action="
GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:action type:kotlin.Function1<RenderingT of <root>.Tag, kotlin.Unit> visibility:private [final]' type=kotlin.Function1<RenderingT of <root>.Tag, kotlin.Unit> origin=null
receiver: GET_VAR '<this>: <root>.Tag<RenderingT of <root>.Tag> declared in <root>.Tag.toString' type=<root>.Tag<RenderingT of <root>.Tag> origin=null
CONST String type=kotlin.String value=")"
@@ -37,7 +37,7 @@ data class Tag<out RenderingT : Any?> {
}
override fun toString(): String {
return "Tag(action=" + <this>.#action + ")"
return "Tag(" + "action=" + <this>.#action + ")"
}
}
@@ -21271,12 +21271,6 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/stringOperations.kt");
}
@Test
@TestMetadata("thisPlusString.kt")
public void testThisPlusString() throws Exception {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/thisPlusString.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {
@@ -21271,12 +21271,6 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/stringOperations.kt");
}
@Test
@TestMetadata("thisPlusString.kt")
public void testThisPlusString() throws Exception {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/thisPlusString.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {
@@ -21271,12 +21271,6 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
runTest("compiler/testData/codegen/box/involvesIrInterpreter/stringOperations.kt");
}
@Test
@TestMetadata("thisPlusString.kt")
public void testThisPlusString() throws Exception {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/thisPlusString.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {
@@ -24181,12 +24181,6 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
runTest("compiler/testData/codegen/box/involvesIrInterpreter/stringOperations.kt");
}
@Test
@TestMetadata("thisPlusString.kt")
public void testThisPlusString() throws Exception {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/thisPlusString.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {
@@ -24647,12 +24647,6 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
runTest("compiler/testData/codegen/box/involvesIrInterpreter/stringOperations.kt");
}
@Test
@TestMetadata("thisPlusString.kt")
public void testThisPlusString() throws Exception {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/thisPlusString.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {
@@ -23949,12 +23949,6 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
runTest("compiler/testData/codegen/box/involvesIrInterpreter/stringOperations.kt");
}
@Test
@TestMetadata("thisPlusString.kt")
public void testThisPlusString() throws Exception {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/thisPlusString.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {
@@ -24182,12 +24182,6 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
runTest("compiler/testData/codegen/box/involvesIrInterpreter/stringOperations.kt");
}
@Test
@TestMetadata("thisPlusString.kt")
public void testThisPlusString() throws Exception {
runTest("compiler/testData/codegen/box/involvesIrInterpreter/thisPlusString.kt");
}
@Test
@TestMetadata("unsignedConst.kt")
public void testUnsignedConst() throws Exception {