Minor, JavaClass#getOriginKind -> isKotlinLightClass

This commit is contained in:
Alexander Udalov
2016-03-17 18:36:01 +03:00
parent 0ba0e2b10d
commit 0a54464420
6 changed files with 12 additions and 30 deletions
@@ -24,6 +24,7 @@ import com.intellij.psi.search.DelegatingGlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.KtJavaMirrorMarker;
import org.jetbrains.kotlin.idea.KotlinFileType; import org.jetbrains.kotlin.idea.KotlinFileType;
import org.jetbrains.kotlin.load.java.structure.JavaClass; import org.jetbrains.kotlin.load.java.structure.JavaClass;
import org.jetbrains.kotlin.load.java.structure.JavaPackage; 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()); 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); throw new IllegalStateException("Kotlin light classes should not be found by JavaPsiFacade, resolving: " + fqName);
} }
@@ -152,18 +152,8 @@ public class JavaClassImpl extends JavaClassifierImpl<PsiClass> implements JavaC
} }
@Override @Override
@NotNull public boolean isKotlinLightClass() {
public OriginKind getOriginKind() { return getPsi() instanceof KtJavaMirrorMarker;
PsiClass psiClass = getPsi();
if (psiClass instanceof KtJavaMirrorMarker) {
return OriginKind.KOTLIN_LIGHT_CLASS;
}
else if (psiClass instanceof PsiCompiledElement) {
return OriginKind.COMPILED;
}
else {
return OriginKind.SOURCE;
}
} }
@Nullable @Nullable
@@ -59,7 +59,7 @@ class LazyJavaPackageFragmentProvider(
private inner class FragmentClassResolver : LazyJavaClassResolver { private inner class FragmentClassResolver : LazyJavaClassResolver {
override fun resolveClass(javaClass: JavaClass): ClassDescriptor? { override fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
val fqName = javaClass.fqName 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) return c.components.javaResolverCache.getClassResolvedFromSource(fqName)
} }
@@ -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.java.structure.JavaPackage
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
@@ -159,9 +158,9 @@ class LazyJavaPackageScope(
// neither objects nor enum members can be in java package // neither objects nor enum members can be in java package
if (!kindFilter.acceptsKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK)) return listOf() if (!kindFilter.acceptsKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK)) return listOf()
return jPackage.getClasses(nameFilter).asSequence() return jPackage.getClasses(nameFilter).mapNotNull { klass ->
.filter { c -> c.originKind != JavaClass.OriginKind.KOTLIN_LIGHT_CLASS } if (klass.isKotlinLightClass) null else klass.name
.map { c -> c.name }.toList() }
} }
override fun getFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> { override fun getFunctionNames(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<Name> {
@@ -35,6 +35,8 @@ public interface JavaClass extends JavaClassifier, JavaTypeParameterListOwner, J
boolean isEnum(); boolean isEnum();
boolean isKotlinLightClass();
@Nullable @Nullable
JavaClass getOuterClass(); JavaClass getOuterClass();
@@ -49,13 +51,4 @@ public interface JavaClass extends JavaClassifier, JavaTypeParameterListOwner, J
@NotNull @NotNull
Collection<JavaConstructor> getConstructors(); Collection<JavaConstructor> getConstructors();
@NotNull
OriginKind getOriginKind();
enum OriginKind {
COMPILED,
SOURCE,
KOTLIN_LIGHT_CLASS
}
} }
@@ -81,10 +81,9 @@ class ReflectJavaClass(
.map(::ReflectJavaConstructor) .map(::ReflectJavaConstructor)
.toList() .toList()
// TODO: drop OriginKind override fun isKotlinLightClass() = false
override fun getOriginKind() = JavaClass.OriginKind.COMPILED
override fun getName(): Name = Name.identifier(klass.simpleName) override fun getName() = Name.identifier(klass.simpleName)
override fun getTypeParameters() = klass.typeParameters.map { ReflectJavaTypeParameter(it) } override fun getTypeParameters() = klass.typeParameters.map { ReflectJavaTypeParameter(it) }