Look packages up through JavaDescriptorResolver

This commit is contained in:
Andrey Breslav
2013-10-31 18:57:54 +04:00
parent 71ed2d2c71
commit d0c0ba83fc
4 changed files with 21 additions and 8 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaClassResolver;
@@ -178,7 +179,8 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
externalSignatureResolver,
errorReporter,
signatureChecker,
javaResolverCache
javaResolverCache,
this
),
module
);
@@ -24,7 +24,8 @@ public open class LazyJavaSubModule(
outerContext.externalSignatureResolver,
outerContext.errorReporter,
outerContext.methodSignatureChecker,
outerContext.javaResolverCache
outerContext.javaResolverCache,
outerContext.javaDescriptorResolver
)
private val _packageFragments: MemoizedFunctionToNullable<FqName, NamespaceDescriptor> = c.storageManager.createMemoizedFunctionWithNullableValues {
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.ExternalSignatureResolver
import org.jetbrains.jet.lang.resolve.java.resolver.MethodSignatureChecker
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter
import org.jetbrains.jet.lang.resolve.java.resolver.JavaResolverCache
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver
open class GlobalJavaResolverContext(
val storageManager: StorageManager,
@@ -35,7 +36,8 @@ open class GlobalJavaResolverContext(
val externalSignatureResolver: ExternalSignatureResolver,
val errorReporter: ErrorReporter,
val methodSignatureChecker: MethodSignatureChecker,
val javaResolverCache: JavaResolverCache
val javaResolverCache: JavaResolverCache,
val javaDescriptorResolver: JavaDescriptorResolver
)
open class LazyJavaResolverContext(
@@ -47,10 +49,12 @@ open class LazyJavaResolverContext(
externalSignatureResolver: ExternalSignatureResolver,
errorReporter: ErrorReporter,
methodSignatureChecker: MethodSignatureChecker,
javaResolverCache: JavaResolverCache
javaResolverCache: JavaResolverCache,
javaDescriptorResolver: JavaDescriptorResolver
) : GlobalJavaResolverContext(storageManager, finder, javaClassResolver,
externalAnnotationResolver, externalSignatureResolver,
errorReporter, methodSignatureChecker, javaResolverCache)
errorReporter, methodSignatureChecker, javaResolverCache,
javaDescriptorResolver)
fun LazyJavaResolverContext.withTypes(
typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY
@@ -64,6 +68,7 @@ fun LazyJavaResolverContext.withTypes(
errorReporter,
methodSignatureChecker,
javaResolverCache,
javaDescriptorResolver,
LazyJavaTypeResolver(this, typeParameterResolver),
typeParameterResolver)
@@ -77,11 +82,13 @@ class LazyJavaResolverContextWithTypes(
errorReporter: ErrorReporter,
methodSignatureChecker: MethodSignatureChecker,
javaResolverCache: JavaResolverCache,
javaDescriptorResolver: JavaDescriptorResolver,
val typeResolver: LazyJavaTypeResolver,
val typeParameterResolver: TypeParameterResolver
) : LazyJavaResolverContext(subModule, storageManager, finder, javaClassResolver,
externalAnnotationResolver, externalSignatureResolver,
errorReporter, methodSignatureChecker, javaResolverCache)
errorReporter, methodSignatureChecker, javaResolverCache,
javaDescriptorResolver)
fun LazyJavaResolverContextWithTypes.child(
containingDeclaration: DeclarationDescriptor,
@@ -13,6 +13,7 @@ import org.jetbrains.jet.utils.flatten
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver
import org.jetbrains.kotlin.util.inn
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule
public abstract class LazyJavaPackageFragmentScope(
c: LazyJavaResolverContext,
@@ -46,7 +47,7 @@ public abstract class LazyJavaPackageFragmentScope(
override fun getClassifier(name: Name): ClassifierDescriptor? = classes(name)
override fun getNamespace(name: Name): NamespaceDescriptor? = c.subModule.getPackageFragment(getContainingDeclaration().getFqName().child(name))
override fun getNamespace(name: Name): NamespaceDescriptor? = c.javaDescriptorResolver.resolveNamespace(getContainingDeclaration().getFqName().child(name), DescriptorSearchRule.INCLUDE_KOTLIN_SOURCES)
override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> = listOf()
@@ -62,7 +63,9 @@ public class LazyPackageFragmentScopeForJavaPackage(
override fun computeMemberIndex(): MemberIndex = computeMemberIndexForSamConstructors(EMPTY_MEMBER_INDEX)
override fun getAllClassNames(): Collection<Name> {
return jPackage.getClasses().map { c -> c.getName() }
return jPackage.getClasses().iterator()
.filter { c -> c.getOriginKind() != JavaClass.OriginKind.KOTLIN_LIGHT_CLASS }
.map { c -> c.getName() }.toList()
}
override fun getAllPackageNames(): Collection<Name> =