diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMRebuildTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMRebuildTask.java index a973910188b..34383f4adde 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMRebuildTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMRebuildTask.java @@ -118,10 +118,11 @@ public class PDOMRebuildTask implements IPDOMIndexerTask { private synchronized void createDelegate(ICProject project, IProgressMonitor monitor) throws CoreException { boolean allFiles= TRUE.equals(fIndexer.getProperty(IndexerPreferences.KEY_INDEX_ALL_FILES)); - List list= new ArrayList(); - TranslationUnitCollector collector= new TranslationUnitCollector(list, allFiles, monitor); + List sources= new ArrayList(); + List headers= allFiles ? sources : null; + TranslationUnitCollector collector= new TranslationUnitCollector(sources, headers, allFiles, monitor); project.accept(collector); - ITranslationUnit[] tus= (ITranslationUnit[]) list.toArray(new ITranslationUnit[list.size()]); + ITranslationUnit[] tus= (ITranslationUnit[]) sources.toArray(new ITranslationUnit[sources.size()]); fDelegate= fIndexer.createTask(tus, NO_TUS, NO_TUS); if (fDelegate instanceof PDOMIndexerTask) { ((PDOMIndexerTask) fDelegate).setCheckTimestamps(fCheckTimestamps); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMResourceDeltaTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMResourceDeltaTask.java index a36a1c66b80..4c79b6361de 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMResourceDeltaTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMResourceDeltaTask.java @@ -123,7 +123,7 @@ public class PDOMResourceDeltaTask implements IPDOMIndexerTask { } private void collectSources(ICContainer container, Collection sources, IProgressMonitor pm) throws CoreException { - container.accept(new TranslationUnitCollector(sources, fAllFiles, pm)); + container.accept(new TranslationUnitCollector(sources, sources, fAllFiles, pm)); } public void run(IProgressMonitor monitor) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMUpdateTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMUpdateTask.java index c62a31cdd66..cc6454061b9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMUpdateTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMUpdateTask.java @@ -71,7 +71,7 @@ public class PDOMUpdateTask implements IPDOMIndexerTask { private synchronized void createDelegate(ICProject project, IProgressMonitor monitor) throws CoreException { boolean allFiles= TRUE.equals(fIndexer.getProperty(IndexerPreferences.KEY_INDEX_ALL_FILES)); List list= new ArrayList(); - TranslationUnitCollector collector= new TranslationUnitCollector(list, allFiles, monitor); + TranslationUnitCollector collector= new TranslationUnitCollector(list, list, allFiles, monitor); project.accept(collector); ITranslationUnit[] tus= (ITranslationUnit[]) list.toArray(new ITranslationUnit[list.size()]); fDelegate= fIndexer.createTask(tus, NO_TUS, NO_TUS); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/TranslationUnitCollector.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/TranslationUnitCollector.java index 7f3a55bc55e..fa680b2e47c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/TranslationUnitCollector.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/TranslationUnitCollector.java @@ -21,12 +21,14 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; final class TranslationUnitCollector implements ICElementVisitor { - private final Collection fTUs; + private final Collection fSources; + private final Collection fHeaders; private final boolean fAllFiles; private final IProgressMonitor fProgressMonitor; - public TranslationUnitCollector(Collection tus, boolean allFiles, IProgressMonitor pm) { - fTUs = tus; + public TranslationUnitCollector(Collection sources, Collection headers, boolean allFiles, IProgressMonitor pm) { + fSources= sources; + fHeaders= headers; fAllFiles = allFiles; fProgressMonitor= pm; } @@ -40,11 +42,11 @@ final class TranslationUnitCollector implements ICElementVisitor { ITranslationUnit tu = (ITranslationUnit)element; if (tu.isSourceUnit()) { if (fAllFiles || !CoreModel.isScannerInformationEmpty(tu.getResource())) { - fTUs.add(tu); + fSources.add(tu); } } - else if (tu.isHeaderUnit()) { - fTUs.add(tu); + else if (fHeaders != null && tu.isHeaderUnit()) { + fHeaders.add(tu); } return false; case ICElement.C_CCONTAINER: