[K2/N] Read KDoc strings from LightTree nodes

^KT-56090

Merge-request: KT-MR-9613
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-05-17 08:12:39 +00:00
committed by Space Team
parent 39dfb9958b
commit 6a8981372b
3 changed files with 10 additions and 7 deletions
@@ -5,6 +5,8 @@
package org.jetbrains.kotlin.fir.serialization
import com.intellij.lang.LighterASTNode
import com.intellij.openapi.util.Ref
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.resolve.providers.firProvider
@@ -13,6 +15,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
import org.jetbrains.kotlin.fir.types.ConeErrorType
import org.jetbrains.kotlin.fir.types.ConeFlexibleType
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
import org.jetbrains.kotlin.library.metadata.KlibMetadataSerializerProtocol
import org.jetbrains.kotlin.metadata.ProtoBuf
@@ -96,10 +99,12 @@ class FirKLibSerializerExtension(
}
}
private fun FirDeclaration.findKDocString(): String? {
// TODO: KT-56090
return null
}
private fun FirDeclaration.findKDocString(): String? =
source?.let {
val kidsRef = Ref<Array<LighterASTNode?>>()
it.treeStructure.getChildren(it.lighterASTNode, kidsRef)
kidsRef.get().singleOrNull { it?.tokenType == KtTokens.DOC_COMMENT }?.toString()
}
@Suppress("Reformat")
private fun <
@@ -68,7 +68,7 @@ internal fun PhaseContext.firSerializer(
FirKLibSerializerExtension(
session, metadataVersion,
ConstValueProviderImpl(input.components),
allowErrorTypes = false, exportKDoc = false
allowErrorTypes = false, exportKDoc = shouldExportKDoc()
),
configuration.languageVersionSettings,
)
@@ -1,5 +1,3 @@
// KT-56090: [K2/N] Emit DocString klib extensions for ObjCExport
// MUTED_WHEN: K2
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.