Use VirtualFileFinder in AnnotationDescriptorDeserializer
This commit is contained in:
@@ -125,6 +125,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
|
|
||||||
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
||||||
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
||||||
|
annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||||
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||||
|
|||||||
@@ -312,6 +312,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
|
|
||||||
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
|
||||||
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder);
|
||||||
|
annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder);
|
||||||
|
|
||||||
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
|
||||||
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
javaNamespaceResolver.setJavaDescriptorResolver(javaDescriptorResolver);
|
||||||
|
|||||||
+14
-5
@@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
|||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
||||||
import org.jetbrains.jet.lang.resolve.java.*;
|
import org.jetbrains.jet.lang.resolve.java.*;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.vfilefinder.VirtualFileFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.MemoizedFunctionToNotNull;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.MemoizedFunctionToNotNull;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager;
|
import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager;
|
||||||
@@ -52,6 +53,9 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
|||||||
|
|
||||||
private JavaClassResolver javaClassResolver;
|
private JavaClassResolver javaClassResolver;
|
||||||
|
|
||||||
|
private VirtualFileFinder virtualFileFinder;
|
||||||
|
|
||||||
|
|
||||||
// TODO: a single instance of StorageManager for all computations in resolve-java
|
// TODO: a single instance of StorageManager for all computations in resolve-java
|
||||||
private final LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
private final LockBasedStorageManager storageManager = new LockBasedStorageManager();
|
||||||
|
|
||||||
@@ -75,6 +79,11 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
|||||||
this.psiClassFinder = psiClassFinder;
|
this.psiClassFinder = psiClassFinder;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public void setVirtualFileFinder(VirtualFileFinder virtualFileFinder) {
|
||||||
|
this.virtualFileFinder = virtualFileFinder;
|
||||||
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public void setJavaClassResolver(JavaClassResolver javaClassResolver) {
|
public void setJavaClassResolver(JavaClassResolver javaClassResolver) {
|
||||||
this.javaClassResolver = javaClassResolver;
|
this.javaClassResolver = javaClassResolver;
|
||||||
@@ -108,6 +117,10 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
|||||||
@NotNull
|
@NotNull
|
||||||
private VirtualFile findVirtualFileByClass(@NotNull ClassDescriptor descriptor) {
|
private VirtualFile findVirtualFileByClass(@NotNull ClassDescriptor descriptor) {
|
||||||
FqName fqName = kotlinFqNameToJavaFqName(naiveKotlinFqName(descriptor));
|
FqName fqName = kotlinFqNameToJavaFqName(naiveKotlinFqName(descriptor));
|
||||||
|
VirtualFile fileForKotlinFile = virtualFileFinder.find(fqName);
|
||||||
|
if (fileForKotlinFile != null) {
|
||||||
|
return fileForKotlinFile;
|
||||||
|
}
|
||||||
PsiClass psiClass = psiClassFinder.findPsiClass(fqName, PsiClassFinder.RuntimeClassesHandleMode.IGNORE /* TODO: ?! */);
|
PsiClass psiClass = psiClassFinder.findPsiClass(fqName, PsiClassFinder.RuntimeClassesHandleMode.IGNORE /* TODO: ?! */);
|
||||||
if (psiClass == null) {
|
if (psiClass == null) {
|
||||||
throw new IllegalStateException("Psi class is not found for class: " + descriptor);
|
throw new IllegalStateException("Psi class is not found for class: " + descriptor);
|
||||||
@@ -127,11 +140,7 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer
|
|||||||
@NotNull
|
@NotNull
|
||||||
private VirtualFile findVirtualFileByPackage(@NotNull NamespaceDescriptor descriptor) {
|
private VirtualFile findVirtualFileByPackage(@NotNull NamespaceDescriptor descriptor) {
|
||||||
FqName fqName = PackageClassUtils.getPackageClassFqName(DescriptorUtils.getFQName(descriptor).toSafe());
|
FqName fqName = PackageClassUtils.getPackageClassFqName(DescriptorUtils.getFQName(descriptor).toSafe());
|
||||||
PsiClass psiClass = psiClassFinder.findPsiClass(fqName, PsiClassFinder.RuntimeClassesHandleMode.IGNORE /* TODO: ?! */);
|
VirtualFile virtualFile = virtualFileFinder.find(fqName);
|
||||||
if (psiClass == null) {
|
|
||||||
throw new IllegalStateException("Psi class is not found for package: " + descriptor);
|
|
||||||
}
|
|
||||||
VirtualFile virtualFile = psiClass.getContainingFile().getVirtualFile();
|
|
||||||
if (virtualFile == null) {
|
if (virtualFile == null) {
|
||||||
throw new IllegalStateException("Virtual file is not found for package: " + descriptor);
|
throw new IllegalStateException("Virtual file is not found for package: " + descriptor);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user