@@ -778,19 +778,22 @@ open class KotlinFileExtractor(
778
778
with (" field" , f) {
779
779
DeclarationStackAdjuster (f).use {
780
780
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 )
782
782
}
783
783
}
784
784
}
785
785
786
786
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 > {
788
788
val t = useType(type)
789
789
tw.writeFields(id, name, t.javaResult.id, parentId, id)
790
790
tw.writeFieldsKotlinType(id, t.kotlinResult.id)
791
791
tw.writeHasLocation(id, locId)
792
792
793
793
extractVisibility(errorElement, id, visibility)
794
+ if (isFinal) {
795
+ addModifiers(id, " final" )
796
+ }
794
797
795
798
if (! isExternalDeclaration) {
796
799
val fieldDeclarationId = tw.getFreshIdLabel<DbFielddecl >()
@@ -2949,12 +2952,12 @@ open class KotlinFileExtractor(
2949
2952
2950
2953
// only one of the following can be non-null:
2951
2954
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 )
2953
2956
extractParameterToFieldAssignmentInConstructor(" <dispatchReceiver>" , dispatchReceiver.type, dispatchFieldId, 0 , firstAssignmentStmtIdx)
2954
2957
}
2955
2958
2956
2959
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 )
2958
2961
extractParameterToFieldAssignmentInConstructor( " <extensionReceiver>" , extensionReceiver.type, extensionFieldId, 0 + extensionParameterIndex, firstAssignmentStmtIdx + extensionParameterIndex)
2959
2962
}
2960
2963
}
@@ -4005,7 +4008,7 @@ open class KotlinFileExtractor(
4005
4008
4006
4009
// add field
4007
4010
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 )
4009
4012
4010
4013
// adjust constructor
4011
4014
helper.extractParameterToFieldAssignmentInConstructor(" <fn>" , functionType, fieldId, 0 , 1 )
0 commit comments