elementRenderingUtils: override visitor for KtTypeReference, KtParameterList, KtParameter

This commit is contained in:
Dmitry Gridin
2019-08-07 16:57:24 +03:00
parent c17e19b004
commit 755f7e8739
2 changed files with 23 additions and 8 deletions
@@ -27,8 +27,8 @@ import org.jetbrains.kotlin.idea.core.toDescriptor
import org.jetbrains.kotlin.idea.core.util.DescriptorMemberChooserObject
import org.jetbrains.kotlin.idea.inspections.findExistingEditor
import org.jetbrains.kotlin.idea.quickfix.KotlinIntentionActionsFactory
import org.jetbrains.kotlin.idea.refactoring.getExpressionShortText
import org.jetbrains.kotlin.idea.refactoring.introduce.showErrorHint
import org.jetbrains.kotlin.idea.refactoring.renderTrimmed
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
import org.jetbrains.kotlin.idea.util.liftToExpected
import org.jetbrains.kotlin.idea.util.module
@@ -176,9 +176,11 @@ private tailrec fun findClasses(elements: List<KtNamedDeclaration>, module: Modu
private fun showUnknownTypesDialog(project: Project, declarationsWithNonExistentClasses: List<KtNamedDeclaration>): Boolean =
declarationsWithNonExistentClasses.isEmpty() || showOkNoDialog(
"Unknown types",
declarationsWithNonExistentClasses.joinToString(prefix = "These declarations cannot be transformed:\n", separator = "\n") {
it.renderTrimmed()
},
declarationsWithNonExistentClasses.joinToString(
prefix = "These declarations cannot be transformed:\n",
separator = "\n",
transform = ::getExpressionShortText
),
project
)
@@ -187,7 +189,7 @@ private fun showUnknownTypesError(element: KtNamedDeclaration) {
showErrorHint(
element.project,
editor,
"You cannot create the expect declaration from:\n${element.renderTrimmed()}",
"You cannot create the expect declaration from:\n${getExpressionShortText(element)}",
"Unknown types"
)
}
@@ -59,6 +59,15 @@ fun KtElement.renderTrimmed(): String {
builder.append(')')
}
override fun visitParameterList(list: KtParameterList) {
list.parameters.join(prefix = "(", postfix = ")")
}
override fun visitParameter(parameter: KtParameter) {
builder.append("${parameter.name}: ")
parameter.typeReference?.accept(this)
}
override fun visitLabeledExpression(expression: KtLabeledExpression) {
expression.baseExpression?.accept(this)
}
@@ -116,6 +125,10 @@ fun KtElement.renderTrimmed(): String {
expression.selectorExpression?.accept(this)
}
override fun visitTypeReference(typeReference: KtTypeReference) {
builder.append(typeReference.text)
}
override fun visitThisExpression(expression: KtThisExpression) {
builder.append("this")
expression.getLabelName()?.let { builder.append("@$it") }
@@ -233,7 +246,7 @@ fun KtElement.renderTrimmed(): String {
it.accept(this)
}
function.name?.let { builder.append(" $it") }
function.valueParameters.asSequence().mapNotNull { it.typeReference }.joinTo(builder, prefix = "(", postfix = ")")
function.valueParameterList?.accept(this)
function.equalsToken?.let { builder.append(" = ") }
function.bodyExpression?.accept(this)
}
@@ -246,12 +259,12 @@ fun KtElement.renderTrimmed(): String {
}
override fun visitPrimaryConstructor(constructor: KtPrimaryConstructor) {
constructor.valueParameters.asSequence().mapNotNull { it.typeReference }.joinTo(builder, prefix = "(", postfix = ")")
constructor.valueParameterList?.accept(this)
}
override fun visitSecondaryConstructor(constructor: KtSecondaryConstructor) {
builder.append("constructor")
constructor.valueParameters.asSequence().mapNotNull { it.typeReference }.joinTo(builder, prefix = "(", postfix = ")")
constructor.valueParameterList?.accept(this)
constructor.bodyExpression?.accept(this)
}