diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstDeclarationAnnotationTransformer.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstDeclarationAnnotationTransformer.kt index fced3dbec0a..2f68f094427 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstDeclarationAnnotationTransformer.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstDeclarationAnnotationTransformer.kt @@ -35,14 +35,6 @@ internal class IrConstDeclarationAnnotationTransformer( override fun visitDeclaration(declaration: IrDeclarationBase, data: Nothing?): IrStatement { transformAnnotations(declaration) - if (declaration is IrClass && declaration.kind == ClassKind.ANNOTATION_CLASS) { - declaration.primaryConstructor?.valueParameters?.forEach { - val defaultExpression = it.defaultValue?.expression ?: return@forEach - if (defaultExpression.canBeInterpreted()) { - it.defaultValue?.expression = transformAnnotationArgument(defaultExpression, it) - } - } - } return super.visitDeclaration(declaration, data) } } diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt index b106f6b6df1..1d6e6e8f335 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/transformer/IrConstExpressionTransformer.kt @@ -8,8 +8,10 @@ package org.jetbrains.kotlin.ir.interpreter.transformer import org.jetbrains.kotlin.constant.EvaluatedConstTracker import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin import org.jetbrains.kotlin.ir.declarations.IrField import org.jetbrains.kotlin.ir.declarations.IrFile +import org.jetbrains.kotlin.ir.declarations.IrFunction import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl import org.jetbrains.kotlin.ir.expressions.impl.IrStringConcatenationImpl @@ -51,6 +53,19 @@ internal class IrConstExpressionTransformer( return super.visitField(declaration, data) } + override fun visitFunction(declaration: IrFunction, data: Nothing?): IrStatement { + // It is useless to visit default accessor and if we do that we could render excess information for `IrGetField` + if (declaration.origin == IrDeclarationOrigin.DEFAULT_PROPERTY_ACCESSOR) return declaration + return super.visitFunction(declaration, data) + } + + override fun visitGetField(expression: IrGetField, data: Nothing?): IrExpression { + if (expression.canBeInterpreted()) { + return expression.interpret(failAsError = false) + } + return super.visitGetField(expression, data) + } + override fun visitStringConcatenation(expression: IrStringConcatenation, data: Nothing?): IrExpression { fun IrExpression.wrapInStringConcat(): IrExpression = IrStringConcatenationImpl( this.startOffset, this.endOffset, expression.type, listOf(this@wrapInStringConcat) diff --git a/compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithDefaults.kt b/compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithDefaults.kt index ef13b1fd2ba..b11d0631e9a 100644 --- a/compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithDefaults.kt +++ b/compiler/testData/codegen/box/involvesIrInterpreter/serialization/annotationWithDefaults.kt @@ -10,7 +10,7 @@ import kotlin.reflect.KClass @Target(AnnotationTarget.FIELD) @Retention(AnnotationRetention.RUNTIME) annotation class IntegerNumberValid( - val message: String = "Has illegal integer number value", + val message: String = "Has illegal integer number value", val groups: Array> = [], val minimum: Long = Long.MIN_VALUE, diff --git a/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt b/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt index cab04570505..67fb561c2a5 100644 --- a/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt +++ b/compiler/testData/codegen/box/javaVisibility/package/cannotAccessInterfaceMemberViaReceiver.fir.ir.txt @@ -9,7 +9,7 @@ FILE fqName: fileName:/Child.kt $this: VALUE_PARAMETER name: type:.Child BLOCK_BODY RETURN type=kotlin.Nothing from='public final fun foo (): kotlin.String declared in .Child' - GET_FIELD 'FIELD IR_EXTERNAL_JAVA_DECLARATION_STUB name:publicStaticField type:kotlin.String visibility:public [final,static]' type=kotlin.String origin=GET_PROPERTY + CONST String type=kotlin.String value="OK" 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 diff --git a/compiler/testData/ir/irText/declarations/kt29833.fir.ir.txt b/compiler/testData/ir/irText/declarations/kt29833.fir.ir.txt deleted file mode 100644 index 587ea1f3dfb..00000000000 --- a/compiler/testData/ir/irText/declarations/kt29833.fir.ir.txt +++ /dev/null @@ -1,42 +0,0 @@ -FILE fqName:interop fileName:/Definitions.kt - CLASS OBJECT name:Definitions modality:FINAL visibility:public superTypes:[kotlin.Any] - $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:interop.Definitions - CONSTRUCTOR visibility:private <> () returnType:interop.Definitions [primary] - BLOCK_BODY - DELEGATING_CONSTRUCTOR_CALL 'public constructor () 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: 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: type:interop.Definitions - BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun (): 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 ': interop.Definitions declared in interop.Definitions.' 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: visibility:public modality:FINAL <> ($this:interop.Definitions) returnType:kotlin.String - correspondingProperty: PROPERTY name:ktValue visibility:public modality:FINAL [val] - $this: VALUE_PARAMETER name: type:interop.Definitions - BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun (): 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 ': interop.Definitions declared in interop.Definitions.' 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: 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: 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: type:kotlin.Any diff --git a/compiler/testData/ir/irText/declarations/kt29833.fir.kt.txt b/compiler/testData/ir/irText/declarations/kt29833.fir.kt.txt deleted file mode 100644 index f50cb85f847..00000000000 --- a/compiler/testData/ir/irText/declarations/kt29833.fir.kt.txt +++ /dev/null @@ -1,18 +0,0 @@ -package interop - -object Definitions { - private constructor() /* primary */ { - super/*Any*/() - /* () */ - - } - - const val KT_CONSTANT: String - field = "constant" - get - - val ktValue: String - field = #CONSTANT - get - -} diff --git a/compiler/testData/ir/irText/declarations/kt29833.kt b/compiler/testData/ir/irText/declarations/kt29833.kt index 3e159ea1619..57a5cdf9fa3 100644 --- a/compiler/testData/ir/irText/declarations/kt29833.kt +++ b/compiler/testData/ir/irText/declarations/kt29833.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // TARGET_BACKEND: JVM // FILE: Definitions.kt // IR_FILE: kt29833.txt diff --git a/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.ir.txt b/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.ir.txt deleted file mode 100644 index 4093aebcc4b..00000000000 --- a/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.ir.txt +++ /dev/null @@ -1,11 +0,0 @@ -FILE fqName: fileName:/constFromBuiltins.kt - PROPERTY name:test visibility:public modality:FINAL [val] - FIELD PROPERTY_BACKING_FIELD name:test type:kotlin.Int visibility:private [final,static] - EXPRESSION_BODY - GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:MIN_VALUE type:kotlin.Int visibility:public [final]' type=kotlin.Int origin=null - receiver: GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Companion modality:FINAL visibility:public [companion] superTypes:[kotlin.Any]' type=kotlin.Int.Companion - FUN DEFAULT_PROPERTY_ACCESSOR name: 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 (): kotlin.Int declared in ' - GET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:test type:kotlin.Int visibility:private [final,static]' type=kotlin.Int origin=null diff --git a/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.kt.txt b/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.kt.txt deleted file mode 100644 index 7a869a56880..00000000000 --- a/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.kt.txt +++ /dev/null @@ -1,3 +0,0 @@ -val test: Int - field = Companion.#MIN_VALUE - get diff --git a/compiler/testData/ir/irText/stubs/constFromBuiltins.kt b/compiler/testData/ir/irText/stubs/constFromBuiltins.kt index 8ec453cf42d..a839728eb37 100644 --- a/compiler/testData/ir/irText/stubs/constFromBuiltins.kt +++ b/compiler/testData/ir/irText/stubs/constFromBuiltins.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // DUMP_EXTERNAL_CLASS: kotlin/Int // TARGET_BACKEND: JVM_IR