From ec1960a960ce99d4952d83972908951952314f65 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 13 Nov 2013 15:22:17 +0400 Subject: [PATCH] Detect Kotlin binaries by actually loading binary data, not simply checking whether the annotation is present This is needed because even if the annotation is present, the ABI version may be wrong, and we should load such class as a Java class anyways --- .../jet/lang/resolve/java/JavaDescriptorResolver.java | 10 +++++++++- 1 file changed, 9 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 c5fb6bca8d8..b42520a4f32 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 @@ -153,11 +153,19 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes @Nullable @Override public JavaClass findClass(@NotNull FqName fqName) { + // Do not look for JavaClasses for Kotlin binaries + if (kotlinClassesFromBinaries.invoke(fqName) != null + || kotlinNamespacesFromBinaries.invoke(fqName) != null) { + return null; + } + JavaClass javaClass = javaClassFinder.findClass(fqName); if (javaClass == null) { return null; } - if (DescriptorResolverUtils.isCompiledKotlinClassOrPackageClass(javaClass)) { + + // Light classes are not proper binaries either + if (javaClass.getOriginKind() == JavaClass.OriginKind.KOTLIN_LIGHT_CLASS) { return null; } return javaClass;