diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt index af08b8f8085..033892b7586 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt @@ -9,6 +9,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyPackageFragmentForJavaPackage import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyPackageFragmentForJavaClass import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver +import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver public open class LazyJavaSubModule( private val outerContext: GlobalJavaResolverContext, @@ -52,6 +53,13 @@ public open class LazyJavaSubModule( private inner class SubModuleClassResolver : LazyJavaClassResolver { override fun resolveClass(javaClass: JavaClass): ClassDescriptor? { // TODO: there's no notion of module separation here. We must refuse to resolve classes from other modules + val fqName = javaClass.getFqName() + if (fqName != null) { + // TODO: this should be handled by module seperation logic + val builtinClass = JavaClassResolver.getKotlinBuiltinClassDescriptor(fqName) + if (builtinClass != null) return builtinClass + } + val outer = javaClass.getOuterClass() val scope = if (outer != null) { val outerClass = resolveClass(outer) @@ -59,7 +67,7 @@ public open class LazyJavaSubModule( outerClass.getUnsubstitutedInnerClassesScope() } else { - val outerPackage = getPackageFragment(javaClass.getFqName()!!.parent()) + val outerPackage = getPackageFragment(fqName!!.parent()) if (outerPackage == null) return outerContext.javaClassResolver.resolveClass(javaClass) outerPackage.getMemberScope() } 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 3969c4e596b..5a08c42f859 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 @@ -168,7 +168,7 @@ public final class JavaClassResolver { } @Nullable - private static ClassDescriptor getKotlinBuiltinClassDescriptor(@NotNull FqName qualifiedName) { + public static ClassDescriptor getKotlinBuiltinClassDescriptor(@NotNull FqName qualifiedName) { if (!qualifiedName.firstSegmentIs(KotlinBuiltIns.BUILT_INS_PACKAGE_NAME)) return null; List segments = qualifiedName.pathSegments();