@@ -97,11 +97,11 @@ class LightTreeRawFirDeclarationBuilder(
97
97
packageDirective = convertPackageDirective(child).also { context.packageFqName = it.packageFqName }
98
98
}
99
99
IMPORT_LIST -> importList + = convertImportDirectives(child)
100
- CLASS -> firDeclarationList + = convertClass(child)
100
+ CLASS -> firDeclarationList + = convertClass(child, headerCompilationMode )
101
101
FUN -> firDeclarationList + = convertFunctionDeclaration(child) as FirDeclaration
102
102
KtNodeTypes .PROPERTY -> firDeclarationList + = convertPropertyDeclaration(child)
103
103
TYPEALIAS -> firDeclarationList + = convertTypeAlias(child)
104
- OBJECT_DECLARATION -> firDeclarationList + = convertClass(child)
104
+ OBJECT_DECLARATION -> firDeclarationList + = convertClass(child, headerCompilationMode )
105
105
DESTRUCTURING_DECLARATION -> {
106
106
val initializer = buildFirDestructuringDeclarationInitializer(child)
107
107
firDeclarationList + = buildErrorNonLocalDestructuringDeclaration(child.toFirSourceElement(), initializer)
@@ -144,7 +144,7 @@ class LightTreeRawFirDeclarationBuilder(
144
144
val firStatements = block.forEachChildrenReturnList { node, container ->
145
145
if (! generateHeaders || container.isEmpty()) { // Take only the first statement which could be a contract for header generation.
146
146
when (node.tokenType) {
147
- CLASS , OBJECT_DECLARATION -> container + = convertClass(node) as FirStatement
147
+ CLASS , OBJECT_DECLARATION -> container + = convertClass(node, false )
148
148
FUN -> container + = convertFunctionDeclaration(node)
149
149
KtNodeTypes .PROPERTY -> container + = convertPropertyDeclaration(node) as FirStatement
150
150
DESTRUCTURING_DECLARATION -> container + =
@@ -461,7 +461,7 @@ class LightTreeRawFirDeclarationBuilder(
461
461
/* *
462
462
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseClassOrObject
463
463
*/
464
- private fun convertClass (classNode : LighterASTNode ): FirDeclaration {
464
+ private fun convertClass (classNode : LighterASTNode , generateHeaders : Boolean ): FirDeclaration {
465
465
var modifiers: ModifierList ? = null
466
466
var classKind: ClassKind = ClassKind .CLASS
467
467
var identifier: String? = null
@@ -471,6 +471,7 @@ class LightTreeRawFirDeclarationBuilder(
471
471
var classBody: LighterASTNode ? = null
472
472
var superTypeList: LighterASTNode ? = null
473
473
var typeParameterList: LighterASTNode ? = null
474
+ var headerMode = generateHeaders
474
475
classNode.forEachChildren {
475
476
when (it.tokenType) {
476
477
MODIFIER_LIST -> modifiers = convertModifierList(it, isInClass = true )
@@ -479,6 +480,9 @@ class LightTreeRawFirDeclarationBuilder(
479
480
}
480
481
481
482
val calculatedModifiers = modifiers ? : ModifierList ()
483
+ if (calculatedModifiers.isInlineClass()) {
484
+ headerMode = false
485
+ }
482
486
val className = identifier.nameAsSafeName(if (calculatedModifiers.isCompanion()) " Companion" else " " )
483
487
val isLocalWithinParent = classNode.getParent()?.elementType != CLASS_BODY && isClassLocal(classNode) { getParent() }
484
488
val classIsExpect = calculatedModifiers.hasExpect() || context.containerIsExpect
@@ -637,7 +641,7 @@ class LightTreeRawFirDeclarationBuilder(
637
641
638
642
// parse declarations
639
643
classBody?.let {
640
- addDeclarations(convertClassBody(it, classWrapper))
644
+ addDeclarations(convertClassBody(it, classWrapper, headerMode ))
641
645
}
642
646
643
647
// parse data class
@@ -923,10 +927,14 @@ class LightTreeRawFirDeclarationBuilder(
923
927
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseClassBody
924
928
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseEnumClassBody
925
929
*/
926
- private fun convertClassBody (classBody : LighterASTNode , classWrapper : ClassWrapper ? ): List <FirDeclaration > {
930
+ private fun convertClassBody (
931
+ classBody : LighterASTNode ,
932
+ classWrapper : ClassWrapper ? ,
933
+ generateHeaders : Boolean = false
934
+ ): List <FirDeclaration > {
927
935
val modifierLists = mutableListOf<LighterASTNode >()
928
936
val firDeclarations = classBody.forEachChildrenReturnList { node, container ->
929
- convertDeclarationFromClassBody(node, container, classWrapper, modifierLists)
937
+ convertDeclarationFromClassBody(node, container, classWrapper, modifierLists, generateHeaders )
930
938
}
931
939
932
940
convertDanglingModifierListsInClassBody(modifierLists, firDeclarations)
@@ -938,14 +946,15 @@ class LightTreeRawFirDeclarationBuilder(
938
946
container : MutableList <FirDeclaration >,
939
947
classWrapper : ClassWrapper ? ,
940
948
modifierLists : MutableList <LighterASTNode >,
949
+ generateHeaders : Boolean = false
941
950
) {
942
951
when (node.tokenType) {
943
952
ENUM_ENTRY -> container + = convertEnumEntry(node, classWrapper!! )
944
- CLASS -> container + = convertClass(node)
953
+ CLASS -> container + = convertClass(node, generateHeaders )
945
954
FUN -> container + = convertFunctionDeclaration(node) as FirDeclaration
946
955
KtNodeTypes .PROPERTY -> container + = convertPropertyDeclaration(node, classWrapper)
947
956
TYPEALIAS -> container + = convertTypeAlias(node)
948
- OBJECT_DECLARATION -> container + = convertClass(node)
957
+ OBJECT_DECLARATION -> container + = convertClass(node, generateHeaders )
949
958
CLASS_INITIALIZER -> container + = convertAnonymousInitializer(node, classWrapper!! .classBuilder.ownerRegularOrAnonymousObjectSymbol) // anonymousInitializer
950
959
SECONDARY_CONSTRUCTOR -> container + = convertSecondaryConstructor(node, classWrapper!! )
951
960
MODIFIER_LIST -> modifierLists + = node
0 commit comments