elementRenderingUtils: override visitor for KtTypeReference, KtParameterList, KtParameter
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user