LightClassDataProvider: FqName calculation is redundant now
This commit is contained in:
+2
-18
@@ -41,7 +41,6 @@ import org.jetbrains.kotlin.codegen.CompilationErrorHandler
|
||||
import org.jetbrains.kotlin.codegen.binding.CodegenBinding
|
||||
import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.fileClasses.NoResolveFileClassesProvider
|
||||
import org.jetbrains.kotlin.fileClasses.getFileClassType
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
@@ -52,7 +51,6 @@ import org.jetbrains.kotlin.psi.KtScript
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils.descriptorToDeclaration
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||
import org.jetbrains.kotlin.utils.sure
|
||||
|
||||
abstract class LightClassDataProvider<T : WithFileStubAndExtraDiagnostics>(
|
||||
@@ -181,35 +179,21 @@ class LightClassDataProviderForClassOrObject(private val classOrObject: KtClassO
|
||||
extraDiagnostics: Diagnostics): WithFileStubAndExtraDiagnostics {
|
||||
val classDescriptor = bindingContext.get(BindingContext.CLASS, classOrObject) ?: return InvalidLightClassData
|
||||
|
||||
val fqName = predictClassFqName(bindingContext, classDescriptor)
|
||||
val allInnerClasses = CodegenBinding.getAllInnerClasses(bindingContext, classDescriptor)
|
||||
|
||||
val innerClassesMap = ContainerUtil.newHashMap<KtClassOrObject, InnerKotlinClassLightClassData>()
|
||||
for (innerClassDescriptor in allInnerClasses) {
|
||||
val declaration = descriptorToDeclaration(innerClassDescriptor)
|
||||
if (declaration !is KtClassOrObject) continue
|
||||
|
||||
val innerLightClassData = InnerKotlinClassLightClassData(
|
||||
predictClassFqName(bindingContext, innerClassDescriptor),
|
||||
declaration)
|
||||
|
||||
innerClassesMap.put(declaration, innerLightClassData)
|
||||
val declaration = descriptorToDeclaration(innerClassDescriptor) as? KtClassOrObject ?: continue
|
||||
innerClassesMap.put(declaration, InnerKotlinClassLightClassData(declaration))
|
||||
}
|
||||
|
||||
return OutermostKotlinClassLightClassData(
|
||||
javaFileStub,
|
||||
extraDiagnostics,
|
||||
fqName,
|
||||
classOrObject,
|
||||
innerClassesMap)
|
||||
}
|
||||
|
||||
private fun predictClassFqName(bindingContext: BindingContext, classDescriptor: ClassDescriptor): FqName {
|
||||
val asmType = CodegenBinding.getAsmType(bindingContext, classDescriptor)
|
||||
//noinspection ConstantConditions
|
||||
return JvmClassName.byInternalName(asmType.className.replace('.', '/')).fqNameForClassNameWithoutDollars
|
||||
}
|
||||
|
||||
override val files: Collection<KtFile>
|
||||
get() = listOf(file)
|
||||
|
||||
|
||||
-5
@@ -30,7 +30,6 @@ interface WithFileStubAndExtraDiagnostics: LightClassData {
|
||||
|
||||
interface LightClassDataForKotlinClass: LightClassData {
|
||||
val classOrObject: KtClassOrObject
|
||||
val jvmQualifiedName: FqName
|
||||
}
|
||||
|
||||
object InvalidLightClassData: WithFileStubAndExtraDiagnostics, LightClassDataForKotlinClass {
|
||||
@@ -40,8 +39,6 @@ object InvalidLightClassData: WithFileStubAndExtraDiagnostics, LightClassDataFor
|
||||
get() = shouldNotBeCalled()
|
||||
override val classOrObject: KtClassOrObject
|
||||
get() = shouldNotBeCalled()
|
||||
override val jvmQualifiedName: FqName
|
||||
get() = shouldNotBeCalled()
|
||||
|
||||
private fun shouldNotBeCalled(): Nothing = throw UnsupportedOperationException("Should not be called")
|
||||
}
|
||||
@@ -52,14 +49,12 @@ data class KotlinFacadeLightClassData(
|
||||
): LightClassData, WithFileStubAndExtraDiagnostics
|
||||
|
||||
data class InnerKotlinClassLightClassData(
|
||||
override val jvmQualifiedName: FqName,
|
||||
override val classOrObject: KtClassOrObject
|
||||
): LightClassDataForKotlinClass
|
||||
|
||||
data class OutermostKotlinClassLightClassData(
|
||||
override val javaFileStub: PsiJavaFileStub,
|
||||
override val extraDiagnostics: Diagnostics,
|
||||
override val jvmQualifiedName: FqName,
|
||||
override val classOrObject: KtClassOrObject,
|
||||
val allInnerClasses: Map<KtClassOrObject, InnerKotlinClassLightClassData>
|
||||
): LightClassDataForKotlinClass, WithFileStubAndExtraDiagnostics {
|
||||
|
||||
Reference in New Issue
Block a user