mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fix "No dependencies provided which causes CachedValue to be never recalculated again."
This commit is contained in:
@@ -30,8 +30,9 @@ import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.impl.PsiCachedValueImpl;
|
||||
import com.intellij.psi.util.CachedValue;
|
||||
import com.intellij.psi.util.CachedValueProvider;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.psi.util.PsiModificationTracker;
|
||||
import com.intellij.psi.xml.XmlFile;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -48,9 +49,9 @@ public class AntBuildModelImpl implements AntBuildModelBase {
|
||||
|
||||
myTargets = new PsiCachedValueImpl<List<AntBuildTargetBase>>(PsiManager.getInstance(project), new CachedValueProvider<List<AntBuildTargetBase>>() {
|
||||
public Result<List<AntBuildTargetBase>> compute() {
|
||||
final Pair<List<AntBuildTargetBase>, Collection<PsiFile>> result = getTargetListImpl(AntBuildModelImpl.this);
|
||||
final Collection<PsiFile> deps = result.getSecond();
|
||||
return Result.create(result.getFirst(), PsiUtilCore.toPsiFileArray(deps));
|
||||
final Pair<List<AntBuildTargetBase>, Collection<Object>> result = getTargetListImpl(AntBuildModelImpl.this);
|
||||
final Collection<Object> deps = result.getSecond();
|
||||
return Result.create(result.getFirst(), ArrayUtil.toObjectArray(deps));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -150,17 +151,16 @@ public class AntBuildModelImpl implements AntBuildModelBase {
|
||||
}
|
||||
|
||||
// todo: return list of dependent psi files as well
|
||||
private static Pair<List<AntBuildTargetBase>, Collection<PsiFile>> getTargetListImpl(final AntBuildModelBase model) {
|
||||
private static Pair<List<AntBuildTargetBase>, Collection<Object>> getTargetListImpl(final AntBuildModelBase model) {
|
||||
final List<AntBuildTargetBase> list = new ArrayList<AntBuildTargetBase>();
|
||||
final Set<PsiFile> dependencies = new HashSet<PsiFile>();
|
||||
final Set<Object> dependencies = new HashSet<Object>();
|
||||
|
||||
final AntDomProject project = model.getAntProject();
|
||||
if (project != null) {
|
||||
final AntBuildFile buildFile = model.getBuildFile();
|
||||
final XmlFile xmlFile = buildFile.getAntFile();
|
||||
if (xmlFile != null) {
|
||||
dependencies.add(xmlFile);
|
||||
}
|
||||
dependencies.add(xmlFile != null? xmlFile : PsiModificationTracker.MODIFICATION_COUNT);
|
||||
|
||||
final VirtualFile sourceFile = buildFile.getVirtualFile();
|
||||
new Object() {
|
||||
private boolean myIsImported = false;
|
||||
@@ -202,7 +202,7 @@ public class AntBuildModelImpl implements AntBuildModelBase {
|
||||
}
|
||||
}.fillTargets(list, model, project, sourceFile);
|
||||
}
|
||||
return new Pair<List<AntBuildTargetBase>, Collection<PsiFile>>(list, dependencies);
|
||||
return new Pair<List<AntBuildTargetBase>, Collection<Object>>(list, dependencies);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user