ide analyzer integration stub
- add android ui xml path providers/stubs - add generated file injection during analysis
This commit is contained in:
committed by
Yan Zhulanow
parent
aa01d6d7cf
commit
155d2fa979
@@ -14,5 +14,6 @@
|
||||
<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="frontend.android" />
|
||||
</component>
|
||||
</module>
|
||||
</module>
|
||||
|
||||
+15
-2
@@ -17,11 +17,14 @@
|
||||
package org.jetbrains.kotlin.resolve.jvm;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlParser;
|
||||
import org.jetbrains.jet.lang.resolve.android.AndroidUIXmlPathProvider;
|
||||
import org.jetbrains.kotlin.analyzer.AnalysisResult;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.context.GlobalContext;
|
||||
@@ -42,6 +45,7 @@ import org.jetbrains.kotlin.resolve.ImportPath;
|
||||
import org.jetbrains.kotlin.resolve.TopDownAnalysisParameters;
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -116,8 +120,11 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
@Nullable List<String> moduleIds,
|
||||
@Nullable IncrementalCacheProvider incrementalCacheProvider
|
||||
) {
|
||||
List<JetFile> filesToAnalyze = new ArrayList<JetFile>(files);
|
||||
filesToAnalyze.add(searchForAndroidDeclarations(project));
|
||||
|
||||
FileBasedDeclarationProviderFactory providerFactory =
|
||||
new FileBasedDeclarationProviderFactory(topDownAnalysisParameters.getStorageManager(), files);
|
||||
new FileBasedDeclarationProviderFactory(topDownAnalysisParameters.getStorageManager(), filesToAnalyze);
|
||||
|
||||
InjectorForTopDownAnalyzerForJvm injector = new InjectorForTopDownAnalyzerForJvm(
|
||||
project,
|
||||
@@ -146,7 +153,7 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
}
|
||||
additionalProviders.add(injector.getJavaDescriptorResolver().getPackageFragmentProvider());
|
||||
|
||||
injector.getLazyTopDownAnalyzerForTopLevel().analyzeFiles(topDownAnalysisParameters, files, additionalProviders);
|
||||
injector.getLazyTopDownAnalyzerForTopLevel().analyzeFiles(topDownAnalysisParameters, filesToAnalyze, additionalProviders);
|
||||
return AnalysisResult.success(trace.getBindingContext(), module);
|
||||
}
|
||||
finally {
|
||||
@@ -169,4 +176,10 @@ public enum TopDownAnalyzerFacadeForJVM {
|
||||
module.seal();
|
||||
return module;
|
||||
}
|
||||
|
||||
private static JetFile searchForAndroidDeclarations(Project project) {
|
||||
AndroidUIXmlPathProvider provider = ServiceManager.getService(project, AndroidUIXmlPathProvider.class);
|
||||
Collection<File> paths = provider.getPaths();
|
||||
return new AndroidUIXmlParser(project, paths).parseToPsi();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user