Adding submodule to the context

This commit is contained in:
Andrey Breslav
2013-10-22 21:23:00 +04:00
parent 65316b9fab
commit e0d890853d
3 changed files with 17 additions and 7 deletions
@@ -22,8 +22,8 @@ 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.ModuleDescriptorImpl; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
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.LazyJavaClassResolver; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaClassResolver;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaResolverContext;
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaSubModule; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaSubModule;
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver; import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver; import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
@@ -35,7 +35,6 @@ import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver;
import org.jetbrains.jet.storage.LockBasedStorageManager; import org.jetbrains.jet.storage.LockBasedStorageManager;
import javax.inject.Inject; import javax.inject.Inject;
import java.util.Collections; import java.util.Collections;
import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES; import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES;
@@ -79,7 +78,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
private LazyJavaSubModule getSubModule() { private LazyJavaSubModule getSubModule() {
if (subModule == null) { if (subModule == null) {
subModule = new LazyJavaSubModule( subModule = new LazyJavaSubModule(
new LazyJavaResolverContext( new GlobalJavaResolverContext(
new LockBasedStorageManager(), new LockBasedStorageManager(),
javaClassFinder, javaClassFinder,
new LazyJavaClassResolver() { new LazyJavaClassResolver() {
@@ -9,10 +9,11 @@ import org.jetbrains.jet.lang.resolve.java.structure.JavaClass
import org.jetbrains.jet.lang.descriptors.ClassDescriptor import org.jetbrains.jet.lang.descriptors.ClassDescriptor
public open class LazyJavaSubModule( public open class LazyJavaSubModule(
private val outerContext: LazyJavaResolverContext, private val outerContext: GlobalJavaResolverContext,
module: ModuleDescriptor private val module: ModuleDescriptor
) { ) {
private val c = LazyJavaResolverContext( private val c = LazyJavaResolverContext(
this,
outerContext.storageManager, outerContext.storageManager,
outerContext.finder, outerContext.finder,
SubModuleClassResolver(), SubModuleClassResolver(),
@@ -26,16 +26,25 @@ import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaAnnotationDe
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor
import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver import org.jetbrains.jet.lang.resolve.java.resolver.ExternalAnnotationResolver
open class LazyJavaResolverContext( open class GlobalJavaResolverContext(
val storageManager: StorageManager, val storageManager: StorageManager,
val finder: JavaClassFinder, val finder: JavaClassFinder,
val javaClassResolver: LazyJavaClassResolver, val javaClassResolver: LazyJavaClassResolver,
val externalAnnotationResolver: ExternalAnnotationResolver val externalAnnotationResolver: ExternalAnnotationResolver
) )
open class LazyJavaResolverContext(
val subModule: LazyJavaSubModule,
storageManager: StorageManager,
finder: JavaClassFinder,
javaClassResolver: LazyJavaClassResolver,
externalAnnotationResolver: ExternalAnnotationResolver
) : GlobalJavaResolverContext(storageManager, finder, javaClassResolver, externalAnnotationResolver)
fun LazyJavaResolverContext.withTypes( fun LazyJavaResolverContext.withTypes(
typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY
) = LazyJavaResolverContextWithTypes( ) = LazyJavaResolverContextWithTypes(
subModule,
storageManager, storageManager,
finder, finder,
javaClassResolver, javaClassResolver,
@@ -44,13 +53,14 @@ fun LazyJavaResolverContext.withTypes(
typeParameterResolver) typeParameterResolver)
class LazyJavaResolverContextWithTypes( class LazyJavaResolverContextWithTypes(
subModule: LazyJavaSubModule,
storageManager: StorageManager, storageManager: StorageManager,
finder: JavaClassFinder, finder: JavaClassFinder,
javaClassResolver: LazyJavaClassResolver, javaClassResolver: LazyJavaClassResolver,
externalAnnotationResolver: ExternalAnnotationResolver, externalAnnotationResolver: ExternalAnnotationResolver,
val typeResolver: LazyJavaTypeResolver, val typeResolver: LazyJavaTypeResolver,
val typeParameterResolver: TypeParameterResolver val typeParameterResolver: TypeParameterResolver
) : LazyJavaResolverContext(storageManager, finder, javaClassResolver, externalAnnotationResolver) ) : LazyJavaResolverContext(subModule, storageManager, finder, javaClassResolver, externalAnnotationResolver)
fun LazyJavaResolverContextWithTypes.child( fun LazyJavaResolverContextWithTypes.child(
containingDeclaration: DeclarationDescriptor, containingDeclaration: DeclarationDescriptor,