From 6c13416fea9505bf14ae2d7a3f9745e17e7ef47f Mon Sep 17 00:00:00 2001 From: Nicolay Mitropolsky Date: Fri, 19 Jan 2018 11:50:29 +0300 Subject: [PATCH] Uast-java: `JavaUAnonymousClass.uastAnchor` made return proper anchor --- .../jetbrains/uast/java/declarations/JavaUClass.kt | 13 +++++++++---- .../jetbrains/uast/test/common/RenderLogTestBase.kt | 8 +++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/uast/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt b/uast/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt index a4cb44b99573..68b47a76c7f6 100644 --- a/uast/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt +++ b/uast/uast-java/src/org/jetbrains/uast/java/declarations/JavaUClass.kt @@ -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.getSuperClass() override fun getFields(): Array = super.getFields() override fun getInitializers(): Array = super.getInitializers() diff --git a/uast/uast-tests/src/org/jetbrains/uast/test/common/RenderLogTestBase.kt b/uast/uast-tests/src/org/jetbrains/uast/test/common/RenderLogTestBase.kt index 4449aa2038c3..8ee069ac5196 100644 --- a/uast/uast-tests/src/org/jetbrains/uast/test/common/RenderLogTestBase.kt +++ b/uast/uast-tests/src/org/jetbrains/uast/test/common/RenderLogTestBase.kt @@ -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!!) }