diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java index bf8aa4bec61..101935aaba6 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForJavaDescriptorResolver.java @@ -149,7 +149,6 @@ public class InjectorForJavaDescriptorResolver { deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver); annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver); - annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder); annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder); javaNamespaceResolver.setCache(traceBasedJavaResolverCache); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java index a9457946b99..7946bdc86ae 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/di/InjectorForTopDownAnalyzerForJvm.java @@ -340,7 +340,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver); annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver); - annotationDescriptorDeserializer.setPsiClassFinder(psiClassFinder); annotationDescriptorDeserializer.setVirtualFileFinder(virtualFileFinder); javaNamespaceResolver.setCache(traceBasedJavaResolverCache); diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java index e46fdc27186..bbf3e442f8d 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/ClassId.java @@ -14,14 +14,6 @@ public final class ClassId { private final FqName packageFqName; private final FqNameUnsafe relativeClassName; - @NotNull - public static ClassId fromFqNameAndContainingDeclaration( - @NotNull FqName fqName, - @NotNull ClassOrNamespaceDescriptor containingDeclaration - ) { - return fromFqNameAndContainingDeclaration(fqName.toUnsafe(), containingDeclaration); - } - @NotNull public static ClassId fromFqNameAndContainingDeclaration( @NotNull FqNameUnsafe fqName, diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/AnnotationDescriptorDeserializer.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/AnnotationDescriptorDeserializer.java index 3650d8a9e91..8a8c95f2062 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/AnnotationDescriptorDeserializer.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/AnnotationDescriptorDeserializer.java @@ -17,12 +17,10 @@ package org.jetbrains.jet.lang.resolve.java.resolver; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiClass; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.asm4.*; import org.jetbrains.asm4.commons.Method; -import org.jetbrains.jet.descriptors.serialization.ClassId; import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil; import org.jetbrains.jet.descriptors.serialization.NameResolver; import org.jetbrains.jet.descriptors.serialization.ProtoBuf; @@ -36,7 +34,6 @@ import org.jetbrains.jet.lang.resolve.constants.ErrorValue; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames; import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; -import org.jetbrains.jet.lang.resolve.java.PsiClassFinder; 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.MemoizedFunctionToNotNull; @@ -51,16 +48,14 @@ import java.util.*; import static org.jetbrains.asm4.ClassReader.*; import static org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule.IGNORE_KOTLIN_SOURCES; -import static org.jetbrains.jet.lang.resolve.java.resolver.DeserializedResolverUtils.*; +import static org.jetbrains.jet.lang.resolve.java.resolver.DeserializedResolverUtils.kotlinFqNameToJavaFqName; +import static org.jetbrains.jet.lang.resolve.java.resolver.DeserializedResolverUtils.naiveKotlinFqName; public class AnnotationDescriptorDeserializer implements AnnotationDeserializer { - private PsiClassFinder psiClassFinder; - private JavaClassResolver javaClassResolver; private VirtualFileFinder virtualFileFinder; - // TODO: a single instance of StorageManager for all computations in resolve-java private final LockBasedStorageManager storageManager = new LockBasedStorageManager(); @@ -79,11 +74,6 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer } }, StorageManager.ReferenceKind.STRONG); - @Inject - public void setPsiClassFinder(PsiClassFinder psiClassFinder) { - this.psiClassFinder = psiClassFinder; - } - @Inject public void setVirtualFileFinder(VirtualFileFinder virtualFileFinder) { this.virtualFileFinder = virtualFileFinder; @@ -122,20 +112,7 @@ public class AnnotationDescriptorDeserializer implements AnnotationDeserializer @NotNull private VirtualFile findVirtualFileByClass(@NotNull ClassDescriptor descriptor) { FqName fqName = kotlinFqNameToJavaFqName(naiveKotlinFqName(descriptor)); - VirtualFile fileForKotlinFile = virtualFileFinder.find(fqName); - if (fileForKotlinFile != null) { - return fileForKotlinFile; - } - PsiClass psiClass = psiClassFinder.findPsiClass(fqName); - if (psiClass == null) { - throw new IllegalStateException("Psi class is not found for class: " + descriptor); - } - VirtualFile outerClassFile = psiClass.getContainingFile().getVirtualFile(); - if (outerClassFile == null) { - throw new IllegalStateException("Outer class file is not found for class: " + descriptor); - } - ClassId id = ClassId.fromFqNameAndContainingDeclaration(fqName, (ClassOrNamespaceDescriptor) descriptor.getContainingDeclaration()); - VirtualFile virtualFile = getVirtualFile(id, outerClassFile); + VirtualFile virtualFile = virtualFileFinder.find(fqName); if (virtualFile == null) { throw new IllegalStateException("Virtual file is not found for class: " + descriptor); } diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DeserializedResolverUtils.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DeserializedResolverUtils.java index 81890d7b0fe..0316cc3b969 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DeserializedResolverUtils.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/DeserializedResolverUtils.java @@ -16,10 +16,7 @@ package org.jetbrains.jet.lang.resolve.java.resolver; -import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.descriptors.serialization.ClassId; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; @@ -51,22 +48,6 @@ public class DeserializedResolverUtils { return FqName.fromSegments(correctedSegments); } - @Nullable - public static VirtualFile getVirtualFile(@NotNull ClassId id, @NotNull VirtualFile outerClassFile) { - String fileExtension = outerClassFile.getExtension(); - if (!"class".equals(fileExtension)) { - return null; - } - FqNameUnsafe relativeClassName = id.getRelativeClassName(); - assert relativeClassName.isSafe() : "Relative class name " + relativeClassName.asString() + " should be safe at this point"; - String classNameWithBucks = relativeClassName.asString().replace(".", "$") + ".class"; - VirtualFile virtualFile = outerClassFile.getParent().findChild(classNameWithBucks); - if (virtualFile == null) { - throw new IllegalStateException("No virtual file for " + id.asSingleFqName().asString()); - } - return virtualFile; - } - @NotNull public static FqNameUnsafe naiveKotlinFqName(@NotNull ClassDescriptor descriptor) { DeclarationDescriptor containing = descriptor.getContainingDeclaration(); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java index 1fd0b3bb76e..95573ec7fed 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java @@ -201,7 +201,7 @@ public final class JavaClassResolver { assert !unresolvedCache.contains(qualifiedName.toUnsafe()) : "We can resolve the class, so it can't be 'unresolved' during parent resolution"; - ClassId id = ClassId.fromFqNameAndContainingDeclaration(qualifiedName, containingDeclaration); + ClassId id = ClassId.fromFqNameAndContainingDeclaration(qualifiedName.toUnsafe(), containingDeclaration); ClassDescriptor deserializedDescriptor = deserializedDescriptorResolver.resolveClass(id, file); if (deserializedDescriptor != null) { cache(javaClassToKotlinFqName(qualifiedName), deserializedDescriptor);