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.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; 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.ImportPath;
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext; import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaClassResolver; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaClassResolver;
@@ -178,7 +179,8 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
externalSignatureResolver, externalSignatureResolver,
errorReporter, errorReporter,
signatureChecker, signatureChecker,
javaResolverCache javaResolverCache,
this
), ),
module module
); );
@@ -24,7 +24,8 @@ public open class LazyJavaSubModule(
outerContext.externalSignatureResolver, outerContext.externalSignatureResolver,
outerContext.errorReporter, outerContext.errorReporter,
outerContext.methodSignatureChecker, outerContext.methodSignatureChecker,
outerContext.javaResolverCache outerContext.javaResolverCache,
outerContext.javaDescriptorResolver
) )
private val _packageFragments: MemoizedFunctionToNullable<FqName, NamespaceDescriptor> = c.storageManager.createMemoizedFunctionWithNullableValues { 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.MethodSignatureChecker
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter 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.resolver.JavaResolverCache
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver
open class GlobalJavaResolverContext( open class GlobalJavaResolverContext(
val storageManager: StorageManager, val storageManager: StorageManager,
@@ -35,7 +36,8 @@ open class GlobalJavaResolverContext(
val externalSignatureResolver: ExternalSignatureResolver, val externalSignatureResolver: ExternalSignatureResolver,
val errorReporter: ErrorReporter, val errorReporter: ErrorReporter,
val methodSignatureChecker: MethodSignatureChecker, val methodSignatureChecker: MethodSignatureChecker,
val javaResolverCache: JavaResolverCache val javaResolverCache: JavaResolverCache,
val javaDescriptorResolver: JavaDescriptorResolver
) )
open class LazyJavaResolverContext( open class LazyJavaResolverContext(
@@ -47,10 +49,12 @@ open class LazyJavaResolverContext(
externalSignatureResolver: ExternalSignatureResolver, externalSignatureResolver: ExternalSignatureResolver,
errorReporter: ErrorReporter, errorReporter: ErrorReporter,
methodSignatureChecker: MethodSignatureChecker, methodSignatureChecker: MethodSignatureChecker,
javaResolverCache: JavaResolverCache javaResolverCache: JavaResolverCache,
javaDescriptorResolver: JavaDescriptorResolver
) : GlobalJavaResolverContext(storageManager, finder, javaClassResolver, ) : GlobalJavaResolverContext(storageManager, finder, javaClassResolver,
externalAnnotationResolver, externalSignatureResolver, externalAnnotationResolver, externalSignatureResolver,
errorReporter, methodSignatureChecker, javaResolverCache) errorReporter, methodSignatureChecker, javaResolverCache,
javaDescriptorResolver)
fun LazyJavaResolverContext.withTypes( fun LazyJavaResolverContext.withTypes(
typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY
@@ -64,6 +68,7 @@ fun LazyJavaResolverContext.withTypes(
errorReporter, errorReporter,
methodSignatureChecker, methodSignatureChecker,
javaResolverCache, javaResolverCache,
javaDescriptorResolver,
LazyJavaTypeResolver(this, typeParameterResolver), LazyJavaTypeResolver(this, typeParameterResolver),
typeParameterResolver) typeParameterResolver)
@@ -77,11 +82,13 @@ class LazyJavaResolverContextWithTypes(
errorReporter: ErrorReporter, errorReporter: ErrorReporter,
methodSignatureChecker: MethodSignatureChecker, methodSignatureChecker: MethodSignatureChecker,
javaResolverCache: JavaResolverCache, javaResolverCache: JavaResolverCache,
javaDescriptorResolver: JavaDescriptorResolver,
val typeResolver: LazyJavaTypeResolver, val typeResolver: LazyJavaTypeResolver,
val typeParameterResolver: TypeParameterResolver val typeParameterResolver: TypeParameterResolver
) : LazyJavaResolverContext(subModule, storageManager, finder, javaClassResolver, ) : LazyJavaResolverContext(subModule, storageManager, finder, javaClassResolver,
externalAnnotationResolver, externalSignatureResolver, externalAnnotationResolver, externalSignatureResolver,
errorReporter, methodSignatureChecker, javaResolverCache) errorReporter, methodSignatureChecker, javaResolverCache,
javaDescriptorResolver)
fun LazyJavaResolverContextWithTypes.child( fun LazyJavaResolverContextWithTypes.child(
containingDeclaration: DeclarationDescriptor, 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.structure.JavaClass
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver
import org.jetbrains.kotlin.util.inn import org.jetbrains.kotlin.util.inn
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule
public abstract class LazyJavaPackageFragmentScope( public abstract class LazyJavaPackageFragmentScope(
c: LazyJavaResolverContext, c: LazyJavaResolverContext,
@@ -46,7 +47,7 @@ public abstract class LazyJavaPackageFragmentScope(
override fun getClassifier(name: Name): ClassifierDescriptor? = classes(name) 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() override fun getImplicitReceiversHierarchy(): List<ReceiverParameterDescriptor> = listOf()
@@ -62,7 +63,9 @@ public class LazyPackageFragmentScopeForJavaPackage(
override fun computeMemberIndex(): MemberIndex = computeMemberIndexForSamConstructors(EMPTY_MEMBER_INDEX) override fun computeMemberIndex(): MemberIndex = computeMemberIndexForSamConstructors(EMPTY_MEMBER_INDEX)
override fun getAllClassNames(): Collection<Name> { 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> = override fun getAllPackageNames(): Collection<Name> =