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 5dc0fe8e05e..9db7c8c16d0 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,7 +28,6 @@ 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, @@ -67,7 +66,7 @@ public class LazyJavaPackageFragmentProvider( } } - internal val topLevelClasses = c.storageManager.createMemoizedFunctionWithNullableValues @lambda { + private val topLevelClasses = c.storageManager.createMemoizedFunctionWithNullableValues @lambda { (jClass: JavaClass): LazyJavaClassDescriptor? -> val fqName = jClass.getFqName() if (fqName == null) return@lambda null @@ -121,18 +120,13 @@ 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 resolveClass(outerClass)?.getUnsubstitutedInnerClassesScope() - } - else { - return getPackageFragment(javaClass.getFqName()!!.parent())?.getMemberScope() + if (outerClass == null) { + return c.lookupBinaryClass(javaClass) ?: topLevelClasses(javaClass) } + 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 56948580a6f..f772b939566 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.packageFragmentProvider.topLevelClasses(jClass) + val classDescriptor = c.javaClassResolver.resolveClass(jClass) assert(classDescriptor == null || classDescriptor.getContainingDeclaration() == packageFragment, "Wrong package fragment for $classDescriptor, expected $packageFragment") classDescriptor