From 5ab979864b60df19c4cb5e6da614d52549b2b2af Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 15 May 2014 17:14:29 +0400 Subject: [PATCH] Temporarily revert changes that create separate class descriptors for each PSI class --- .../lazy/LazyJavaPackageFragmentProvider.kt | 18 ++++++++++++------ .../LazyJavaPackageFragmentScope.kt | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt index 9db7c8c16d0..5dc0fe8e05e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt @@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaPackageFragment import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaClassDescriptor +import org.jetbrains.jet.lang.resolve.scopes.JetScope public class LazyJavaPackageFragmentProvider( outerContext: GlobalJavaResolverContext, @@ -66,7 +67,7 @@ public class LazyJavaPackageFragmentProvider( } } - private val topLevelClasses = c.storageManager.createMemoizedFunctionWithNullableValues @lambda { + internal val topLevelClasses = c.storageManager.createMemoizedFunctionWithNullableValues @lambda { (jClass: JavaClass): LazyJavaClassDescriptor? -> val fqName = jClass.getFqName() if (fqName == null) return@lambda null @@ -120,13 +121,18 @@ public class LazyJavaPackageFragmentProvider( return c.javaResolverCache.getClassResolvedFromSource(fqName) } } + val resolvedClassifier = getContainingScope(javaClass)?.getClassifier(javaClass.getName()) + return resolvedClassifier as? ClassDescriptor ?: c.javaResolverCache.getClass(javaClass) + } + + private fun getContainingScope(javaClass: JavaClass): JetScope? { val outerClass = javaClass.getOuterClass() - if (outerClass == null) { - return c.lookupBinaryClass(javaClass) ?: topLevelClasses(javaClass) + if (outerClass != null) { + return resolveClass(outerClass)?.getUnsubstitutedInnerClassesScope() + } + else { + return getPackageFragment(javaClass.getFqName()!!.parent())?.getMemberScope() } - val outerClassScope = resolveClass(outerClass)?.getUnsubstitutedInnerClassesScope() - val nestedClass = outerClassScope?.getClassifier(javaClass.getName()) as? ClassDescriptor - return nestedClass ?: c.javaResolverCache.getClass(javaClass) } override fun resolveClassByFqName(fqName: FqName): ClassDescriptor? { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt index f772b939566..56948580a6f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt @@ -55,7 +55,7 @@ public abstract class LazyJavaPackageFragmentScope( if (cached != null) cached else { - val classDescriptor = c.javaClassResolver.resolveClass(jClass) + val classDescriptor = c.packageFragmentProvider.topLevelClasses(jClass) assert(classDescriptor == null || classDescriptor.getContainingDeclaration() == packageFragment, "Wrong package fragment for $classDescriptor, expected $packageFragment") classDescriptor