[FE] Add sealed classes related properties to java model

This commit is contained in:
Dmitriy Novozhilov
2020-11-19 17:32:12 +03:00
committed by TeamCityServer
parent 8e9e34350f
commit bdfb71b149
9 changed files with 46 additions and 0 deletions
@@ -158,6 +158,8 @@ class MockKotlinClassifier(override val classId: ClassId,
override val isAnnotationType get() = shouldNotBeCalled()
override val isEnum get() = shouldNotBeCalled()
override val isRecord get() = shouldNotBeCalled()
override val isSealed: Boolean get() = shouldNotBeCalled()
override val permittedTypes: Collection<JavaClassifierType> get() = shouldNotBeCalled()
override val methods get() = shouldNotBeCalled()
override val fields get() = shouldNotBeCalled()
override val constructors get() = shouldNotBeCalled()
@@ -68,6 +68,11 @@ class FakeSymbolBasedClass(
override val isRecord: Boolean get() = false
override val recordComponents: Collection<JavaRecordComponent> get() = emptyList()
override val isSealed: Boolean get() = false
override val permittedTypes: Collection<JavaClassifierType> get() = emptyList()
override val lightClassOriginKind: LightClassOriginKind? get() = null
override val methods: Collection<JavaMethod> get() = emptyList()
@@ -107,6 +107,13 @@ class SymbolBasedClass(
override val isEnum: Boolean
get() = element.kind == ElementKind.ENUM
// TODO
override val isSealed: Boolean
get() = false
override val permittedTypes: Collection<JavaClassifierType>
get() = emptyList()
override val lightClassOriginKind: LightClassOriginKind?
get() = null
@@ -118,6 +118,13 @@ class TreeBasedClass(
override val isRecord: Boolean
get() = false
// TODO
override val isSealed: Boolean
get() = false
override val permittedTypes: Collection<JavaClassifierType>
get() = emptyList()
override val lightClassOriginKind: LightClassOriginKind?
get() = null
@@ -59,6 +59,12 @@ class JavaClassImpl(psiClass: PsiClass) : JavaClassifierImpl<PsiClass>(psiClass)
override val isEnum: Boolean
get() = psi.isEnum
override val isSealed: Boolean
get() = JavaElementUtil.isSealed(this)
override val permittedTypes: Collection<JavaClassifierType>
get() = classifierTypes(psi.permitsListTypes)
override val isRecord: Boolean
get() = psi.isRecord
@@ -52,6 +52,10 @@ import static org.jetbrains.kotlin.load.java.structure.impl.JavaElementCollectio
return owner.getPsi().hasModifierProperty(PsiModifier.FINAL);
}
public static boolean isSealed(@NotNull JavaModifierListOwnerImpl owner) {
return owner.getPsi().hasModifierProperty(PsiModifier.SEALED);
}
@NotNull
public static Visibility getVisibility(@NotNull JavaModifierListOwnerImpl owner) {
PsiModifierListOwner psiOwner = owner.getPsi();
@@ -70,6 +70,9 @@ class BinaryJavaClass(
override val lightClassOriginKind: LightClassOriginKind? get() = null
override val isSealed: Boolean get() = permittedTypes.isNotEmpty()
override val permittedTypes = arrayListOf<JavaClassifierType>()
override fun isFromSourceCodeInScope(scope: SearchScope): Boolean = false
override fun visitEnd() {
@@ -233,4 +236,8 @@ class BinaryJavaClass(
)
}
}
override fun visitPermittedSubtypeExperimental(permittedSubtype: String?) {
permittedTypes.addIfNotNull(permittedSubtype?.convertInternalNameToClassifierType())
}
}
@@ -86,6 +86,8 @@ interface JavaClass : JavaClassifier, JavaTypeParameterListOwner, JavaModifierLi
val isAnnotationType: Boolean
val isEnum: Boolean
val isRecord: Boolean
val isSealed: Boolean
val permittedTypes: Collection<JavaClassifierType>
val lightClassOriginKind: LightClassOriginKind?
val methods: Collection<JavaMethod>
@@ -122,6 +122,12 @@ class ReflectJavaClass(
override val isRecord: Boolean
get() = false
override val isSealed: Boolean
get() = false
override val permittedTypes: Collection<JavaClassifierType>
get() = emptyList()
override fun equals(other: Any?) = other is ReflectJavaClass && klass == other.klass
override fun hashCode() = klass.hashCode()