JavaDescriptorResolver always uses lazy mode
This commit is contained in:
committed by
Alexander Udalov
parent
76c722b81c
commit
9f918d48b5
+49
-126
@@ -38,86 +38,55 @@ import javax.inject.Inject;
|
||||
import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES;
|
||||
|
||||
public class JavaDescriptorResolver implements DependencyClassByQualifiedNameResolver {
|
||||
private final boolean LAZY;
|
||||
|
||||
{
|
||||
LAZY = true;
|
||||
}
|
||||
|
||||
public static final Name JAVA_ROOT = Name.special("<java_root>");
|
||||
|
||||
private StorageManager storageManager;
|
||||
private JavaClassResolver classResolver;
|
||||
private JavaPackageFragmentProvider packageFragmentProvider;
|
||||
private JavaClassFinder javaClassFinder;
|
||||
private ExternalAnnotationResolver externalAnnotationResolver;
|
||||
private LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
private ExternalSignatureResolver externalSignatureResolver;
|
||||
private ErrorReporter errorReporter;
|
||||
private MethodSignatureChecker signatureChecker;
|
||||
private JavaResolverCache javaResolverCache;
|
||||
private DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private KotlinClassFinder kotlinClassFinder;
|
||||
private ModuleDescriptor module;
|
||||
private final ModuleDescriptor module;
|
||||
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
|
||||
@Inject
|
||||
public void setStorageManager(StorageManager storageManager) {
|
||||
this.storageManager = storageManager;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setClassResolver(JavaClassResolver classResolver) {
|
||||
this.classResolver = classResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setPackageFragmentProvider(JavaPackageFragmentProvider packageFragmentProvider) {
|
||||
this.packageFragmentProvider = packageFragmentProvider;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setJavaClassFinder(JavaClassFinder javaClassFinder) {
|
||||
this.javaClassFinder = javaClassFinder;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setExternalAnnotationResolver(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;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setDeserializedDescriptorResolver(DeserializedDescriptorResolver deserializedDescriptorResolver) {
|
||||
this.deserializedDescriptorResolver = deserializedDescriptorResolver;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setKotlinClassFinder(KotlinClassFinder kotlinClassFinder) {
|
||||
this.kotlinClassFinder = kotlinClassFinder;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setModule(@NotNull ModuleDescriptor module) {
|
||||
public JavaDescriptorResolver(
|
||||
StorageManager storageManager,
|
||||
JavaClassFinder javaClassFinder,
|
||||
ExternalAnnotationResolver externalAnnotationResolver,
|
||||
ExternalSignatureResolver externalSignatureResolver,
|
||||
ErrorReporter errorReporter,
|
||||
MethodSignatureChecker signatureChecker,
|
||||
final JavaResolverCache javaResolverCache,
|
||||
DeserializedDescriptorResolver deserializedDescriptorResolver,
|
||||
KotlinClassFinder kotlinClassFinder,
|
||||
ModuleDescriptor module
|
||||
) {
|
||||
this.module = module;
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(
|
||||
new GlobalJavaResolverContext(
|
||||
storageManager,
|
||||
javaClassFinder,
|
||||
kotlinClassFinder,
|
||||
deserializedDescriptorResolver,
|
||||
new LazyJavaClassResolver() {
|
||||
@Override
|
||||
public ClassDescriptor resolveClass(JavaClass aClass) {
|
||||
FqName fqName = aClass.getFqName();
|
||||
if (fqName != null) {
|
||||
return resolveClassByFqName(fqName);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassDescriptor resolveClassByFqName(FqName fqName) {
|
||||
return javaResolverCache.getClassResolvedFromSource(fqName);
|
||||
}
|
||||
},
|
||||
externalAnnotationResolver,
|
||||
externalSignatureResolver,
|
||||
errorReporter,
|
||||
signatureChecker,
|
||||
javaResolverCache,
|
||||
this
|
||||
),
|
||||
module
|
||||
);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -125,49 +94,14 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
return module;
|
||||
}
|
||||
|
||||
private LazyJavaPackageFragmentProvider getLazyJavaPackageFragmentProvider() {
|
||||
if (lazyJavaPackageFragmentProvider == null) {
|
||||
lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(
|
||||
new GlobalJavaResolverContext(
|
||||
storageManager,
|
||||
javaClassFinder,
|
||||
kotlinClassFinder,
|
||||
deserializedDescriptorResolver,
|
||||
new LazyJavaClassResolver() {
|
||||
@Override
|
||||
public ClassDescriptor resolveClass(JavaClass aClass) {
|
||||
FqName fqName = aClass.getFqName();
|
||||
if (fqName != null) {
|
||||
return resolveClassByFqName(fqName);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClassDescriptor resolveClassByFqName(FqName fqName) {
|
||||
return javaResolverCache.getClassResolvedFromSource(fqName);
|
||||
}
|
||||
},
|
||||
externalAnnotationResolver,
|
||||
externalSignatureResolver,
|
||||
errorReporter,
|
||||
signatureChecker,
|
||||
javaResolverCache,
|
||||
this
|
||||
),
|
||||
module
|
||||
);
|
||||
}
|
||||
@NotNull
|
||||
public LazyJavaPackageFragmentProvider getPackageFragmentProvider() {
|
||||
return lazyJavaPackageFragmentProvider;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public ClassDescriptor resolveClass(@NotNull FqName qualifiedName, @NotNull DescriptorSearchRule searchRule) {
|
||||
if (LAZY) {
|
||||
return getLazyJavaPackageFragmentProvider().getClass(qualifiedName);
|
||||
}
|
||||
return classResolver.resolveClass(qualifiedName, searchRule);
|
||||
return getPackageFragmentProvider().getClass(qualifiedName);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -175,19 +109,8 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
|
||||
return resolveClass(qualifiedName, IGNORE_KOTLIN_SOURCES);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JavaPackageFragmentProvider getPackageFragmentProvider() {
|
||||
if (LAZY) {
|
||||
return getLazyJavaPackageFragmentProvider();
|
||||
}
|
||||
return packageFragmentProvider;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PackageFragmentDescriptor getPackageFragment(@NotNull FqName fqName) {
|
||||
if (LAZY) {
|
||||
return getLazyJavaPackageFragmentProvider().getPackageFragment(fqName);
|
||||
}
|
||||
return packageFragmentProvider.getPackageFragment(fqName);
|
||||
return getPackageFragmentProvider().getPackageFragment(fqName);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user