Java UAST: JavaUClass's own isRecord

Otherwise, it will use the default interface impl,
which always returns false.

^IDEA-363783 fixed

GitOrigin-RevId: 1e5eedd75661c92f95f76611eb7c48c77be71052
This commit is contained in:
Jinseong Jeon
2024-11-24 11:19:51 -08:00
committed by intellij-monorepo-bot
parent 1b713a7bbc
commit 5aded8dfe2
2 changed files with 7 additions and 2 deletions

View File

@@ -57,6 +57,10 @@ abstract class AbstractJavaUClass(
override fun equals(other: Any?): Boolean = other is AbstractJavaUClass && javaPsi == other.javaPsi
override fun hashCode(): Int = javaPsi.hashCode()
override fun isRecord(): Boolean {
return javaPsi.isRecord
}
}
@ApiStatus.Internal

View File

@@ -218,7 +218,8 @@ class JavaUastApiTest : AbstractJavaUastTest() {
val psiFile = myFixture.configureByFile("Simple/Record.java")
val psiClass = (psiFile as PsiJavaFile).classes[0]
val uClass = psiClass.toUElementOfType<UClass>()
val constructor = uClass!!.methods.single { it.isConstructor }
TestCase.assertTrue(uClass!!.isRecord)
val constructor = uClass.methods.single { it.isConstructor }
assertInstanceOf(constructor.javaPsi, LightRecordCanonicalConstructor::class.java)
TestCase.assertEquals(constructor, constructor.javaPsi.toUElement())
assertInstanceOf(constructor.sourcePsi, PsiRecordHeader::class.java)
@@ -313,7 +314,7 @@ class JavaUastApiTest : AbstractJavaUastTest() {
import java.lang.annotation.Target;
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@interface MyNullable {}
class Test {
@MyNullable String test() {
return null;