Support multi-module configuration in Android plugin

This commit is contained in:
Yan Zhulanow
2014-12-29 14:58:05 +03:00
parent 438d2ee5fa
commit 4f9aba2cdc
48 changed files with 150 additions and 69 deletions
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.psi.JetFile
import java.util.ArrayList
import org.jetbrains.jet.extensions.ExternalDeclarationsProvider
import kotlin.platform.platformStatic
import com.intellij.openapi.module.Module
public class JvmResolverForModule(
override val lazyResolveSession: ResolveSession,
@@ -60,7 +61,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmResolverForModule, JvmPlatfo
resolverForProject: ResolverForProject<M, JvmResolverForModule>
): JvmResolverForModule {
val (syntheticFiles, moduleContentScope) = moduleContent
val filesToAnalyze = getAllFilesToAnalyze(project, syntheticFiles)
val filesToAnalyze = getAllFilesToAnalyze(project, moduleInfo, syntheticFiles)
val declarationProviderFactory = DeclarationProviderFactoryService.createDeclarationProviderFactory(
project, globalContext.storageManager, filesToAnalyze,
if (moduleInfo.isLibrary) GlobalSearchScope.EMPTY_SCOPE else moduleContentScope
@@ -87,10 +88,10 @@ 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> {
public platformStatic fun getAllFilesToAnalyze(project: Project, moduleInfo: ModuleInfo?, baseFiles: Collection<JetFile>): List<JetFile> {
val allFiles = ArrayList(baseFiles)
for (externalDeclarationsProvider in ExternalDeclarationsProvider.getInstances(project)) {
allFiles.addAll(externalDeclarationsProvider.getExternalDeclarations())
allFiles.addAll(externalDeclarationsProvider.getExternalDeclarations(moduleInfo))
}
return allFiles
}
@@ -116,7 +116,7 @@ public enum TopDownAnalyzerFacadeForJVM {
@Nullable List<String> moduleIds,
@Nullable IncrementalCacheProvider incrementalCacheProvider
) {
List<JetFile> allFiles = JvmAnalyzerFacade.getAllFilesToAnalyze(project, files);
List<JetFile> allFiles = JvmAnalyzerFacade.getAllFilesToAnalyze(project, null, files);
FileBasedDeclarationProviderFactory providerFactory =
new FileBasedDeclarationProviderFactory(topDownAnalysisParameters.getStorageManager(), allFiles);