From 137f33c82939b5eaf80ce13451a29de0b746e366 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 31 Oct 2013 20:07:31 +0400 Subject: [PATCH] Do not resolve Kotlin binaries as Java classes --- .../resolve/java/JavaDescriptorResolver.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index 3b6e2871e42..c5fb6bca8d8 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaClassResolver; import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaSubModule; import org.jetbrains.jet.lang.resolve.java.resolver.*; import org.jetbrains.jet.lang.resolve.java.structure.JavaClass; +import org.jetbrains.jet.lang.resolve.java.structure.JavaPackage; import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver; import org.jetbrains.jet.lang.resolve.kotlin.KotlinClassFinder; import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass; @@ -148,7 +149,26 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes subModule = new LazyJavaSubModule( new GlobalJavaResolverContext( storageManager, - javaClassFinder, + new JavaClassFinder() { + @Nullable + @Override + public JavaClass findClass(@NotNull FqName fqName) { + JavaClass javaClass = javaClassFinder.findClass(fqName); + if (javaClass == null) { + return null; + } + if (DescriptorResolverUtils.isCompiledKotlinClassOrPackageClass(javaClass)) { + return null; + } + return javaClass; + } + + @Nullable + @Override + public JavaPackage findPackage(@NotNull FqName fqName) { + return javaClassFinder.findPackage(fqName); + } + }, new LazyJavaClassResolver() { @Override public ClassDescriptor resolveClass(JavaClass aClass) {