New J2K: Add support of package qualifiers for expressions
This commit is contained in:
committed by
Ilya Kirillov
parent
9fb6cfc26e
commit
a973f9b670
@@ -41,6 +41,7 @@ class JKSymbolProvider {
|
||||
is KtParameter -> JKMultiversePropertySymbol(psi, this)
|
||||
is PsiParameter -> JKMultiverseFieldSymbol(psi, this)
|
||||
is PsiLocalVariable -> JKMultiverseFieldSymbol(psi, this)
|
||||
is PsiPackage -> JKMultiversePackageSymbol(psi)
|
||||
else -> TODO(psi::class.toString())
|
||||
}
|
||||
|
||||
|
||||
@@ -377,6 +377,7 @@ class JavaToJKTreeBuilder constructor(
|
||||
return when (symbol) {
|
||||
is JKClassSymbol -> JKClassAccessExpressionImpl(symbol)
|
||||
is JKFieldSymbol -> JKFieldAccessExpressionImpl(symbol)
|
||||
is JKPackageSymbol -> JKPackageAccessExpressionImpl(symbol)
|
||||
else -> TODO()
|
||||
}.qualified(qualifierExpression?.toJK()).also {
|
||||
it.assignNonCodeElements(this)
|
||||
|
||||
@@ -745,6 +745,10 @@ class NewCodeBuilder {
|
||||
printer.par(SQUARE) { arrayAccessExpression.indexExpression.accept(this) }
|
||||
}
|
||||
|
||||
override fun visitPackageAccessExpressionRaw(packageAccessExpression: JKPackageAccessExpression) {
|
||||
printer.printWithNoIndent(packageAccessExpression.identifier.name.escaped())
|
||||
}
|
||||
|
||||
override fun visitDelegationConstructorCallRaw(delegationConstructorCall: JKDelegationConstructorCall) {
|
||||
delegationConstructorCall.expression.accept(this)
|
||||
printer.par {
|
||||
|
||||
@@ -422,6 +422,11 @@ class JKFieldAccessExpressionImpl(override var identifier: JKFieldSymbol) : JKFi
|
||||
PsiOwner by PsiOwnerImpl() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitFieldAccessExpression(this, data)
|
||||
}
|
||||
class JKPackageAccessExpressionImpl(override var identifier: JKPackageSymbol) : JKPackageAccessExpression, JKElementBase(),
|
||||
PsiOwner by PsiOwnerImpl() {
|
||||
override fun <R, D> accept(visitor: JKVisitor<R, D>, data: D): R = visitor.visitPackageAccessExpression(this, data)
|
||||
}
|
||||
|
||||
|
||||
val JKStatement.statements: List<JKStatement>
|
||||
get() =
|
||||
|
||||
@@ -274,6 +274,21 @@ class JKUnresolvedClassSymbol(override val target: String) : JKClassSymbol, JKUn
|
||||
get() = target.substringAfterLast('.')
|
||||
}
|
||||
|
||||
interface JKPackageSymbol : JKNamedSymbol {
|
||||
override val target: PsiPackage
|
||||
}
|
||||
|
||||
class JKMultiversePackageSymbol(override val target: PsiPackage) : JKPackageSymbol {
|
||||
override val declaredIn
|
||||
get() = TODO("not implemented")
|
||||
|
||||
override val name: String
|
||||
get() = target.name.orEmpty()
|
||||
|
||||
override val fqName: String
|
||||
get() = target.qualifiedName
|
||||
}
|
||||
|
||||
|
||||
fun JKSymbol.deepestFqName(): String? {
|
||||
fun Any.deepestFqNameForTarget(): String? =
|
||||
|
||||
@@ -333,6 +333,10 @@ interface JKFieldAccessExpression : JKAssignableExpression {
|
||||
val identifier: JKFieldSymbol
|
||||
}
|
||||
|
||||
interface JKPackageAccessExpression : JKAssignableExpression {
|
||||
val identifier: JKPackageSymbol
|
||||
}
|
||||
|
||||
interface JKClassAccessExpression : JKExpression {
|
||||
val identifier: JKClassSymbol
|
||||
}
|
||||
|
||||
@@ -47,6 +47,7 @@ interface JKVisitor<out R, in D> {
|
||||
fun visitTypeArgumentListOwner(typeArgumentListOwner: JKTypeArgumentListOwner, data: D): R = visitTreeElement(typeArgumentListOwner, data)
|
||||
fun visitMethodCallExpression(methodCallExpression: JKMethodCallExpression, data: D): R = visitExpression(methodCallExpression, data)
|
||||
fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression, data: D): R = visitAssignableExpression(fieldAccessExpression, data)
|
||||
fun visitPackageAccessExpression(packageAccessExpression: JKPackageAccessExpression, data: D): R = visitAssignableExpression(packageAccessExpression, data)
|
||||
fun visitClassAccessExpression(classAccessExpression: JKClassAccessExpression, data: D): R = visitExpression(classAccessExpression, data)
|
||||
fun visitArrayAccessExpression(arrayAccessExpression: JKArrayAccessExpression, data: D): R = visitAssignableExpression(arrayAccessExpression, data)
|
||||
fun visitParenthesizedExpression(parenthesizedExpression: JKParenthesizedExpression, data: D): R = visitExpression(parenthesizedExpression, data)
|
||||
|
||||
@@ -91,6 +91,8 @@ interface JKVisitorVoid : JKVisitor<Unit, Nothing?> {
|
||||
override fun visitMethodCallExpression(methodCallExpression: JKMethodCallExpression, data: Nothing?) = visitMethodCallExpression(methodCallExpression)
|
||||
fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression) = visitAssignableExpression(fieldAccessExpression, null)
|
||||
override fun visitFieldAccessExpression(fieldAccessExpression: JKFieldAccessExpression, data: Nothing?) = visitFieldAccessExpression(fieldAccessExpression)
|
||||
fun visitPackageAccessExpression(packageAccessExpression: JKPackageAccessExpression) = visitAssignableExpression(packageAccessExpression, null)
|
||||
override fun visitPackageAccessExpression(packageAccessExpression: JKPackageAccessExpression, data: Nothing?) = visitPackageAccessExpression(packageAccessExpression)
|
||||
fun visitClassAccessExpression(classAccessExpression: JKClassAccessExpression) = visitExpression(classAccessExpression, null)
|
||||
override fun visitClassAccessExpression(classAccessExpression: JKClassAccessExpression, data: Nothing?) = visitClassAccessExpression(classAccessExpression)
|
||||
fun visitArrayAccessExpression(arrayAccessExpression: JKArrayAccessExpression) = visitAssignableExpression(arrayAccessExpression, null)
|
||||
|
||||
@@ -358,6 +358,14 @@ interface JKVisitorWithCommentsPrinting : JKVisitorVoid {
|
||||
|
||||
fun visitFieldAccessExpressionRaw(fieldAccessExpression: JKFieldAccessExpression) = visitAssignableExpressionRaw(fieldAccessExpression)
|
||||
|
||||
override fun visitPackageAccessExpression(packageAccessExpression: JKPackageAccessExpression) {
|
||||
printLeftNonCodeElements(packageAccessExpression)
|
||||
visitPackageAccessExpressionRaw(packageAccessExpression)
|
||||
printRightNonCodeElements(packageAccessExpression)
|
||||
}
|
||||
|
||||
fun visitPackageAccessExpressionRaw(packageAccessExpression: JKPackageAccessExpression) = visitAssignableExpressionRaw(packageAccessExpression)
|
||||
|
||||
override fun visitClassAccessExpression(classAccessExpression: JKClassAccessExpression) {
|
||||
printLeftNonCodeElements(classAccessExpression)
|
||||
visitClassAccessExpressionRaw(classAccessExpression)
|
||||
|
||||
Reference in New Issue
Block a user