[FIR] Add fir node for binary && and ||

This commit is contained in:
Dmitriy Novozhilov
2019-08-14 15:08:46 +03:00
parent 908b6ade1d
commit ba7a137e74
14 changed files with 201 additions and 72 deletions
@@ -17,12 +17,14 @@ import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
import org.jetbrains.kotlin.fir.expressions.FirWhenSubjectExpression
import org.jetbrains.kotlin.fir.expressions.impl.FirUncheckedNotNullCastImpl
import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
import org.jetbrains.kotlin.fir.resolve.*
import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.directExpansionType
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.withNullability
import org.jetbrains.kotlin.fir.symbols.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.FirTypePlaceholderProjection
@@ -1237,11 +1239,18 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
is FirTypeOperatorCall -> generate(expression)
is FirUncheckedNotNullCastImpl -> generate(expression)
is FirOperatorCall -> generate(expression)
is FirBinaryLogicExpression -> generate(expression)
else -> inlineUnsupported(expression)
}
}
}
private fun FlowContent.generate(binaryLogicExpression: FirBinaryLogicExpression) {
generate(binaryLogicExpression.leftOperand)
+" ${binaryLogicExpression.kind.token} "
generate(binaryLogicExpression.rightOperand)
}
private fun FlowContent.generate(qualifiedAccessExpression: FirQualifiedAccessExpression) {
generateReceiver(qualifiedAccessExpression)
generate(qualifiedAccessExpression.calleeReference)