diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 14a07b45b16..ff12b906c0b 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -196,7 +196,7 @@ class Fir2IrDeclarationStorage( getIrProperty(declaration, irClass) } is FirConstructor -> getIrConstructor(declaration, irClass) - is FirRegularClass -> getIrClass(declaration) + is FirRegularClass -> getIrClass(declaration, exactlySourceClass = false) else -> continue } } @@ -250,7 +250,7 @@ class Fir2IrDeclarationStorage( } } - private fun createIrClass(klass: FirClass<*>): IrClass { + private fun createIrClass(klass: FirClass<*>, exactlySourceClass: Boolean = false): IrClass { // NB: klass can be either FirRegularClass or FirAnonymousObject if (klass is FirAnonymousObject) { return createIrAnonymousObject(klass) @@ -258,7 +258,9 @@ class Fir2IrDeclarationStorage( val regularClass = klass as FirRegularClass val descriptor = WrappedClassDescriptor() - val origin = IrDeclarationOrigin.DEFINED + val origin = + if (exactlySourceClass || firProvider.getFirClassifierContainerFileIfAny(klass.symbol) != null) IrDeclarationOrigin.DEFINED + else IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB val visibility = regularClass.visibility val modality = if (regularClass.classKind == ClassKind.ENUM_CLASS) { regularClass.enumClassModality() @@ -298,8 +300,8 @@ class Fir2IrDeclarationStorage( return irClass } - fun getIrClass(klass: FirClass<*>): IrClass { - return getCachedIrClass(klass) ?: createIrClass(klass) + fun getIrClass(klass: FirClass<*>, exactlySourceClass: Boolean = true): IrClass { + return getCachedIrClass(klass) ?: createIrClass(klass, exactlySourceClass) } private fun createIrAnonymousObject( diff --git a/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.txt b/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.txt deleted file mode 100644 index 65321722b82..00000000000 --- a/compiler/testData/ir/irText/stubs/constFromBuiltins.fir.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 - CALL 'public final fun (): kotlin.Int declared in kotlin.Int.Companion' type=kotlin.Int origin=GET_PROPERTY - $this: GET_OBJECT 'CLASS 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.kt b/compiler/testData/ir/irText/stubs/constFromBuiltins.kt index 433bc91c58c..ca0a7834371 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 val test = Int.MIN_VALUE \ No newline at end of file