From dd94fc6d7a7393e563e14c556b9a5144932cb656 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Thu, 7 Nov 2013 20:32:17 +0100 Subject: [PATCH] fix "No dependencies provided which causes CachedValue to be never recalculated again." --- .../ant/config/impl/AntBuildModelImpl.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/ant/src/com/intellij/lang/ant/config/impl/AntBuildModelImpl.java b/plugins/ant/src/com/intellij/lang/ant/config/impl/AntBuildModelImpl.java index e13e5bc6b7c0..0768599e22e6 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/impl/AntBuildModelImpl.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/impl/AntBuildModelImpl.java @@ -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>(PsiManager.getInstance(project), new CachedValueProvider>() { public Result> compute() { - final Pair, Collection> result = getTargetListImpl(AntBuildModelImpl.this); - final Collection deps = result.getSecond(); - return Result.create(result.getFirst(), PsiUtilCore.toPsiFileArray(deps)); + final Pair, Collection> result = getTargetListImpl(AntBuildModelImpl.this); + final Collection 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, Collection> getTargetListImpl(final AntBuildModelBase model) { + private static Pair, Collection> getTargetListImpl(final AntBuildModelBase model) { final List list = new ArrayList(); - final Set dependencies = new HashSet(); + final Set dependencies = new HashSet(); 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, Collection>(list, dependencies); + return new Pair, Collection>(list, dependencies); } }