[FIR IDE] Add getDispatchReceiverType function and use

This function is under a heavy deprecation and should not be used,
since it will most probably be removed in the future
This commit is contained in:
Roman Golyshev
2021-10-26 16:07:53 +03:00
committed by TeamCityServer
parent 3091269035
commit 4e1e1570df
4 changed files with 58 additions and 7 deletions
@@ -37,7 +37,7 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator
val actual = executeOnPooledThreadInReadAction {
analyseForTest(expression) {
resolveCall(expression)?.stringRepresentation()
resolveCall(expression)?.let { stringRepresentation(it) }
}
} ?: "null"
testServices.assertions.assertEqualsToTestDataFileSibling(actual)
@@ -62,8 +62,8 @@ abstract class AbstractResolveCallTest(configurator: FrontendApiTestConfigurator
}
private fun KtCall.stringRepresentation(): String {
fun KtType.render() = substitutor.substituteOrSelf(this).asStringForDebugging().replace('/', '.')
private fun KtAnalysisSession.stringRepresentation(call: KtCall): String {
fun KtType.render() = call.substitutor.substituteOrSelf(this).asStringForDebugging().replace('/', '.')
fun Any.stringValue(): String = when (this) {
is KtFunctionLikeSymbol -> buildString {
append(
@@ -81,7 +81,9 @@ private fun KtCall.stringRepresentation(): String {
append("<extension receiver>: ${receiver.type.render()}")
if (valueParameters.isNotEmpty()) append(", ")
}
(this@stringValue as? KtPossibleMemberSymbol)?.dispatchType?.let { dispatchReceiverType ->
@Suppress("DEPRECATION")
(this@stringValue as? KtPossibleMemberSymbol)?.getDispatchReceiverType()?.let { dispatchReceiverType ->
append("<dispatch receiver>: ${dispatchReceiverType.render()}")
if (valueParameters.isNotEmpty()) append(", ")
}
@@ -108,7 +110,7 @@ private fun KtCall.stringRepresentation(): String {
else -> error("unexpected parameter type ${this::class}")
}
val callInfoClass = this::class
val callInfoClass = call::class
return buildString {
append(callInfoClass.simpleName!!)
append(":\n")
@@ -118,7 +120,7 @@ private fun KtCall.stringRepresentation(): String {
.filter { it.name != "token" }
.joinTo(this, separator = "\n") { parameter ->
val name = parameter.name!!.removePrefix("_")
val value = propertyByName[name]!!.javaGetter!!(this@stringRepresentation)?.stringValue()
val value = propertyByName[name]!!.javaGetter!!(call)?.stringValue()
"$name = $value"
}
}