KtLightClassForDecompiledDeclaration is now marked by KtLightClassMarker

Rename: KtJavaMirrorMarker -> KtLightClassMarker
Introduce code to be able to tell light classes from source and binaries apart in 'frontend.java'
This commit is contained in:
Pavel V. Talanov
2016-07-28 16:46:37 +03:00
parent d402a15049
commit 30892e0154
12 changed files with 51 additions and 21 deletions
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.load.java.descriptors.SamConstructorDescriptorKindEx
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.JavaPackage
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.name.ClassId
@@ -130,7 +131,7 @@ class LazyJavaPackageScope(
if (!kindFilter.acceptsKinds(DescriptorKindFilter.NON_SINGLETON_CLASSIFIERS_MASK)) return listOf()
return jPackage.getClasses(nameFilter).mapNotNull { klass ->
if (klass.isKotlinLightClass) null else klass.name
if (klass.lightClassOriginKind == LightClassOriginKind.SOURCE) null else klass.name
}
}
@@ -71,13 +71,17 @@ interface JavaClass : JavaClassifier, JavaTypeParameterListOwner, JavaModifierLi
val isInterface: Boolean
val isAnnotationType: Boolean
val isEnum: Boolean
val isKotlinLightClass: Boolean
val lightClassOriginKind: LightClassOriginKind?
val methods: Collection<JavaMethod>
val fields: Collection<JavaField>
val constructors: Collection<JavaConstructor>
}
enum class LightClassOriginKind {
SOURCE, BINARY
}
interface JavaMember : JavaModifierListOwner, JavaAnnotationOwner, JavaNamedElement {
val containingClass: JavaClass
}
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.load.java.components.JavaResolverCache
import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider
import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
class JavaDescriptorResolver(
val packageFragmentProvider: LazyJavaPackageFragmentProvider,
@@ -28,7 +29,7 @@ class JavaDescriptorResolver(
) {
fun resolveClass(javaClass: JavaClass): ClassDescriptor? {
val fqName = javaClass.fqName
if (fqName != null && javaClass.isKotlinLightClass) {
if (fqName != null && javaClass.lightClassOriginKind == LightClassOriginKind.SOURCE) {
return javaResolverCache.getClassResolvedFromSource(fqName)
}