[FIR] Complement fir rendering with newly created nodes
This commit is contained in:
@@ -1323,11 +1323,10 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
+")"
|
||||
}
|
||||
|
||||
private fun FlowContent.generateBinary(expression: FirOperatorCall) {
|
||||
val (first, second) = expression.arguments
|
||||
private fun FlowContent.generateBinary(first: FirExpression, second: FirExpression, operation: FirOperation) {
|
||||
generate(first)
|
||||
ws
|
||||
unresolved { +expression.operation.operator }
|
||||
unresolved { +operation.operator }
|
||||
ws
|
||||
generate(second)
|
||||
}
|
||||
@@ -1341,7 +1340,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
private fun FlowContent.generate(expression: FirOperatorCall) {
|
||||
when (expression.arguments.size) {
|
||||
1 -> generateUnary(expression)
|
||||
2 -> generateBinary(expression)
|
||||
2 -> generateBinary(expression.arguments[0], expression.arguments[1], expression.operation)
|
||||
else -> inlineUnsupported(expression)
|
||||
}
|
||||
}
|
||||
@@ -1354,6 +1353,10 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
generate(typeOperatorCall.conversionTypeRef)
|
||||
}
|
||||
|
||||
private fun FlowContent.generate(equalityOperatorCall: FirEqualityOperatorCall) {
|
||||
generateBinary(equalityOperatorCall.arguments[0], equalityOperatorCall.arguments[1], equalityOperatorCall.operation)
|
||||
}
|
||||
|
||||
private fun FlowContent.generate(checkNotNullCall: FirCheckNotNullCall) {
|
||||
generate(checkNotNullCall.argument)
|
||||
+"!!"
|
||||
@@ -1567,6 +1570,8 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
||||
}
|
||||
is FirTypeOperatorCall -> generate(expression)
|
||||
is FirOperatorCall -> generate(expression)
|
||||
is FirAssignmentOperatorStatement -> generateBinary(expression.leftArgument, expression.rightArgument, expression.operation)
|
||||
is FirEqualityOperatorCall -> generate(expression)
|
||||
is FirBinaryLogicExpression -> generate(expression)
|
||||
is FirCheckNotNullCall -> generate(expression)
|
||||
is FirElvisExpression -> generate(expression)
|
||||
|
||||
@@ -1097,6 +1097,22 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
||||
print(")")
|
||||
}
|
||||
|
||||
override fun visitAssignmentOperatorStatement(assignmentOperatorStatement: FirAssignmentOperatorStatement) {
|
||||
assignmentOperatorStatement.annotations.renderAnnotations()
|
||||
print(assignmentOperatorStatement.operation.operator)
|
||||
print("(")
|
||||
assignmentOperatorStatement.leftArgument.accept(this@FirRenderer)
|
||||
print(", ")
|
||||
assignmentOperatorStatement.rightArgument.accept(this@FirRenderer)
|
||||
print(")")
|
||||
}
|
||||
|
||||
override fun visitEqualityOperatorCall(equalityOperatorCall: FirEqualityOperatorCall) {
|
||||
equalityOperatorCall.annotations.renderAnnotations()
|
||||
print(equalityOperatorCall.operation.operator)
|
||||
visitCall(equalityOperatorCall)
|
||||
}
|
||||
|
||||
override fun visitComponentCall(componentCall: FirComponentCall) {
|
||||
visitFunctionCall(componentCall)
|
||||
}
|
||||
|
||||
+8
@@ -406,6 +406,14 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
|
||||
//skip rendering for as/as?/is/!is
|
||||
}
|
||||
|
||||
override fun visitAssignmentOperatorStatement(assignmentOperatorStatement: FirAssignmentOperatorStatement, data: StringBuilder) {
|
||||
data.append("assignment operator statement ${assignmentOperatorStatement.operation}")
|
||||
}
|
||||
|
||||
override fun visitEqualityOperatorCall(equalityOperatorCall: FirEqualityOperatorCall, data: StringBuilder) {
|
||||
data.append("equality operator call ${equalityOperatorCall.operation}")
|
||||
}
|
||||
|
||||
override fun visitSafeCallExpression(safeCallExpression: FirSafeCallExpression, data: StringBuilder) {
|
||||
safeCallExpression.receiver.accept(this, data)
|
||||
data.append("?.{ ")
|
||||
|
||||
Reference in New Issue
Block a user