Remove hack in JavaClassDataFinder
This commit is contained in:
+1
-1
@@ -89,7 +89,7 @@ public class InjectorForJavaDescriptorResolver {
|
|||||||
this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator);
|
this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator);
|
||||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
|
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
|
||||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
|
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
|
||||||
this.javaClassDataFinder = new JavaClassDataFinder(getJavaDescriptorResolver(), lazyJavaPackageFragmentProvider);
|
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||||
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
||||||
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
||||||
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ public class InjectorForLazyResolveWithJava {
|
|||||||
this.jetImportsFactory = new JetImportsFactory();
|
this.jetImportsFactory = new JetImportsFactory();
|
||||||
this.scopeProvider = new ScopeProvider(getResolveSession());
|
this.scopeProvider = new ScopeProvider(getResolveSession());
|
||||||
this.scriptBodyResolver = new ScriptBodyResolver();
|
this.scriptBodyResolver = new ScriptBodyResolver();
|
||||||
this.javaClassDataFinder = new JavaClassDataFinder(getJavaDescriptorResolver(), lazyJavaPackageFragmentProvider);
|
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||||
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
||||||
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
||||||
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
||||||
|
|||||||
+1
-1
@@ -159,7 +159,7 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
|||||||
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator);
|
this.globalJavaResolverContext = new GlobalJavaResolverContext(storageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator);
|
||||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor());
|
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModuleDescriptor());
|
||||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor());
|
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModuleDescriptor());
|
||||||
this.javaClassDataFinder = new JavaClassDataFinder(getJavaDescriptorResolver(), lazyJavaPackageFragmentProvider);
|
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||||
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
|
||||||
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
this.constantDescriptorLoader = new ConstantDescriptorLoader();
|
||||||
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(storageManager, getModuleDescriptor(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(storageManager, getModuleDescriptor(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ public class LazyJavaPackageFragmentProvider(
|
|||||||
private val _module: ModuleDescriptor
|
private val _module: ModuleDescriptor
|
||||||
) : JavaPackageFragmentProvider {
|
) : JavaPackageFragmentProvider {
|
||||||
|
|
||||||
val c = LazyJavaResolverContext(
|
private val c = LazyJavaResolverContext(
|
||||||
this,
|
this,
|
||||||
FragmentClassResolver(),
|
FragmentClassResolver(),
|
||||||
outerContext.storageManager,
|
outerContext.storageManager,
|
||||||
|
|||||||
+3
-15
@@ -18,30 +18,18 @@ package org.jetbrains.jet.lang.resolve.kotlin
|
|||||||
|
|
||||||
import org.jetbrains.jet.descriptors.serialization.ClassId
|
import org.jetbrains.jet.descriptors.serialization.ClassId
|
||||||
import org.jetbrains.jet.descriptors.serialization.ClassDataFinder
|
import org.jetbrains.jet.descriptors.serialization.ClassDataFinder
|
||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name
|
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.DeserializedResolverUtils.kotlinFqNameToJavaFqName
|
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
|
|
||||||
import org.jetbrains.jet.descriptors.serialization.ClassData
|
import org.jetbrains.jet.descriptors.serialization.ClassData
|
||||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil
|
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil
|
||||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedClassDescriptor
|
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader
|
import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader
|
||||||
|
|
||||||
//TODO: correct dependencies
|
|
||||||
public class JavaClassDataFinder(
|
public class JavaClassDataFinder(
|
||||||
private val javaDescriptorResolver: JavaDescriptorResolver,
|
private val kotlinClassFinder: KotlinClassFinder,
|
||||||
private val javaPackageFragmentProvider: JavaPackageFragmentProvider
|
private val deserializedDescriptorResolver: DeserializedDescriptorResolver
|
||||||
) : ClassDataFinder {
|
) : ClassDataFinder {
|
||||||
|
|
||||||
override fun findClassData(classId: ClassId): ClassData? {
|
override fun findClassData(classId: ClassId): ClassData? {
|
||||||
val lazyJavaPackageFragmentProvider = javaDescriptorResolver.getPackageFragmentProvider() as LazyJavaPackageFragmentProvider
|
val kotlinJvmBinaryClass = kotlinClassFinder.findKotlinClass(kotlinFqNameToJavaFqName(classId.asSingleFqName())) ?: return null
|
||||||
val c = lazyJavaPackageFragmentProvider.c
|
|
||||||
val kotlinJvmBinaryClass = c.kotlinClassFinder.findKotlinClass(kotlinFqNameToJavaFqName(classId.asSingleFqName())) ?: return null
|
|
||||||
val deserializedDescriptorResolver = c.deserializedDescriptorResolver
|
|
||||||
val data = deserializedDescriptorResolver.readData(kotlinJvmBinaryClass, KotlinClassHeader.Kind.CLASS) ?: return null
|
val data = deserializedDescriptorResolver.readData(kotlinJvmBinaryClass, KotlinClassHeader.Kind.CLASS) ?: return null
|
||||||
return JavaProtoBufUtil.readClassDataFrom(data)
|
return JavaProtoBufUtil.readClassDataFrom(data)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user