Drop KtLightClass#getFqName() and some usages of classFqName in KtLightClassForDecompiledDeclaration

This commit is contained in:
Pavel V. Talanov
2016-07-26 16:37:29 +03:00
parent 1fda24fbbf
commit 5a1a1fc03a
10 changed files with 24 additions and 28 deletions
@@ -26,7 +26,6 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.KtJavaMirrorMarker; import org.jetbrains.kotlin.asJava.KtJavaMirrorMarker;
import org.jetbrains.kotlin.asJava.finder.JavaElementFinder; import org.jetbrains.kotlin.asJava.finder.JavaElementFinder;
import org.jetbrains.kotlin.idea.KotlinLanguage; import org.jetbrains.kotlin.idea.KotlinLanguage;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.psi.KtClassOrObject; import org.jetbrains.kotlin.psi.KtClassOrObject;
import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.psi.KtFile;
@@ -71,13 +70,6 @@ public class FakeLightClassForFileOfPackage extends AbstractLightClass implement
return false; return false;
} }
@NotNull
@Override
public FqName getFqName() {
return delegate.getFqName();
}
@NotNull @NotNull
@Override @Override
public PsiClass getDelegate() { public PsiClass getDelegate() {
@@ -21,6 +21,4 @@ import org.jetbrains.kotlin.asJava.elements.KtLightDeclaration
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
interface KtLightClass : PsiClass, KtLightDeclaration<KtClassOrObject, PsiClass> { interface KtLightClass : PsiClass, KtLightDeclaration<KtClassOrObject, PsiClass>
fun getFqName(): FqName
}
@@ -106,7 +106,8 @@ class KtLightClassForFacade private constructor(
override val kotlinOrigin: KtClassOrObject? get() = null override val kotlinOrigin: KtClassOrObject? get() = null
override fun getFqName(): FqName = facadeClassFqName val fqName: FqName
get() = facadeClassFqName
override fun getModifierList() = modifierList override fun getModifierList() = modifierList
@@ -27,6 +27,7 @@ class KtLightClassForInterfaceDefaultImpls(
: KtLightClassForSourceDeclaration({ classFqName }, classOrObject){ : KtLightClassForSourceDeclaration({ classFqName }, classOrObject){
override fun getQualifiedName(): String = classFqName.asString() override fun getQualifiedName(): String = classFqName.asString()
override fun getName() = JvmAbi.DEFAULT_IMPLS_CLASS_NAME
override fun getParent() = containingClass override fun getParent() = containingClass
override fun copy(): PsiElement { override fun copy(): PsiElement {
@@ -74,8 +74,6 @@ abstract class KtLightClassForSourceDeclaration(
override val kotlinOrigin: KtClassOrObject = classOrObject override val kotlinOrigin: KtClassOrObject = classOrObject
override fun getFqName(): FqName = classFqName
abstract override fun copy(): PsiElement abstract override fun copy(): PsiElement
abstract override fun getParent(): PsiElement? abstract override fun getParent(): PsiElement?
abstract override fun getQualifiedName(): String? abstract override fun getQualifiedName(): String?
@@ -159,12 +157,12 @@ abstract class KtLightClassForSourceDeclaration(
val aClass = other as KtLightClassForSourceDeclaration val aClass = other as KtLightClassForSourceDeclaration
if (classFqName != aClass.classFqName) return false if (classOrObject != aClass.classOrObject) return false
return true return true
} }
override fun hashCode(): Int = classFqName.hashCode() override fun hashCode(): Int = classOrObject.hashCode()
override fun getContainingClass(): PsiClass? { override fun getContainingClass(): PsiClass? {
if (classOrObject.parent === classOrObject.containingFile) return null if (classOrObject.parent === classOrObject.containingFile) return null
@@ -186,7 +184,7 @@ abstract class KtLightClassForSourceDeclaration(
override fun getTypeParameters(): Array<PsiTypeParameter> = _typeParameterList.typeParameters override fun getTypeParameters(): Array<PsiTypeParameter> = _typeParameterList.typeParameters
override fun getName(): String? = classFqName.shortName().asString() override fun getName(): String? = classOrObject.nameAsName?.asString()
private val _modifierList : PsiModifierList by lazy(LazyThreadSafetyMode.PUBLICATION) { private val _modifierList : PsiModifierList by lazy(LazyThreadSafetyMode.PUBLICATION) {
object : KtLightModifierListWithExplicitModifiers(this@KtLightClassForSourceDeclaration, computeModifiers()) { object : KtLightModifierListWithExplicitModifiers(this@KtLightClassForSourceDeclaration, computeModifiers()) {
@@ -24,7 +24,10 @@ class KtLightClassImpl(
classFqNameFunction: (KtClassOrObject) -> FqName, classFqNameFunction: (KtClassOrObject) -> FqName,
classOrObject: KtClassOrObject classOrObject: KtClassOrObject
) : KtLightClassForSourceDeclaration(classFqNameFunction, classOrObject) { ) : KtLightClassForSourceDeclaration(classFqNameFunction, classOrObject) {
override fun getQualifiedName() = classFqName.asString() val fqName: FqName
get() = fqName
override fun getQualifiedName() = classOrObject.fqName?.asString()
override fun getParent() = if (classOrObject.isTopLevel()) override fun getParent() = if (classOrObject.isTopLevel())
containingFile containingFile
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.asJava.builder.LightMemberOrigin
import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration import org.jetbrains.kotlin.asJava.builder.LightMemberOriginForDeclaration
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForEnumEntry import org.jetbrains.kotlin.asJava.classes.KtLightClassForEnumEntry
import org.jetbrains.kotlin.asJava.classes.KtLightClassImpl
import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclaration
@@ -140,7 +141,7 @@ sealed class KtLightFieldImpl(
is PsiEnumConstant -> { is PsiEnumConstant -> {
val kotlinEnumEntry = (origin as? LightMemberOriginForDeclaration)?.originalElement as? KtEnumEntry val kotlinEnumEntry = (origin as? LightMemberOriginForDeclaration)?.originalElement as? KtEnumEntry
val initializingClass = if (kotlinEnumEntry != null && kotlinEnumEntry.declarations.isNotEmpty()) { val initializingClass = if (kotlinEnumEntry != null && kotlinEnumEntry.declarations.isNotEmpty()) {
val enumConstantFqName = FqName(containingClass.getFqName().asString() + "." + kotlinEnumEntry.name) val enumConstantFqName = FqName((containingClass as KtLightClassImpl).fqName.asString() + "." + kotlinEnumEntry.name)
KtLightClassForEnumEntry(enumConstantFqName, kotlinEnumEntry, delegate) KtLightClassForEnumEntry(enumConstantFqName, kotlinEnumEntry, delegate)
} }
else null else null
@@ -32,7 +32,7 @@ class KtLightClassForDecompiledDeclaration(
override val kotlinOrigin: KtClassOrObject?, override val kotlinOrigin: KtClassOrObject?,
private val file: KtClsFile private val file: KtClsFile
) : KtLightClassBase(clsDelegate.manager) { ) : KtLightClassBase(clsDelegate.manager) {
private val fqName = kotlinOrigin?.fqName ?: FqName(clsDelegate.qualifiedName) val fqName = kotlinOrigin?.fqName ?: FqName(clsDelegate.qualifiedName)
override fun copy() = this override fun copy() = this
@@ -54,15 +54,13 @@ class KtLightClassForDecompiledDeclaration(
override fun getNavigationElement() = kotlinOrigin?.navigationElement ?: file override fun getNavigationElement() = kotlinOrigin?.navigationElement ?: file
override fun getFqName() = fqName
override fun getParent() = clsDelegate.parent override fun getParent() = clsDelegate.parent
override fun equals(other: Any?): Boolean = override fun equals(other: Any?): Boolean =
other is KtLightClassForDecompiledDeclaration && other is KtLightClassForDecompiledDeclaration &&
getFqName() == other.getFqName() fqName == other.fqName
override fun hashCode(): Int = override fun hashCode(): Int =
getFqName().hashCode() fqName.hashCode()
} }
@@ -19,11 +19,15 @@ package org.jetbrains.kotlin.idea.presentation
import com.intellij.ide.util.PsiElementListCellRenderer import com.intellij.ide.util.PsiElementListCellRenderer
import com.intellij.psi.presentation.java.ClassPresentationUtil import com.intellij.psi.presentation.java.ClassPresentationUtil
import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.name.FqName
class KtLightClassListCellRenderer : PsiElementListCellRenderer<KtLightClass>() { class KtLightClassListCellRenderer : PsiElementListCellRenderer<KtLightClass>() {
override fun getElementText(element: KtLightClass) = ClassPresentationUtil.getNameForClass(element, false) override fun getElementText(element: KtLightClass) = ClassPresentationUtil.getNameForClass(element, false)
override fun getContainerText(element: KtLightClass, name: String) = "(" + element.getFqName().parent() + ")" // TODO: correct text for local, anonymous, enum entries ... etc
override fun getContainerText(element: KtLightClass, name: String) = element.qualifiedName?.let { qName ->
"(" + FqName(qName).parent().asString() + ")"
} ?: ""
override fun getIconFlags() = 0 override fun getIconFlags() = 0
} }
@@ -80,7 +80,7 @@ private fun Converter.convertImport(fqName: FqName, ref: PsiJavaCodeReferenceEle
private fun Converter.convertStaticImportOnDemand(fqName: FqName, target: PsiElement?): List<String> { private fun Converter.convertStaticImportOnDemand(fqName: FqName, target: PsiElement?): List<String> {
when (target) { when (target) {
is KtLightClassForFacade -> return listOf(target.getFqName().parent().render() + ".*") is KtLightClassForFacade -> return listOf(target.fqName.parent().render() + ".*")
is KtLightClass -> { is KtLightClass -> {
val kotlinOrigin = target.kotlinOrigin val kotlinOrigin = target.kotlinOrigin
@@ -140,7 +140,7 @@ private fun convertStaticExplicitImport(fqName: FqName, target: PsiElement?): Li
private fun convertNonStaticImport(fqName: FqName, isOnDemand: Boolean, target: PsiElement?): List<String> { private fun convertNonStaticImport(fqName: FqName, isOnDemand: Boolean, target: PsiElement?): List<String> {
when (target) { when (target) {
is KtLightClassForFacade -> return listOf(target.getFqName().parent().render() + ".*") is KtLightClassForFacade -> return listOf(target.fqName.parent().render() + ".*")
is KtLightClass -> { is KtLightClass -> {
if (!isOnDemand) { if (!isOnDemand) {
@@ -161,4 +161,4 @@ private val DEFAULT_IMPORTS_SET: Set<FqName> = JvmPlatform.defaultModuleParamete
.map { it.fqnPart() } .map { it.fqnPart() }
.toSet() .toSet()
private fun isImportedByDefault(c: KtLightClass) = c.getFqName().parent() in DEFAULT_IMPORTS_SET private fun isImportedByDefault(c: KtLightClass) = c.qualifiedName?.let { FqName(it).parent() } in DEFAULT_IMPORTS_SET