Uast-java: JavaUAnonymousClass.uastAnchor made return proper anchor

This commit is contained in:
Nicolay Mitropolsky
2018-01-19 12:22:14 +03:00
parent d6d438d378
commit 6c13416fea
2 changed files with 16 additions and 5 deletions
@@ -16,10 +16,7 @@
package org.jetbrains.uast.java
import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiAnonymousClass
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiJavaCodeReferenceElement
import com.intellij.psi.*
import org.jetbrains.uast.*
import org.jetbrains.uast.java.internal.JavaUElementWithComments
@@ -95,6 +92,14 @@ class JavaUAnonymousClass(
listOf(createJavaUTypeReferenceExpression(psi.baseClassReference)) + super.uastSuperTypes
}
override val uastAnchor: UIdentifier? by lazy {
when (javaPsi) {
is PsiEnumConstantInitializer ->
(javaPsi.parent as? PsiEnumConstant)?.let { UIdentifier(it.nameIdentifier, this) }
else -> UIdentifier(psi.baseClassReference.referenceNameElement, this)
}
}
override fun getSuperClass(): UClass? = super<AbstractJavaUClass>.getSuperClass()
override fun getFields(): Array<UField> = super<AbstractJavaUClass>.getFields()
override fun getInitializers(): Array<UClassInitializer> = super<AbstractJavaUClass>.getInitializers()
@@ -111,7 +111,13 @@ interface RenderLogTestBase {
uElement.getContainingUFile())
}
val anchorPsi = (node as? UDeclaration)?.uastAnchor?.psi
val uastAnchor = (node as? UDeclaration)?.uastAnchor
if (uastAnchor != null) {
TestCase.assertEquals("should be appropriate sourcePsi for uastAnchor for ${node.javaClass} [${node.sourcePsi?.text}] ",
node.sourcePsiElement!!.containingFile!!, uastAnchor.sourcePsi?.containingFile)
}
val anchorPsi = uastAnchor?.psi
if (anchorPsi != null) {
TestCase.assertEquals(anchorPsi.containingFile, node.sourcePsiElement!!.containingFile!!)
}