Straighten out MemberIndex calculation in LazyJavaStaticScope
Also delete confusing "inn" function
This commit is contained in:
+17
-17
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.resolve.java.lazy.withTypes
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaPackage
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass
|
||||
import org.jetbrains.kotlin.util.inn
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.findClassInJava
|
||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||
@@ -42,21 +41,9 @@ public abstract class LazyJavaStaticScope(
|
||||
c: LazyJavaResolverContext,
|
||||
descriptor: ClassOrPackageFragmentDescriptor
|
||||
) : LazyJavaMemberScope(c.withTypes(), descriptor) {
|
||||
|
||||
protected val fqName: FqName = DescriptorUtils.getFqName(descriptor).toSafe()
|
||||
|
||||
override fun getExpectedThisObject() = null
|
||||
|
||||
protected fun computeMemberIndexForSamConstructors(delegate: MemberIndex): MemberIndex = object : MemberIndex by delegate {
|
||||
override fun getAllMethodNames(): Collection<Name> {
|
||||
val jClass = c.findClassInJava(fqName).jClass
|
||||
return delegate.getAllMethodNames() +
|
||||
// For SAM-constructors
|
||||
getAllClassNames() +
|
||||
jClass.inn({ jC -> jC.getInnerClasses().map { c -> c.getName() }}, listOf())
|
||||
}
|
||||
}
|
||||
|
||||
// Package fragments are not nested
|
||||
override fun getPackage(name: Name) = null
|
||||
abstract fun getSubPackages(): Collection<FqName>
|
||||
@@ -95,7 +82,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
// TODO: Storing references is a temporary hack until modules infrastructure is implemented.
|
||||
// See JetTypeMapperWithOutDirectories for details
|
||||
public val kotlinBinaryClass: KotlinJvmBinaryClass?
|
||||
= c.kotlinClassFinder.findKotlinClass(PackageClassUtils.getPackageClassFqName(fqName))
|
||||
= c.kotlinClassFinder.findKotlinClass(PackageClassUtils.getPackageClassFqName(packageFragment.fqName))
|
||||
|
||||
private val deserializedPackageScope = c.storageManager.createLazyValue {
|
||||
val kotlinBinaryClass = kotlinBinaryClass
|
||||
@@ -107,7 +94,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
|
||||
private val classes = c.storageManager.createMemoizedFunctionWithNullableValues<Name, ClassDescriptor> {
|
||||
name ->
|
||||
val fqName = fqName.child(SpecialNames.safeIdentifier(name))
|
||||
val fqName = packageFragment.fqName.child(SpecialNames.safeIdentifier(name))
|
||||
val (jClass, kClass) = c.findClassInJava(fqName)
|
||||
if (kClass != null)
|
||||
kClass
|
||||
@@ -130,7 +117,10 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
result.addAll(deserializedPackageScope().getAllDescriptors())
|
||||
}
|
||||
|
||||
override fun computeMemberIndex(): MemberIndex = computeMemberIndexForSamConstructors(EMPTY_MEMBER_INDEX)
|
||||
override fun computeMemberIndex(): MemberIndex = object : MemberIndex by EMPTY_MEMBER_INDEX {
|
||||
// For SAM-constructors
|
||||
override fun getAllMethodNames(): Collection<Name> = getAllClassNames()
|
||||
}
|
||||
|
||||
override fun computeAdditionalFunctions(name: Name) = listOf<SimpleFunctionDescriptor>()
|
||||
|
||||
@@ -166,7 +156,17 @@ public class LazyJavaStaticClassScope(
|
||||
descriptor: LazyJavaClassDescriptor
|
||||
) : LazyJavaStaticScope(c, descriptor) {
|
||||
|
||||
override fun computeMemberIndex(): MemberIndex = computeMemberIndexForSamConstructors(ClassMemberIndex(jClass, { m -> m.isStatic() }))
|
||||
override fun computeMemberIndex(): MemberIndex {
|
||||
val delegate = ClassMemberIndex(jClass) { m -> m.isStatic() }
|
||||
return object : MemberIndex by delegate {
|
||||
override fun getAllMethodNames(): Collection<Name> {
|
||||
// Should be a super call, but KT-2860
|
||||
return delegate.getAllMethodNames() +
|
||||
// For SAM-constructors
|
||||
jClass.getInnerClasses().map { c -> c.getName() }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getAllFunctionNames(): Collection<Name> {
|
||||
if (jClass.isEnum()) {
|
||||
|
||||
+2
-7
@@ -17,13 +17,8 @@
|
||||
package org.jetbrains.jet.lang.resolve.java.lazy.types
|
||||
|
||||
import org.jetbrains.jet.storage.StorageManager
|
||||
import org.jetbrains.jet.lang.types.TypeConstructor
|
||||
import org.jetbrains.jet.lang.types.TypeProjection
|
||||
import org.jetbrains.jet.lang.types.*
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope
|
||||
import org.jetbrains.jet.lang.types.AbstractJetType
|
||||
import org.jetbrains.jet.lang.types.ErrorUtils
|
||||
import org.jetbrains.kotlin.util.inn
|
||||
import org.jetbrains.jet.lang.types.LazyType
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.Annotations
|
||||
|
||||
abstract class LazyJavaType(storageManager: StorageManager) : AbstractJetType(), LazyType {
|
||||
@@ -45,7 +40,7 @@ abstract class LazyJavaType(storageManager: StorageManager) : AbstractJetType(),
|
||||
|
||||
override fun isNullable() = false
|
||||
|
||||
override fun isError()= getConstructor().getDeclarationDescriptor().inn({ d -> ErrorUtils.isError(d)}, false)
|
||||
override fun isError() = getConstructor().getDeclarationDescriptor()?.let { d -> ErrorUtils.isError(d) } ?: false
|
||||
|
||||
override fun getAnnotations() = Annotations.EMPTY
|
||||
|
||||
|
||||
Reference in New Issue
Block a user