Do not build descriptors for built-in classes
This commit is contained in:
+9
-1
@@ -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.LazyPackageFragmentForJavaPackage
|
||||||
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyPackageFragmentForJavaClass
|
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.JavaNamespaceResolver
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver
|
||||||
|
|
||||||
public open class LazyJavaSubModule(
|
public open class LazyJavaSubModule(
|
||||||
private val outerContext: GlobalJavaResolverContext,
|
private val outerContext: GlobalJavaResolverContext,
|
||||||
@@ -52,6 +53,13 @@ public open class LazyJavaSubModule(
|
|||||||
private inner class SubModuleClassResolver : LazyJavaClassResolver {
|
private inner class SubModuleClassResolver : LazyJavaClassResolver {
|
||||||
override fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
|
override fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
|
||||||
// TODO: there's no notion of module separation here. We must refuse to resolve classes from other modules
|
// 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 outer = javaClass.getOuterClass()
|
||||||
val scope = if (outer != null) {
|
val scope = if (outer != null) {
|
||||||
val outerClass = resolveClass(outer)
|
val outerClass = resolveClass(outer)
|
||||||
@@ -59,7 +67,7 @@ public open class LazyJavaSubModule(
|
|||||||
outerClass.getUnsubstitutedInnerClassesScope()
|
outerClass.getUnsubstitutedInnerClassesScope()
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val outerPackage = getPackageFragment(javaClass.getFqName()!!.parent())
|
val outerPackage = getPackageFragment(fqName!!.parent())
|
||||||
if (outerPackage == null) return outerContext.javaClassResolver.resolveClass(javaClass)
|
if (outerPackage == null) return outerContext.javaClassResolver.resolveClass(javaClass)
|
||||||
outerPackage.getMemberScope()
|
outerPackage.getMemberScope()
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -168,7 +168,7 @@ public final class JavaClassResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@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;
|
if (!qualifiedName.firstSegmentIs(KotlinBuiltIns.BUILT_INS_PACKAGE_NAME)) return null;
|
||||||
|
|
||||||
List<Name> segments = qualifiedName.pathSegments();
|
List<Name> segments = qualifiedName.pathSegments();
|
||||||
|
|||||||
Reference in New Issue
Block a user