mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
javac ast indices: check that index exist on project load & listen for roots modifications
This commit is contained in:
+8
-3
@@ -104,13 +104,18 @@ class CompilerReferenceReader {
|
||||
myIndex.close();
|
||||
}
|
||||
|
||||
static CompilerReferenceReader create(Project project) {
|
||||
static boolean exists(Project project) {
|
||||
File buildDir = BuildManager.getInstance().getProjectSystemDirectory(project);
|
||||
if (buildDir == null || CompilerBackwardReferenceIndex.versionDiffers(buildDir)) {
|
||||
return null;
|
||||
return false;
|
||||
}
|
||||
return CompilerBackwardReferenceIndex.exist(buildDir);
|
||||
}
|
||||
|
||||
static CompilerReferenceReader create(Project project) {
|
||||
if (!exists(project)) return null;
|
||||
try {
|
||||
return new CompilerReferenceReader(buildDir);
|
||||
return new CompilerReferenceReader(BuildManager.getInstance().getProjectSystemDirectory(project));
|
||||
}
|
||||
catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
|
||||
+7
-2
@@ -134,8 +134,13 @@ public class CompilerReferenceServiceImpl extends CompilerReferenceService imple
|
||||
|
||||
if (!ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
ApplicationManager.getApplication().executeOnPooledThread(() -> {
|
||||
CompileScope projectCompileScope = compilerManager.createProjectCompileScope(myProject);
|
||||
boolean isUpToDate = compilerManager.isUpToDate(projectCompileScope);
|
||||
boolean isUpToDate;
|
||||
if (CompilerReferenceReader.exists(myProject)) {
|
||||
CompileScope projectCompileScope = compilerManager.createProjectCompileScope(myProject);
|
||||
isUpToDate = compilerManager.isUpToDate(projectCompileScope);
|
||||
} else {
|
||||
isUpToDate = false;
|
||||
}
|
||||
executeOnBuildThread(() -> {
|
||||
myDirtyScopeHolder.upToDateChecked(isUpToDate);
|
||||
if (isUpToDate) {
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.compiler.backwardRefs;
|
||||
|
||||
import com.intellij.ProjectTopics;
|
||||
import com.intellij.compiler.CompilerConfiguration;
|
||||
import com.intellij.compiler.CompilerReferenceService;
|
||||
import com.intellij.compiler.backwardRefs.view.DirtyScopeTestInfo;
|
||||
@@ -28,6 +29,8 @@ import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.module.ModuleManager;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ModuleRootEvent;
|
||||
import com.intellij.openapi.roots.ModuleRootListener;
|
||||
import com.intellij.openapi.util.UserDataHolderBase;
|
||||
import com.intellij.openapi.vfs.*;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
@@ -90,6 +93,16 @@ public class DirtyScopeHolder extends UserDataHolderBase {
|
||||
myCompilationAffectedModules.add(messageText);
|
||||
}
|
||||
});
|
||||
|
||||
connect.subscribe(ProjectTopics.PROJECT_ROOTS, new ModuleRootListener() {
|
||||
@Override
|
||||
public void beforeRootsChange(ModuleRootEvent event) {
|
||||
final Module[] modules = ModuleManager.getInstance(myService.getProject()).getModules();
|
||||
synchronized (myLock) {
|
||||
ContainerUtil.addAll(myVFSChangedModules, modules);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user