LTDA: Initialize project components with resolve session after injector construction is finished
This commit is contained in:
+10
@@ -33,6 +33,7 @@ import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaPropertyInitialize
|
||||
import org.jetbrains.jet.lang.resolve.java.sam.SamConversionResolverImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSourceElementFactoryImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.SingleModuleClassResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolverPostConstruct;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
|
||||
@@ -64,6 +65,7 @@ public class InjectorForJavaDescriptorResolver {
|
||||
private final SamConversionResolverImpl samConversionResolver;
|
||||
private final JavaSourceElementFactoryImpl javaSourceElementFactory;
|
||||
private final SingleModuleClassResolver singleModuleClassResolver;
|
||||
private final JavaDescriptorResolverPostConstruct javaDescriptorResolverPostConstruct;
|
||||
private final VirtualFileFinder virtualFileFinder;
|
||||
private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
|
||||
private final GlobalJavaResolverContext globalJavaResolverContext;
|
||||
@@ -97,10 +99,12 @@ public class InjectorForJavaDescriptorResolver {
|
||||
this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
|
||||
this.globalSearchScope = com.intellij.psi.search.GlobalSearchScope.allScope(project);
|
||||
this.javaDescriptorResolverPostConstruct = new JavaDescriptorResolverPostConstruct();
|
||||
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(getModule(), lockBasedStorageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
|
||||
this.javaClassFinder.setComponentPostConstruct(javaDescriptorResolverPostConstruct);
|
||||
this.javaClassFinder.setProject(project);
|
||||
this.javaClassFinder.setScope(globalSearchScope);
|
||||
|
||||
@@ -117,10 +121,16 @@ public class InjectorForJavaDescriptorResolver {
|
||||
|
||||
singleModuleClassResolver.setResolver(javaDescriptorResolver);
|
||||
|
||||
javaDescriptorResolverPostConstruct.setModule(module);
|
||||
javaDescriptorResolverPostConstruct.setProject(project);
|
||||
javaDescriptorResolverPostConstruct.setTrace(bindingTrace);
|
||||
|
||||
deserializedDescriptorResolver.setComponents(deserializationComponentsForJava);
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
javaDescriptorResolverPostConstruct.postCreate();
|
||||
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
|
||||
+1
@@ -37,6 +37,7 @@ public class InjectorForJavaDescriptorResolverUtil {
|
||||
module.addDependencyOnModule(KotlinBuiltIns.getInstance().getBuiltInsModule());
|
||||
}
|
||||
module.seal();
|
||||
|
||||
return injector;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import org.jetbrains.jet.lang.resolve.java.sam.SamConversionResolverImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSourceElementFactoryImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaFlexibleTypeCapabilitiesProvider;
|
||||
import org.jetbrains.jet.context.LazyResolveToken;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaLazyAnalyzerPostConstruct;
|
||||
import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider;
|
||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.calls.CallResolver;
|
||||
@@ -98,6 +99,7 @@ public class InjectorForLazyResolveWithJava {
|
||||
private final JavaSourceElementFactoryImpl javaSourceElementFactory;
|
||||
private final JavaFlexibleTypeCapabilitiesProvider javaFlexibleTypeCapabilitiesProvider;
|
||||
private final LazyResolveToken lazyResolveToken;
|
||||
private final JavaLazyAnalyzerPostConstruct javaLazyAnalyzerPostConstruct;
|
||||
private final AdditionalCheckerProvider additionalCheckerProvider;
|
||||
private final AnnotationResolver annotationResolver;
|
||||
private final CallResolver callResolver;
|
||||
@@ -163,6 +165,7 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, module);
|
||||
this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider();
|
||||
this.lazyResolveToken = new LazyResolveToken();
|
||||
this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct();
|
||||
this.additionalCheckerProvider = org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider.INSTANCE$;
|
||||
this.annotationResolver = new AnnotationResolver();
|
||||
this.callResolver = new CallResolver();
|
||||
@@ -198,6 +201,7 @@ public class InjectorForLazyResolveWithJava {
|
||||
this.resolveSession.setScriptBodyResolver(scriptBodyResolver);
|
||||
this.resolveSession.setTypeResolver(typeResolver);
|
||||
|
||||
javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct);
|
||||
javaClassFinder.setProject(project);
|
||||
javaClassFinder.setScope(moduleContentScope);
|
||||
|
||||
@@ -212,6 +216,10 @@ public class InjectorForLazyResolveWithJava {
|
||||
psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
|
||||
psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
|
||||
|
||||
javaLazyAnalyzerPostConstruct.setCodeAnalyzer(resolveSession);
|
||||
javaLazyAnalyzerPostConstruct.setProject(project);
|
||||
javaLazyAnalyzerPostConstruct.setTrace(bindingTrace);
|
||||
|
||||
annotationResolver.setCallResolver(callResolver);
|
||||
annotationResolver.setStorageManager(storageManager);
|
||||
annotationResolver.setTypeResolver(typeResolver);
|
||||
@@ -270,6 +278,8 @@ public class InjectorForLazyResolveWithJava {
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
javaLazyAnalyzerPostConstruct.postCreate();
|
||||
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
|
||||
@@ -39,6 +39,7 @@ import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaPropertyInitialize
|
||||
import org.jetbrains.jet.lang.resolve.java.sam.SamConversionResolverImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaSourceElementFactoryImpl;
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.SingleModuleClassResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaLazyAnalyzerPostConstruct;
|
||||
import org.jetbrains.jet.lang.resolve.java.JavaFlexibleTypeCapabilitiesProvider;
|
||||
import org.jetbrains.jet.lang.resolve.AdditionalCheckerProvider;
|
||||
import org.jetbrains.jet.lang.resolve.BodyResolver;
|
||||
@@ -108,6 +109,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
private final SamConversionResolverImpl samConversionResolver;
|
||||
private final JavaSourceElementFactoryImpl javaSourceElementFactory;
|
||||
private final SingleModuleClassResolver singleModuleClassResolver;
|
||||
private final JavaLazyAnalyzerPostConstruct javaLazyAnalyzerPostConstruct;
|
||||
private final JavaFlexibleTypeCapabilitiesProvider javaFlexibleTypeCapabilitiesProvider;
|
||||
private final AdditionalCheckerProvider additionalCheckerProvider;
|
||||
private final BodyResolver bodyResolver;
|
||||
@@ -184,6 +186,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
|
||||
this.binaryClassAnnotationAndConstantLoader = new BinaryClassAnnotationAndConstantLoaderImpl(module, storageManager, virtualFileFinder, traceBasedErrorReporter);
|
||||
this.deserializationComponentsForJava = new DeserializationComponentsForJava(storageManager, module, javaClassDataFinder, binaryClassAnnotationAndConstantLoader, lazyJavaPackageFragmentProvider);
|
||||
this.javaLazyAnalyzerPostConstruct = new JavaLazyAnalyzerPostConstruct();
|
||||
this.javaFlexibleTypeCapabilitiesProvider = new JavaFlexibleTypeCapabilitiesProvider();
|
||||
this.additionalCheckerProvider = org.jetbrains.jet.lang.resolve.kotlin.JavaDeclarationCheckerProvider.INSTANCE$;
|
||||
this.bodyResolver = new BodyResolver();
|
||||
@@ -235,6 +238,7 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
this.resolveSession.setScriptBodyResolver(scriptBodyResolver);
|
||||
this.resolveSession.setTypeResolver(typeResolver);
|
||||
|
||||
javaClassFinder.setComponentPostConstruct(javaLazyAnalyzerPostConstruct);
|
||||
javaClassFinder.setProject(project);
|
||||
javaClassFinder.setScope(moduleContentScope);
|
||||
|
||||
@@ -251,6 +255,10 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
|
||||
singleModuleClassResolver.setResolver(javaDescriptorResolver);
|
||||
|
||||
javaLazyAnalyzerPostConstruct.setCodeAnalyzer(resolveSession);
|
||||
javaLazyAnalyzerPostConstruct.setProject(project);
|
||||
javaLazyAnalyzerPostConstruct.setTrace(bindingTrace);
|
||||
|
||||
bodyResolver.setAnnotationResolver(annotationResolver);
|
||||
bodyResolver.setCallResolver(callResolver);
|
||||
bodyResolver.setControlFlowAnalyzer(controlFlowAnalyzer);
|
||||
@@ -341,6 +349,8 @@ public class InjectorForTopDownAnalyzerForJvm {
|
||||
|
||||
javaClassFinder.initialize();
|
||||
|
||||
javaLazyAnalyzerPostConstruct.postCreate();
|
||||
|
||||
}
|
||||
|
||||
@PreDestroy
|
||||
|
||||
+5
@@ -53,6 +53,11 @@ public class JavaClassFinderImpl implements JavaClassFinder {
|
||||
this.baseScope = scope;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setComponentPostConstruct(@NotNull JavaClassFinderPostConstruct finderPostConstruct) {
|
||||
// Only activate post create
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void initialize() {
|
||||
javaSearchScope = new DelegatingGlobalSearchScope(baseScope) {
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright 2010-2014 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.java
|
||||
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
|
||||
import javax.inject.Inject
|
||||
import javax.annotation.PostConstruct
|
||||
import org.jetbrains.jet.lang.resolve.BindingTrace
|
||||
import org.jetbrains.jet.lang.resolve.CodeAnalyzerInitializer
|
||||
|
||||
public open class JavaClassFinderPostConstruct {
|
||||
PostConstruct public open fun postCreate() {}
|
||||
}
|
||||
|
||||
public class JavaLazyAnalyzerPostConstruct : JavaClassFinderPostConstruct() {
|
||||
public var project: Project? = null
|
||||
[Inject] set
|
||||
|
||||
public var trace: BindingTrace? = null
|
||||
[Inject] set
|
||||
|
||||
public var codeAnalyzer: KotlinCodeAnalyzer? = null
|
||||
[Inject] set
|
||||
|
||||
[PostConstruct] override fun postCreate() {
|
||||
CodeAnalyzerInitializer.getInstance(project!!).initialize(trace!!, codeAnalyzer!!.getModuleDescriptor(), codeAnalyzer)
|
||||
}
|
||||
}
|
||||
|
||||
public class JavaDescriptorResolverPostConstruct : JavaClassFinderPostConstruct() {
|
||||
public var project: Project? = null
|
||||
[Inject] set
|
||||
|
||||
public var trace: BindingTrace? = null
|
||||
[Inject] set
|
||||
|
||||
public var module: ModuleDescriptor? = null
|
||||
[Inject] set
|
||||
|
||||
[PostConstruct] override fun postCreate() {
|
||||
CodeAnalyzerInitializer.getInstance(project!!).initialize(trace!!, module!!, null)
|
||||
}
|
||||
}
|
||||
|
||||
+16
-9
@@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.resolve.kotlin.incremental.cache.IncrementalCache;
|
||||
import org.jetbrains.jet.lang.resolve.kotlin.incremental.cache.IncrementalCacheProvider;
|
||||
import org.jetbrains.jet.lang.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.storage.LockBasedStorageManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -68,11 +69,7 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
@NotNull TopDownAnalysisParameters topDownAnalysisParameters,
|
||||
@NotNull ModuleDescriptorImpl module
|
||||
) {
|
||||
GlobalContext globalContext = new GlobalContextImpl(
|
||||
(LockBasedStorageManager) topDownAnalysisParameters.getStorageManager(),
|
||||
topDownAnalysisParameters.getExceptionTracker());
|
||||
|
||||
return analyzeFilesWithJavaIntegration(project, files, trace, topDownAnalysisParameters, module, globalContext, null, null);
|
||||
return analyzeFilesWithJavaIntegration(project, files, trace, topDownAnalysisParameters, module, null, null);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -112,7 +109,7 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
|
||||
return analyzeFilesWithJavaIntegration(
|
||||
project, files, trace, topDownAnalysisParameters, module,
|
||||
globalContext, moduleIds, incrementalCacheProvider);
|
||||
moduleIds, incrementalCacheProvider);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -122,7 +119,6 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
BindingTrace trace,
|
||||
TopDownAnalysisParameters topDownAnalysisParameters,
|
||||
ModuleDescriptorImpl module,
|
||||
GlobalContext globalContext,
|
||||
@Nullable List<String> moduleIds,
|
||||
@Nullable IncrementalCacheProvider incrementalCacheProvider
|
||||
) {
|
||||
@@ -131,7 +127,7 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
|
||||
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
|
||||
project,
|
||||
globalContext,
|
||||
topDownAnalysisParameters,
|
||||
trace,
|
||||
module,
|
||||
GlobalSearchScope.allScope(project),
|
||||
@@ -166,6 +162,17 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
|
||||
@NotNull
|
||||
public static ModuleDescriptorImpl createJavaModule(@NotNull String name) {
|
||||
return new ModuleDescriptorImpl(Name.special(name), DEFAULT_IMPORTS, JavaToKotlinClassMap.getInstance());
|
||||
return new ModuleDescriptorImpl(Name.special(name),
|
||||
DEFAULT_IMPORTS,
|
||||
JavaToKotlinClassMap.getInstance());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static ModuleDescriptorImpl createAnalyzeModule() {
|
||||
ModuleDescriptorImpl module = createJavaModule("<shared-module>");
|
||||
module.addDependencyOnModule(module);
|
||||
module.addDependencyOnModule(KotlinBuiltIns.getInstance().getBuiltInsModule());
|
||||
module.seal();
|
||||
return module;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user