diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java index db5cf2d2e36..4759acf924e 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/JavaClassFinderImpl.java @@ -24,6 +24,7 @@ import com.intellij.psi.search.DelegatingGlobalSearchScope; import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.asJava.KtJavaMirrorMarker; import org.jetbrains.kotlin.idea.KotlinFileType; import org.jetbrains.kotlin.load.java.structure.JavaClass; import org.jetbrains.kotlin.load.java.structure.JavaPackage; @@ -96,7 +97,7 @@ public class JavaClassFinderImpl implements JavaClassFinder { throw new IllegalStateException("Requested " + fqName + ", got " + javaClass.getFqName()); } - if (javaClass.getOriginKind() == JavaClass.OriginKind.KOTLIN_LIGHT_CLASS) { + if (psiClass instanceof KtJavaMirrorMarker) { throw new IllegalStateException("Kotlin light classes should not be found by JavaPsiFacade, resolving: " + fqName); } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.java index 638aadc2dc0..13ec66dccd7 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.java @@ -152,18 +152,8 @@ public class JavaClassImpl extends JavaClassifierImpl implements JavaC } @Override - @NotNull - public OriginKind getOriginKind() { - PsiClass psiClass = getPsi(); - if (psiClass instanceof KtJavaMirrorMarker) { - return OriginKind.KOTLIN_LIGHT_CLASS; - } - else if (psiClass instanceof PsiCompiledElement) { - return OriginKind.COMPILED; - } - else { - return OriginKind.SOURCE; - } + public boolean isKotlinLightClass() { + return getPsi() instanceof KtJavaMirrorMarker; } @Nullable diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt index cbfeaa1699a..92c06d883c3 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/LazyJavaPackageFragmentProvider.kt @@ -59,7 +59,7 @@ class LazyJavaPackageFragmentProvider( private inner class FragmentClassResolver : LazyJavaClassResolver { override fun resolveClass(javaClass: JavaClass): ClassDescriptor? { val fqName = javaClass.fqName - if (fqName != null && javaClass.originKind == JavaClass.OriginKind.KOTLIN_LIGHT_CLASS) { + if (fqName != null && javaClass.isKotlinLightClass) { return c.components.javaResolverCache.getClassResolvedFromSource(fqName) } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt index bf071940701..7c32e04e765 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/lazy/descriptors/LazyJavaPackageScope.kt @@ -27,7 +27,6 @@ import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaPackage import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter @@ -159,9 +158,9 @@ class LazyJavaPackageScope( // neither objects nor enum members can be in java package if (!kindFilter.acceptsKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK)) return listOf() - return jPackage.getClasses(nameFilter).asSequence() - .filter { c -> c.originKind != JavaClass.OriginKind.KOTLIN_LIGHT_CLASS } - .map { c -> c.name }.toList() + return jPackage.getClasses(nameFilter).mapNotNull { klass -> + if (klass.isKotlinLightClass) null else klass.name + } } override fun getFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection { diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/JavaClass.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/JavaClass.java index 2de1f0d546b..32bb37372bb 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/JavaClass.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/structure/JavaClass.java @@ -35,6 +35,8 @@ public interface JavaClass extends JavaClassifier, JavaTypeParameterListOwner, J boolean isEnum(); + boolean isKotlinLightClass(); + @Nullable JavaClass getOuterClass(); @@ -49,13 +51,4 @@ public interface JavaClass extends JavaClassifier, JavaTypeParameterListOwner, J @NotNull Collection getConstructors(); - - @NotNull - OriginKind getOriginKind(); - - enum OriginKind { - COMPILED, - SOURCE, - KOTLIN_LIGHT_CLASS - } } diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClass.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClass.kt index 01fd9a9366c..803cea99f44 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClass.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/java/structure/reflect/ReflectJavaClass.kt @@ -81,10 +81,9 @@ class ReflectJavaClass( .map(::ReflectJavaConstructor) .toList() - // TODO: drop OriginKind - override fun getOriginKind() = JavaClass.OriginKind.COMPILED + override fun isKotlinLightClass() = false - override fun getName(): Name = Name.identifier(klass.simpleName) + override fun getName() = Name.identifier(klass.simpleName) override fun getTypeParameters() = klass.typeParameters.map { ReflectJavaTypeParameter(it) }