diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 176d33f94c3..e3001c1ec0e 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -288,6 +288,8 @@ class RawFirBuilder(val session: FirSession) { function.hasModifier(KtTokens.OPERATOR_KEYWORD), function.hasModifier(KtTokens.INFIX_KEYWORD), function.hasModifier(KtTokens.INLINE_KEYWORD), + function.hasModifier(KtTokens.TAILREC_KEYWORD), + function.hasModifier(KtTokens.EXTERNAL_KEYWORD), function.receiverTypeReference.convertSafe(), function.typeReference.toFirOrImplicitType(), function.bodyExpression.toFirBody() diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt index 2061df2874f..18abb861364 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/FirRenderer.kt @@ -119,6 +119,12 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() { if (memberDeclaration.isInline) { print("inline ") } + if (memberDeclaration.isTailRec) { + print("tailrec ") + } + if (memberDeclaration.isExternal) { + print("external ") + } } else if (memberDeclaration is FirProperty) { if (memberDeclaration.isConst) { print("const ") diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt index 3be3528ab14..eaab5cf22a8 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/FirNamedFunction.kt @@ -17,6 +17,10 @@ interface FirNamedFunction : @VisitedSupertype FirFunction, FirCallableMember { val isInline: Boolean + val isTailRec: Boolean + + val isExternal: Boolean + override fun accept(visitor: FirVisitor, data: D): R = visitor.visitNamedFunction(this, data) diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt index 300782b64aa..301da3cba95 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirMemberFunctionImpl.kt @@ -25,6 +25,8 @@ class FirMemberFunctionImpl( override val isOperator: Boolean, override val isInfix: Boolean, override val isInline: Boolean, + override val isTailRec: Boolean, + override val isExternal: Boolean, receiverType: FirType?, returnType: FirType, override val body: FirBody?