FIR: record and serialize the modifier "fun" for functional interface

This commit is contained in:
Jinseong Jeon
2020-06-05 15:00:03 -07:00
committed by Mikhail Glukhikh
parent 6a2fed33d3
commit 0d2552b0b6
24 changed files with 33 additions and 196 deletions
@@ -382,6 +382,7 @@ class DeclarationsConverter(
isCompanion = modifiers.isCompanion() && classKind == ClassKind.OBJECT
isData = modifiers.isDataClass()
isInline = modifiers.isInlineClass()
isFun = modifiers.isFunctionalInterface()
}
buildRegularClass {
@@ -78,6 +78,10 @@ class Modifier(
return classModifiers.contains(ClassModifier.COMPANION)
}
fun isFunctionalInterface(): Boolean {
return classModifiers.contains(ClassModifier.FUN)
}
fun hasOverride(): Boolean {
return memberModifiers.contains(MemberModifier.OVERRIDE)
}
@@ -11,7 +11,8 @@ enum class ClassModifier {
DATA,
INLINE,
INNER,
COMPANION
COMPANION,
FUN
}
enum class MemberModifier {
@@ -670,6 +670,7 @@ class RawFirBuilder(
isCompanion = (classOrObject as? KtObjectDeclaration)?.isCompanion() == true
isData = classOrObject.hasModifier(DATA_KEYWORD)
isInline = classOrObject.hasModifier(INLINE_KEYWORD)
isFun = classOrObject.hasModifier(FUN_KEYWORD)
}
withCapturedTypeParameters {
if (!status.isInner) context.capturedTypeParameters = context.capturedTypeParameters.clear()