@@ -74,7 +74,7 @@ open class KotlinFileExtractor(
7474 }
7575 }
7676
77- file.declarations.map { extractDeclaration(it, extractPrivateMembers = true ) }
77+ file.declarations.map { extractDeclaration(it, extractPrivateMembers = true , extractFunctionBodies = true ) }
7878 extractStaticInitializer(file, null )
7979 CommentExtractor (this , file, tw.fileId).extract()
8080 }
@@ -98,7 +98,7 @@ open class KotlinFileExtractor(
9898 else -> true
9999 }
100100
101- fun extractDeclaration (declaration : IrDeclaration , extractPrivateMembers : Boolean ) {
101+ fun extractDeclaration (declaration : IrDeclaration , extractPrivateMembers : Boolean , extractFunctionBodies : Boolean ) {
102102 with (" declaration" , declaration) {
103103 if (! shouldExtractDecl(declaration, extractPrivateMembers))
104104 return
@@ -107,13 +107,13 @@ open class KotlinFileExtractor(
107107 if (isExternalDeclaration(declaration)) {
108108 extractExternalClassLater(declaration)
109109 } else {
110- extractClassSource(declaration, extractDeclarations = true , extractStaticInitializer = true , extractPrivateMembers = extractPrivateMembers)
110+ extractClassSource(declaration, extractDeclarations = true , extractStaticInitializer = true , extractPrivateMembers = extractPrivateMembers, extractFunctionBodies = extractFunctionBodies )
111111 }
112112 }
113113 is IrFunction -> {
114114 val parentId = useDeclarationParent(declaration.parent, false )?.cast<DbReftype >()
115115 if (parentId != null ) {
116- extractFunction(declaration, parentId, true , null , listOf ())
116+ extractFunction(declaration, parentId, extractFunctionBodies , null , listOf ())
117117 }
118118 Unit
119119 }
@@ -130,7 +130,7 @@ open class KotlinFileExtractor(
130130 is IrEnumEntry -> {
131131 val parentId = useDeclarationParent(declaration.parent, false )?.cast<DbReftype >()
132132 if (parentId != null ) {
133- extractEnumEntry(declaration, parentId)
133+ extractEnumEntry(declaration, parentId, extractFunctionBodies )
134134 }
135135 Unit
136136 }
@@ -360,7 +360,7 @@ open class KotlinFileExtractor(
360360 }
361361
362362 private fun extractLocalTypeDeclStmt (c : IrClass , callable : Label <out DbCallable >, parent : Label <out DbStmtparent >, idx : Int ) {
363- val id = extractClassSource(c, extractDeclarations = true , extractStaticInitializer = true , extractPrivateMembers = true ).cast<DbClass >()
363+ val id = extractClassSource(c, extractDeclarations = true , extractStaticInitializer = true , extractPrivateMembers = true , extractFunctionBodies = true ).cast<DbClass >()
364364 extractLocalTypeDeclStmt(id, c, callable, parent, idx)
365365 }
366366
@@ -372,7 +372,7 @@ open class KotlinFileExtractor(
372372 tw.writeHasLocation(stmtId, locId)
373373 }
374374
375- fun extractClassSource (c : IrClass , extractDeclarations : Boolean , extractStaticInitializer : Boolean , extractPrivateMembers : Boolean ): Label <out DbClassorinterface > {
375+ fun extractClassSource (c : IrClass , extractDeclarations : Boolean , extractStaticInitializer : Boolean , extractPrivateMembers : Boolean , extractFunctionBodies : Boolean ): Label <out DbClassorinterface > {
376376 with (" class source" , c) {
377377 DeclarationStackAdjuster (c).use {
378378
@@ -410,7 +410,7 @@ open class KotlinFileExtractor(
410410
411411 c.typeParameters.mapIndexed { idx, param -> extractTypeParameter(param, idx) }
412412 if (extractDeclarations) {
413- c.declarations.map { extractDeclaration(it, extractPrivateMembers) }
413+ c.declarations.map { extractDeclaration(it, extractPrivateMembers = extractPrivateMembers, extractFunctionBodies = extractFunctionBodies ) }
414414 if (extractStaticInitializer)
415415 extractStaticInitializer(c, id)
416416 }
@@ -515,11 +515,11 @@ open class KotlinFileExtractor(
515515 return FieldResult (instanceId, instanceName)
516516 }
517517
518- private fun extractValueParameter (vp : IrValueParameter , parent : Label <out DbCallable >, idx : Int , typeSubstitution : TypeSubstitution ? , parentSourceDeclaration : Label <out DbCallable >, classTypeArgsIncludingOuterClasses : List <IrTypeArgument >? ): TypeResults {
518+ private fun extractValueParameter (vp : IrValueParameter , parent : Label <out DbCallable >, idx : Int , typeSubstitution : TypeSubstitution ? , parentSourceDeclaration : Label <out DbCallable >, classTypeArgsIncludingOuterClasses : List <IrTypeArgument >? , extractTypeAccess : Boolean ): TypeResults {
519519 with (" value parameter" , vp) {
520520 val location = getLocation(vp, classTypeArgsIncludingOuterClasses)
521521 val id = useValueParameter(vp, parent)
522- if (! isExternalDeclaration(vp) ) {
522+ if (extractTypeAccess ) {
523523 extractTypeAccessRecursive(vp.type, location, id, - 1 )
524524 }
525525 return extractValueParameter(id, vp.type, vp.name.asString(), location, parent, idx, typeSubstitution, useValueParameter(vp, parentSourceDeclaration), vp.isVararg)
@@ -706,13 +706,13 @@ open class KotlinFileExtractor(
706706 val extReceiver = f.extensionReceiverParameter
707707 val idxOffset = if (extReceiver != null ) 1 else 0
708708 val paramTypes = f.valueParameters.mapIndexed { i, vp ->
709- extractValueParameter(vp, id, i + idxOffset, typeSubstitution, sourceDeclaration, classTypeArgsIncludingOuterClasses)
709+ extractValueParameter(vp, id, i + idxOffset, typeSubstitution, sourceDeclaration, classTypeArgsIncludingOuterClasses, extractTypeAccess = extractBody )
710710 }
711711 val allParamTypes = if (extReceiver != null ) {
712712 val extendedType = useType(extReceiver.type)
713713 tw.writeKtExtensionFunctions(id.cast<DbMethod >(), extendedType.javaResult.id, extendedType.kotlinResult.id)
714714
715- val t = extractValueParameter(extReceiver, id, 0 , null , sourceDeclaration, classTypeArgsIncludingOuterClasses)
715+ val t = extractValueParameter(extReceiver, id, 0 , null , sourceDeclaration, classTypeArgsIncludingOuterClasses, extractTypeAccess = extractBody )
716716 listOf (t) + paramTypes
717717 } else {
718718 paramTypes
@@ -741,7 +741,7 @@ open class KotlinFileExtractor(
741741 tw.writeMethods(methodId, shortName.nameInDB, " ${shortName.nameInDB}$paramsSignature " , returnType.javaResult.id, parentId, sourceDeclaration.cast<DbMethod >())
742742 tw.writeMethodsKotlinType(methodId, returnType.kotlinResult.id)
743743
744- if (! isExternalDeclaration(f) ) {
744+ if (extractBody ) {
745745 extractTypeAccessRecursive(f.returnType, locId, id, - 1 )
746746 }
747747
@@ -874,7 +874,7 @@ open class KotlinFileExtractor(
874874 }
875875 }
876876
877- fun extractEnumEntry (ee : IrEnumEntry , parentId : Label <out DbReftype >) {
877+ fun extractEnumEntry (ee : IrEnumEntry , parentId : Label <out DbReftype >, extractTypeAccess : Boolean ) {
878878 with (" enum entry" , ee) {
879879 DeclarationStackAdjuster (ee).use {
880880 val id = useEnumEntry(ee)
@@ -884,7 +884,7 @@ open class KotlinFileExtractor(
884884 val locId = tw.getLocation(ee)
885885 tw.writeHasLocation(id, locId)
886886
887- if (! isExternalDeclaration(ee) ) {
887+ if (extractTypeAccess ) {
888888 val fieldDeclarationId = tw.getFreshIdLabel<DbFielddecl >()
889889 tw.writeFielddecls(fieldDeclarationId, parentId)
890890 tw.writeFieldDeclaredIn(id, fieldDeclarationId, 0 )
0 commit comments