@@ -96,11 +96,11 @@ class LightTreeRawFirDeclarationBuilder(
96
96
packageDirective = convertPackageDirective(child).also { context.packageFqName = it.packageFqName }
97
97
}
98
98
IMPORT_LIST -> importList + = convertImportDirectives(child)
99
- CLASS -> firDeclarationList + = convertClass(child)
99
+ CLASS -> firDeclarationList + = convertClass(child, headerCompilationMode )
100
100
FUN -> firDeclarationList + = convertFunctionDeclaration(child, headerCompilationMode) as FirDeclaration
101
101
KtNodeTypes .PROPERTY -> firDeclarationList + = convertPropertyDeclaration(child)
102
102
TYPEALIAS -> firDeclarationList + = convertTypeAlias(child)
103
- OBJECT_DECLARATION -> firDeclarationList + = convertClass(child)
103
+ OBJECT_DECLARATION -> firDeclarationList + = convertClass(child, headerCompilationMode )
104
104
DESTRUCTURING_DECLARATION -> {
105
105
val initializer = buildFirDestructuringDeclarationInitializer(child)
106
106
firDeclarationList + = buildErrorNonLocalDestructuringDeclaration(child.toFirSourceElement(), initializer)
@@ -139,11 +139,15 @@ class LightTreeRawFirDeclarationBuilder(
139
139
return convertBlockExpressionWithoutBuilding(block, generateHeaders = generateHeaders).build()
140
140
}
141
141
142
- fun convertBlockExpressionWithoutBuilding (block : LighterASTNode , kind : KtFakeSourceElementKind ? = null, generateHeaders : Boolean = false): FirBlockBuilder {
142
+ fun convertBlockExpressionWithoutBuilding (
143
+ block : LighterASTNode ,
144
+ kind : KtFakeSourceElementKind ? = null,
145
+ generateHeaders : Boolean = false
146
+ ): FirBlockBuilder {
143
147
val firStatements = block.forEachChildrenReturnList { node, container ->
144
148
if (! generateHeaders || container.isEmpty()) { // Take only the first statement which could be a contract for header generation.
145
149
when (node.tokenType) {
146
- CLASS , OBJECT_DECLARATION -> container + = convertClass(node) as FirStatement
150
+ CLASS , OBJECT_DECLARATION -> container + = convertClass(node, generateHeaders ) as FirStatement
147
151
FUN -> container + = convertFunctionDeclaration(node)
148
152
KtNodeTypes .PROPERTY -> container + = convertPropertyDeclaration(node) as FirStatement
149
153
DESTRUCTURING_DECLARATION -> container + =
@@ -460,7 +464,7 @@ class LightTreeRawFirDeclarationBuilder(
460
464
/* *
461
465
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseClassOrObject
462
466
*/
463
- private fun convertClass (classNode : LighterASTNode ): FirDeclaration {
467
+ private fun convertClass (classNode : LighterASTNode , generateHeaders : Boolean ): FirDeclaration {
464
468
var modifiers: ModifierList ? = null
465
469
var classKind: ClassKind = ClassKind .CLASS
466
470
var identifier: String? = null
@@ -636,7 +640,7 @@ class LightTreeRawFirDeclarationBuilder(
636
640
637
641
// parse declarations
638
642
classBody?.let {
639
- addDeclarations(convertClassBody(it, classWrapper))
643
+ addDeclarations(convertClassBody(it, classWrapper, generateHeaders ))
640
644
}
641
645
642
646
// parse data class
@@ -922,10 +926,14 @@ class LightTreeRawFirDeclarationBuilder(
922
926
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseClassBody
923
927
* @see org.jetbrains.kotlin.parsing.KotlinParsing.parseEnumClassBody
924
928
*/
925
- private fun convertClassBody (classBody : LighterASTNode , classWrapper : ClassWrapper ? ): List <FirDeclaration > {
929
+ private fun convertClassBody (
930
+ classBody : LighterASTNode ,
931
+ classWrapper : ClassWrapper ? ,
932
+ generateHeaders : Boolean = false
933
+ ): List <FirDeclaration > {
926
934
val modifierLists = mutableListOf<LighterASTNode >()
927
935
val firDeclarations = classBody.forEachChildrenReturnList { node, container ->
928
- convertDeclarationFromClassBody(node, container, classWrapper, modifierLists)
936
+ convertDeclarationFromClassBody(node, container, classWrapper, modifierLists, generateHeaders )
929
937
}
930
938
931
939
convertDanglingModifierListsInClassBody(modifierLists, firDeclarations)
@@ -937,14 +945,15 @@ class LightTreeRawFirDeclarationBuilder(
937
945
container : MutableList <FirDeclaration >,
938
946
classWrapper : ClassWrapper ? ,
939
947
modifierLists : MutableList <LighterASTNode >,
948
+ generateHeaders : Boolean = false
940
949
) {
941
950
when (node.tokenType) {
942
951
ENUM_ENTRY -> container + = convertEnumEntry(node, classWrapper!! )
943
- CLASS -> container + = convertClass(node)
944
- FUN -> container + = convertFunctionDeclaration(node) as FirDeclaration
952
+ CLASS -> container + = convertClass(node, generateHeaders )
953
+ FUN -> container + = convertFunctionDeclaration(node, generateHeaders ) as FirDeclaration
945
954
KtNodeTypes .PROPERTY -> container + = convertPropertyDeclaration(node, classWrapper)
946
955
TYPEALIAS -> container + = convertTypeAlias(node)
947
- OBJECT_DECLARATION -> container + = convertClass(node)
956
+ OBJECT_DECLARATION -> container + = convertClass(node, generateHeaders )
948
957
CLASS_INITIALIZER -> container + = convertAnonymousInitializer(node, classWrapper!! .classBuilder.ownerRegularOrAnonymousObjectSymbol) // anonymousInitializer
949
958
SECONDARY_CONSTRUCTOR -> container + = convertSecondaryConstructor(node, classWrapper!! )
950
959
MODIFIER_LIST -> modifierLists + = node
0 commit comments