FIR: support tailrec & external modifiers
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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 ")
|
||||
|
||||
@@ -17,6 +17,10 @@ interface FirNamedFunction : @VisitedSupertype FirFunction, FirCallableMember {
|
||||
|
||||
val isInline: Boolean
|
||||
|
||||
val isTailRec: Boolean
|
||||
|
||||
val isExternal: Boolean
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitNamedFunction(this, data)
|
||||
|
||||
|
||||
+2
@@ -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?
|
||||
|
||||
Reference in New Issue
Block a user