FIR general refactoring: get rid of ConeSymbols

This commit is contained in:
Mikhail Glukhikh
2019-09-13 10:06:37 +03:00
parent c1c46daa01
commit 20c45a8382
87 changed files with 384 additions and 419 deletions
@@ -20,13 +20,8 @@ import org.jetbrains.kotlin.fir.resolve.FirSymbolProvider
import org.jetbrains.kotlin.fir.resolve.directExpansionType
import org.jetbrains.kotlin.fir.resolve.transformers.firSafeNullable
import org.jetbrains.kotlin.fir.resolve.transformers.firUnsafe
import org.jetbrains.kotlin.fir.symbols.ConeCallableSymbol
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeSymbol
import org.jetbrains.kotlin.fir.symbols.ConeSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.FirResolvedTypeRefImpl
import org.jetbrains.kotlin.fir.visitors.FirVisitor
@@ -372,7 +367,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
}
override fun visitResolvedCallableReference(resolvedCallableReference: FirResolvedCallableReference, data: StringBuilder) {
val symbol = resolvedCallableReference.coneSymbol
val symbol = resolvedCallableReference.resolvedSymbol
data.append(renderSymbol(symbol))
}
@@ -408,17 +403,17 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
override fun visitFunctionCall(functionCall: FirFunctionCall, data: StringBuilder) {
when (val callee = functionCall.calleeReference) {
is FirResolvedCallableReference -> {
if (callee.coneSymbol is FirConstructorSymbol) {
data.append(renderSymbol(callee.coneSymbol))
if (callee.resolvedSymbol is FirConstructorSymbol) {
data.append(renderSymbol(callee.resolvedSymbol))
visitArguments(functionCall.arguments, data)
} else {
data.append("fun ")
val firFunction = callee.coneSymbol.firSafeNullable<FirAbstractMemberDeclaration>()
val firFunction = callee.resolvedSymbol.firSafeNullable<FirAbstractMemberDeclaration>()
firFunction?.let { renderListInTriangles(it.typeParameters, data, true) }
data.append(renderSymbol(callee.coneSymbol))
data.append(renderSymbol(callee.resolvedSymbol))
renderListInTriangles(functionCall.typeArguments, data)
visitValueParameters(callee.coneSymbol.firUnsafe<FirFunction<*>>().valueParameters, data)
visitValueParameters(callee.resolvedSymbol.firUnsafe<FirFunction<*>>().valueParameters, data)
data.append(": ")
functionCall.typeRef.accept(this, data)
}
@@ -496,15 +491,15 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
}
}
private fun renderSymbol(symbol: ConeSymbol?): String {
private fun renderSymbol(symbol: AbstractFirBasedSymbol<*>?): String {
val data = StringBuilder()
var id = when (symbol) {
is ConeCallableSymbol -> {
is FirCallableSymbol<*> -> {
val callableId = symbol.callableId
val idWithPackage = callableId.toString().replace("." + callableId.callableName.asString(), "")
removeCurrentFilePackage(idWithPackage)
}
is ConeClassLikeSymbol -> symbol.classId.getWithoutCurrentPackage()
is FirClassLikeSymbol<*> -> symbol.classId.getWithoutCurrentPackage()
else -> ""
}