All extra services delivered through contexts

This commit is contained in:
Andrey Breslav
2013-10-23 15:15:29 +04:00
parent 297bfd2903
commit b3f9dddc84
3 changed files with 63 additions and 12 deletions
@@ -25,9 +25,7 @@ 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;
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.*;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass; import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
@@ -53,6 +51,10 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
private JavaClassFinder javaClassFinder; private JavaClassFinder javaClassFinder;
private ExternalAnnotationResolver externalAnnotationResolver; private ExternalAnnotationResolver externalAnnotationResolver;
private LazyJavaSubModule subModule; private LazyJavaSubModule subModule;
private ExternalSignatureResolver externalSignatureResolver;
private ErrorReporter errorReporter;
private MethodSignatureChecker signatureChecker;
private JavaResolverCache javaResolverCache;
@Inject @Inject
public void setClassResolver(JavaClassResolver classResolver) { public void setClassResolver(JavaClassResolver classResolver) {
@@ -74,6 +76,26 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
this.externalAnnotationResolver = externalAnnotationResolver; this.externalAnnotationResolver = externalAnnotationResolver;
} }
@Inject
public void setExternalSignatureResolver(ExternalSignatureResolver externalSignatureResolver) {
this.externalSignatureResolver = externalSignatureResolver;
}
@Inject
public void setErrorReporter(ErrorReporter errorReporter) {
this.errorReporter = errorReporter;
}
@Inject
public void setSignatureChecker(MethodSignatureChecker signatureChecker) {
this.signatureChecker = signatureChecker;
}
@Inject
public void setJavaResolverCache(JavaResolverCache javaResolverCache) {
this.javaResolverCache = javaResolverCache;
}
@NotNull @NotNull
private LazyJavaSubModule getSubModule() { private LazyJavaSubModule getSubModule() {
if (subModule == null) { if (subModule == null) {
@@ -92,7 +114,11 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
return null; return null;
} }
}, },
externalAnnotationResolver externalAnnotationResolver,
externalSignatureResolver,
errorReporter,
signatureChecker,
javaResolverCache
), ),
new ModuleDescriptorImpl(Name.special("<java module>"), Collections.<ImportPath>emptyList(), PlatformToKotlinClassMap.EMPTY) new ModuleDescriptorImpl(Name.special("<java module>"), Collections.<ImportPath>emptyList(), PlatformToKotlinClassMap.EMPTY)
); );
@@ -19,7 +19,11 @@ public open class LazyJavaSubModule(
outerContext.storageManager, outerContext.storageManager,
outerContext.finder, outerContext.finder,
SubModuleClassResolver(), SubModuleClassResolver(),
outerContext.externalAnnotationResolver outerContext.externalAnnotationResolver,
outerContext.externalSignatureResolver,
outerContext.errorReporter,
outerContext.methodSignatureChecker,
outerContext.javaResolverCache
) )
private val _packageFragments: MemoizedFunctionToNullable<FqName, NamespaceDescriptor> = c.storageManager.createMemoizedFunctionWithNullableValues { private val _packageFragments: MemoizedFunctionToNullable<FqName, NamespaceDescriptor> = c.storageManager.createMemoizedFunctionWithNullableValues {
@@ -21,16 +21,21 @@ import org.jetbrains.jet.lang.resolve.java.lazy.types.LazyJavaTypeResolver
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import org.jetbrains.jet.lang.resolve.java.structure.JavaTypeParameter import org.jetbrains.jet.lang.resolve.java.structure.JavaTypeParameter
import org.jetbrains.jet.lang.resolve.java.JavaClassFinder import org.jetbrains.jet.lang.resolve.java.JavaClassFinder
import org.jetbrains.jet.lang.resolve.java.structure.JavaAnnotation
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaAnnotationDescriptor
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
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
open class GlobalJavaResolverContext( 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,
val externalSignatureResolver: ExternalSignatureResolver,
val errorReporter: ErrorReporter,
val methodSignatureChecker: MethodSignatureChecker,
val javaResolverCache: JavaResolverCache
) )
open class LazyJavaResolverContext( open class LazyJavaResolverContext(
@@ -38,8 +43,14 @@ open class LazyJavaResolverContext(
storageManager: StorageManager, storageManager: StorageManager,
finder: JavaClassFinder, finder: JavaClassFinder,
javaClassResolver: LazyJavaClassResolver, javaClassResolver: LazyJavaClassResolver,
externalAnnotationResolver: ExternalAnnotationResolver externalAnnotationResolver: ExternalAnnotationResolver,
) : GlobalJavaResolverContext(storageManager, finder, javaClassResolver, externalAnnotationResolver) externalSignatureResolver: ExternalSignatureResolver,
errorReporter: ErrorReporter,
methodSignatureChecker: MethodSignatureChecker,
javaResolverCache: JavaResolverCache
) : GlobalJavaResolverContext(storageManager, finder, javaClassResolver,
externalAnnotationResolver, externalSignatureResolver,
errorReporter, methodSignatureChecker, javaResolverCache)
fun LazyJavaResolverContext.withTypes( fun LazyJavaResolverContext.withTypes(
typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY typeParameterResolver: TypeParameterResolver = TypeParameterResolver.EMPTY
@@ -49,6 +60,10 @@ fun LazyJavaResolverContext.withTypes(
finder, finder,
javaClassResolver, javaClassResolver,
externalAnnotationResolver, externalAnnotationResolver,
externalSignatureResolver,
errorReporter,
methodSignatureChecker,
javaResolverCache,
LazyJavaTypeResolver(this, typeParameterResolver), LazyJavaTypeResolver(this, typeParameterResolver),
typeParameterResolver) typeParameterResolver)
@@ -58,9 +73,15 @@ class LazyJavaResolverContextWithTypes(
finder: JavaClassFinder, finder: JavaClassFinder,
javaClassResolver: LazyJavaClassResolver, javaClassResolver: LazyJavaClassResolver,
externalAnnotationResolver: ExternalAnnotationResolver, externalAnnotationResolver: ExternalAnnotationResolver,
externalSignatureResolver: ExternalSignatureResolver,
errorReporter: ErrorReporter,
methodSignatureChecker: MethodSignatureChecker,
javaResolverCache: JavaResolverCache,
val typeResolver: LazyJavaTypeResolver, val typeResolver: LazyJavaTypeResolver,
val typeParameterResolver: TypeParameterResolver val typeParameterResolver: TypeParameterResolver
) : LazyJavaResolverContext(subModule, storageManager, finder, javaClassResolver, externalAnnotationResolver) ) : LazyJavaResolverContext(subModule, storageManager, finder, javaClassResolver,
externalAnnotationResolver, externalSignatureResolver,
errorReporter, methodSignatureChecker, javaResolverCache)
fun LazyJavaResolverContextWithTypes.child( fun LazyJavaResolverContextWithTypes.child(
containingDeclaration: DeclarationDescriptor, containingDeclaration: DeclarationDescriptor,