Resolve classes in Deserialization locally

Temporary hacky solution
This commit is contained in:
Pavel V. Talanov
2014-06-16 15:00:57 +04:00
parent 7ee7047753
commit 6c153a9ce2
2 changed files with 8 additions and 3 deletions
@@ -34,7 +34,7 @@ public class LazyJavaPackageFragmentProvider(
private val _module: ModuleDescriptor
) : JavaPackageFragmentProvider {
private val c = LazyJavaResolverContext(
val c = LazyJavaResolverContext(
this,
FragmentClassResolver(),
outerContext.storageManager,
@@ -26,14 +26,19 @@ import org.jetbrains.jet.lang.resolve.name.Name
import org.jetbrains.jet.lang.types.DependencyClassByQualifiedNameResolver
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName
import java.util.Collections
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider
public class JavaDescriptorFinder(
private val javaDescriptorResolver: DependencyClassByQualifiedNameResolver,
private val javaDescriptorResolver: JavaDescriptorResolver,
private val javaPackageFragmentProvider: JavaPackageFragmentProvider
) : DescriptorFinder {
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> {