@@ -778,19 +778,22 @@ open class KotlinFileExtractor(
778778 with (" field" , f) {
779779 DeclarationStackAdjuster (f).use {
780780 declarationStack.push(f)
781- return extractField(useField(f), f.name.asString(), f.type, parentId, tw.getLocation(f), f.visibility, f, isExternalDeclaration(f))
781+ return extractField(useField(f), f.name.asString(), f.type, parentId, tw.getLocation(f), f.visibility, f, isExternalDeclaration(f), f.isFinal )
782782 }
783783 }
784784 }
785785
786786
787- private fun extractField (id : Label <out DbField >, name : String , type : IrType , parentId : Label <out DbReftype >, locId : Label <DbLocation >, visibility : DescriptorVisibility , errorElement : IrElement , isExternalDeclaration : Boolean ): Label <out DbField > {
787+ private fun extractField (id : Label <out DbField >, name : String , type : IrType , parentId : Label <out DbReftype >, locId : Label <DbLocation >, visibility : DescriptorVisibility , errorElement : IrElement , isExternalDeclaration : Boolean , isFinal : Boolean ): Label <out DbField > {
788788 val t = useType(type)
789789 tw.writeFields(id, name, t.javaResult.id, parentId, id)
790790 tw.writeFieldsKotlinType(id, t.kotlinResult.id)
791791 tw.writeHasLocation(id, locId)
792792
793793 extractVisibility(errorElement, id, visibility)
794+ if (isFinal) {
795+ addModifiers(id, " final" )
796+ }
794797
795798 if (! isExternalDeclaration) {
796799 val fieldDeclarationId = tw.getFreshIdLabel<DbFielddecl >()
@@ -2949,12 +2952,12 @@ open class KotlinFileExtractor(
29492952
29502953 // only one of the following can be non-null:
29512954 if (dispatchReceiver != null ) {
2952- extractField(dispatchFieldId!! , " <dispatchReceiver>" , receiverType!! , classId, locId, DescriptorVisibilities .PRIVATE , callableReferenceExpr, false )
2955+ extractField(dispatchFieldId!! , " <dispatchReceiver>" , receiverType!! , classId, locId, DescriptorVisibilities .PRIVATE , callableReferenceExpr, isExternalDeclaration = false , isFinal = true )
29532956 extractParameterToFieldAssignmentInConstructor(" <dispatchReceiver>" , dispatchReceiver.type, dispatchFieldId, 0 , firstAssignmentStmtIdx)
29542957 }
29552958
29562959 if (extensionReceiver != null ) {
2957- extractField(extensionFieldId!! , " <extensionReceiver>" , receiverType!! , classId, locId, DescriptorVisibilities .PRIVATE , callableReferenceExpr, false )
2960+ extractField(extensionFieldId!! , " <extensionReceiver>" , receiverType!! , classId, locId, DescriptorVisibilities .PRIVATE , callableReferenceExpr, isExternalDeclaration = false , isFinal = true )
29582961 extractParameterToFieldAssignmentInConstructor( " <extensionReceiver>" , extensionReceiver.type, extensionFieldId, 0 + extensionParameterIndex, firstAssignmentStmtIdx + extensionParameterIndex)
29592962 }
29602963 }
@@ -4005,7 +4008,7 @@ open class KotlinFileExtractor(
40054008
40064009 // add field
40074010 val fieldId = tw.getFreshIdLabel<DbField >()
4008- extractField(fieldId, " <fn>" , functionType, classId, locId, DescriptorVisibilities .PRIVATE , e, false )
4011+ extractField(fieldId, " <fn>" , functionType, classId, locId, DescriptorVisibilities .PRIVATE , e, isExternalDeclaration = false , isFinal = true )
40094012
40104013 // adjust constructor
40114014 helper.extractParameterToFieldAssignmentInConstructor(" <fn>" , functionType, fieldId, 0 , 1 )
0 commit comments