New J2K: Fix JKClassSymbol's name printing in a case of nested class
This commit is contained in:
committed by
Ilya Kirillov
parent
599aa9435f
commit
b21c52aecd
@@ -554,7 +554,7 @@ class NewCodeBuilder {
|
||||
private fun renderType(type: JKType) {
|
||||
if (type is JKNoTypeImpl) return
|
||||
when (type) {
|
||||
is JKClassType -> type.classReference.fqName?.let { printer.printWithNoIndent(FqName(it).shortName().asString()) }
|
||||
is JKClassType -> printer.printWithNoIndent(type.classReference.displayName())
|
||||
is JKUnresolvedClassType -> printer.printWithNoIndent(type.name)
|
||||
is JKContextType -> return
|
||||
is JKStarProjectionType ->
|
||||
@@ -587,7 +587,7 @@ class NewCodeBuilder {
|
||||
if (javaNewExpression.isAnonymousClass()) {
|
||||
printer.printWithNoIndent("object : ")
|
||||
}
|
||||
printer.printWithNoIndent(javaNewExpression.classSymbol.name)
|
||||
printer.printWithNoIndent(javaNewExpression.classSymbol.displayName())
|
||||
javaNewExpression.typeArgumentList.accept(this)
|
||||
if (javaNewExpression.constructorIsPresent()) {
|
||||
printer.par(ROUND) {
|
||||
@@ -753,7 +753,7 @@ class NewCodeBuilder {
|
||||
|
||||
override fun visitAnnotation(annotation: JKAnnotation) {
|
||||
printer.printWithNoIndent("@")
|
||||
printer.printWithNoIndent(annotation.classSymbol.name)
|
||||
printer.printWithNoIndent(annotation.classSymbol.displayName())
|
||||
if (annotation.arguments.expressions.isNotEmpty()) {
|
||||
printer.par {
|
||||
annotation.arguments.accept(this)
|
||||
|
||||
@@ -79,6 +79,22 @@ class JKMultiverseKtClassSymbol(override val target: KtClassOrObject) : JKClassS
|
||||
|
||||
}
|
||||
|
||||
fun JKClassSymbol.displayName() =
|
||||
when (this) {
|
||||
is JKUniverseClassSymbol ->
|
||||
target.psi<PsiClass>()
|
||||
?.let { it.nameWithOuterClasses() }
|
||||
?: name
|
||||
is JKMultiverseClassSymbol -> target.nameWithOuterClasses()
|
||||
else -> name
|
||||
}
|
||||
|
||||
fun PsiClass.nameWithOuterClasses() =
|
||||
generateSequence(this) { it.containingClass }
|
||||
.toList()
|
||||
.reversed()
|
||||
.joinToString(separator = ".") { it.name!! }
|
||||
|
||||
class JKUniverseMethodSymbol(private val symbolProvider: JKSymbolProvider) : JKMethodSymbol, JKUniverseSymbol<JKMethod> {
|
||||
override val receiverType: JKType?
|
||||
get() = (target.parent as? JKClass)?.let {
|
||||
|
||||
Reference in New Issue
Block a user