ExternalDeclarationsProvider introduced

This commit is contained in:
Andrey Breslav
2014-09-30 09:07:17 +04:00
committed by Yan Zhulanow
parent 1f10ab21ac
commit e10d8a6fe0
10 changed files with 112 additions and 21 deletions
-1
View File
@@ -14,6 +14,5 @@
<orderEntry type="module" module-name="serialization.jvm" />
<orderEntry type="module" module-name="descriptor.loader.java" exported="" />
<orderEntry type="module" module-name="util" />
<orderEntry type="module" module-name="android-compiler-plugin" />
</component>
</module>
@@ -35,10 +35,9 @@ import org.jetbrains.kotlin.di.InjectorForLazyResolveWithJava
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.jet.lang.psi.JetFile
import com.intellij.openapi.components.ServiceManager
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlProcessor
import java.util.ArrayList
import org.jetbrains.jet.lang.resolve.android.searchAndAddAndroidDeclarations
import org.jetbrains.jet.extensions.ExternalDeclarationsProvider
import kotlin.platform.platformStatic
public class JvmResolverForModule(
override val lazyResolveSession: ResolveSession,
@@ -61,7 +60,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
resolverForProject: ResolverForProject<M, JvmResolverForModule>
): JvmResolverForModule {
val (syntheticFiles, moduleContentScope) = moduleContent
val filesToAnalyze = searchAndAddAndroidDeclarations(project, syntheticFiles)
val filesToAnalyze = getAllFilesToAnalyze(project, syntheticFiles)
val declarationProviderFactory = DeclarationProviderFactoryService.createDeclarationProviderFactory(
project, globalContext.storageManager, filesToAnalyze,
if (moduleInfo.isLibrary) GlobalSearchScope.EMPTY_SCOPE else moduleContentScope
@@ -88,4 +87,12 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
override val defaultImports = TopDownAnalyzerFacadeForJVM.DEFAULT_IMPORTS
override val platformToKotlinClassMap = JavaToKotlinClassMap.INSTANCE
public platformStatic fun getAllFilesToAnalyze(project: Project, baseFiles: Collection<JetFile>): List<JetFile> {
val allFiles = ArrayList(baseFiles)
for (externalDeclarationsProvider in ExternalDeclarationsProvider.getInstances(project)) {
allFiles.addAll(externalDeclarationsProvider.getExternalDeclarations())
}
return allFiles
}
}
@@ -116,11 +116,10 @@ public enum TopDownAnalyzerFacadeForJVM {
@Nullable List<String> moduleIds,
@Nullable IncrementalCacheProvider incrementalCacheProvider
) {
List<JetFile> filesToAnalyze = new ArrayList<JetFile>(files);
searchAndAddAndroidDeclarations(project, filesToAnalyze);
List<JetFile> allFiles = JvmAnalyzerFacade.getAllFilesToAnalyze(project, files);
FileBasedDeclarationProviderFactory providerFactory =
new FileBasedDeclarationProviderFactory(topDownAnalysisParameters.getStorageManager(), filesToAnalyze);
new FileBasedDeclarationProviderFactory(topDownAnalysisParameters.getStorageManager(), allFiles);
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
project,
@@ -149,7 +148,7 @@ public enum TopDownAnalyzerFacadeForJVM {
}
additionalProviders.add(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
injector.getLazyTopDownAnalyzerForTopLevel().analyzeFiles(topDownAnalysisParameters, filesToAnalyze, additionalProviders);
injector.getLazyTopDownAnalyzerForTopLevel().analyzeFiles(topDownAnalysisParameters, allFiles, additionalProviders);
return AnalysisResult.success(trace.getBindingContext(), module);
}
finally {