Resolve classes in Deserialization locally
Temporary hacky solution
This commit is contained in:
+1
-1
@@ -34,7 +34,7 @@ public class LazyJavaPackageFragmentProvider(
|
|||||||
private val _module: ModuleDescriptor
|
private val _module: ModuleDescriptor
|
||||||
) : JavaPackageFragmentProvider {
|
) : JavaPackageFragmentProvider {
|
||||||
|
|
||||||
private val c = LazyJavaResolverContext(
|
val c = LazyJavaResolverContext(
|
||||||
this,
|
this,
|
||||||
FragmentClassResolver(),
|
FragmentClassResolver(),
|
||||||
outerContext.storageManager,
|
outerContext.storageManager,
|
||||||
|
|||||||
+7
-2
@@ -26,14 +26,19 @@ import org.jetbrains.jet.lang.resolve.name.Name
|
|||||||
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver
|
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName
|
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName
|
||||||
import java.util.Collections
|
import java.util.Collections
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider
|
||||||
|
|
||||||
public class JavaDescriptorFinder(
|
public class JavaDescriptorFinder(
|
||||||
private val javaDescriptorResolver: DependencyClassByQualifiedNameResolver,
|
private val javaDescriptorResolver: JavaDescriptorResolver,
|
||||||
private val javaPackageFragmentProvider: JavaPackageFragmentProvider
|
private val javaPackageFragmentProvider: JavaPackageFragmentProvider
|
||||||
) : DescriptorFinder {
|
) : DescriptorFinder {
|
||||||
|
|
||||||
override fun findClass(classId: ClassId): ClassDescriptor? {
|
override fun findClass(classId: ClassId): ClassDescriptor? {
|
||||||
return javaDescriptorResolver.resolveClass(kotlinFqNameToJavaFqName(classId.asSingleFqName()))
|
val lazyJavaPackageFragmentProvider = javaDescriptorResolver.getPackageFragmentProvider() as LazyJavaPackageFragmentProvider
|
||||||
|
val c = lazyJavaPackageFragmentProvider.c
|
||||||
|
val kotlinJvmBinaryClass = c.kotlinClassFinder.findKotlinClass(kotlinFqNameToJavaFqName(classId.asSingleFqName())) ?: return null
|
||||||
|
return lazyJavaPackageFragmentProvider.resolveKotlinBinaryClass(kotlinJvmBinaryClass)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getClassNames(packageName: FqName): Collection<Name> {
|
override fun getClassNames(packageName: FqName): Collection<Name> {
|
||||||
|
|||||||
Reference in New Issue
Block a user