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) {
|
private fun renderType(type: JKType) {
|
||||||
if (type is JKNoTypeImpl) return
|
if (type is JKNoTypeImpl) return
|
||||||
when (type) {
|
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 JKUnresolvedClassType -> printer.printWithNoIndent(type.name)
|
||||||
is JKContextType -> return
|
is JKContextType -> return
|
||||||
is JKStarProjectionType ->
|
is JKStarProjectionType ->
|
||||||
@@ -587,7 +587,7 @@ class NewCodeBuilder {
|
|||||||
if (javaNewExpression.isAnonymousClass()) {
|
if (javaNewExpression.isAnonymousClass()) {
|
||||||
printer.printWithNoIndent("object : ")
|
printer.printWithNoIndent("object : ")
|
||||||
}
|
}
|
||||||
printer.printWithNoIndent(javaNewExpression.classSymbol.name)
|
printer.printWithNoIndent(javaNewExpression.classSymbol.displayName())
|
||||||
javaNewExpression.typeArgumentList.accept(this)
|
javaNewExpression.typeArgumentList.accept(this)
|
||||||
if (javaNewExpression.constructorIsPresent()) {
|
if (javaNewExpression.constructorIsPresent()) {
|
||||||
printer.par(ROUND) {
|
printer.par(ROUND) {
|
||||||
@@ -753,7 +753,7 @@ class NewCodeBuilder {
|
|||||||
|
|
||||||
override fun visitAnnotation(annotation: JKAnnotation) {
|
override fun visitAnnotation(annotation: JKAnnotation) {
|
||||||
printer.printWithNoIndent("@")
|
printer.printWithNoIndent("@")
|
||||||
printer.printWithNoIndent(annotation.classSymbol.name)
|
printer.printWithNoIndent(annotation.classSymbol.displayName())
|
||||||
if (annotation.arguments.expressions.isNotEmpty()) {
|
if (annotation.arguments.expressions.isNotEmpty()) {
|
||||||
printer.par {
|
printer.par {
|
||||||
annotation.arguments.accept(this)
|
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> {
|
class JKUniverseMethodSymbol(private val symbolProvider: JKSymbolProvider) : JKMethodSymbol, JKUniverseSymbol<JKMethod> {
|
||||||
override val receiverType: JKType?
|
override val receiverType: JKType?
|
||||||
get() = (target.parent as? JKClass)?.let {
|
get() = (target.parent as? JKClass)?.let {
|
||||||
|
|||||||
Reference in New Issue
Block a user