FIR: support inline classes + render class attributes nicer
This commit is contained in:
@@ -143,7 +143,20 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
if (memberDeclaration is FirCallableMember && memberDeclaration.isOverride) {
|
||||
print("override ")
|
||||
}
|
||||
if (memberDeclaration is FirNamedFunction) {
|
||||
if (memberDeclaration is FirClass) {
|
||||
if (memberDeclaration.isInner) {
|
||||
print("inner ")
|
||||
}
|
||||
if (memberDeclaration.isCompanion) {
|
||||
print("companion ")
|
||||
}
|
||||
if (memberDeclaration.isData) {
|
||||
print("data ")
|
||||
}
|
||||
if (memberDeclaration.isInline) {
|
||||
print("inline ")
|
||||
}
|
||||
} else if (memberDeclaration is FirNamedFunction) {
|
||||
if (memberDeclaration.isOperator) {
|
||||
print("operator ")
|
||||
}
|
||||
@@ -194,12 +207,6 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
|
||||
override fun visitClass(klass: FirClass) {
|
||||
visitMemberDeclaration(klass)
|
||||
val attributes = listOfNotNull(
|
||||
"inner".takeIf { klass.isInner },
|
||||
"companion".takeIf { klass.isCompanion },
|
||||
"data".takeIf { klass.isData }
|
||||
)
|
||||
print(attributes.joinToString(prefix = "(", postfix = ")"))
|
||||
if (klass.superTypes.isNotEmpty()) {
|
||||
print(" : ")
|
||||
klass.superTypes.renderSeparated()
|
||||
|
||||
@@ -27,6 +27,8 @@ interface FirClass : FirDeclarationContainer, FirMemberDeclaration, FirSymbolOwn
|
||||
|
||||
val isData: Boolean
|
||||
|
||||
val isInline: Boolean
|
||||
|
||||
override val symbol: FirClassSymbol
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
|
||||
@@ -30,7 +30,8 @@ open class FirClassImpl(
|
||||
final override val classKind: ClassKind,
|
||||
final override val isInner: Boolean,
|
||||
final override val isCompanion: Boolean,
|
||||
final override val isData: Boolean
|
||||
final override val isData: Boolean,
|
||||
override val isInline: Boolean
|
||||
) : FirAbstractMemberDeclaration(session, psi, name, visibility, modality, platformStatus), FirClass {
|
||||
|
||||
init {
|
||||
|
||||
+2
-1
@@ -32,7 +32,8 @@ class FirEnumEntryImpl(
|
||||
classKind = ClassKind.ENUM_ENTRY,
|
||||
isInner = false,
|
||||
isCompanion = false,
|
||||
isData = false
|
||||
isData = false,
|
||||
isInline = false
|
||||
), FirEnumEntry {
|
||||
override val arguments = mutableListOf<FirExpression>()
|
||||
}
|
||||
Reference in New Issue
Block a user