Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/GeneratePDOMApplicationTest.java3
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java10
2 files changed, 9 insertions, 4 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/GeneratePDOMApplicationTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/GeneratePDOMApplicationTest.java
index 87974999174..6cc0cf343cc 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/GeneratePDOMApplicationTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/GeneratePDOMApplicationTest.java
@@ -214,7 +214,8 @@ public class GeneratePDOMApplicationTest extends PDOMTestBase {
} finally {
wpdom.releaseReadLock();
}
- assertTrue(stateCount[0] == 2);
+ // depending on the timing the index of the temporary project is changed twice.
+ assertTrue(stateCount[0] == 2 || stateCount[0] == 4);
}
public void testExternalExportProjectProvider_SysIncludes() throws Exception {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
index 1f7c1fe3e83..6ce38c6fa04 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java
@@ -138,6 +138,7 @@ public class PDOMManager implements IWritableIndexManager, IListener {
private static final ISchedulingRule NOTIFICATION_SCHEDULING_RULE = new PerInstanceSchedulingRule();
private static final ISchedulingRule INDEXER_SCHEDULING_RULE = new PerInstanceSchedulingRule();
+ private static final ISchedulingRule INIT_INDEXER_SCHEDULING_RULE = new PerInstanceSchedulingRule();
/**
* Protects indexerJob, currentTask and taskQueue.
@@ -654,10 +655,13 @@ public class PDOMManager implements IWritableIndexManager, IListener {
// have to check for that.
ISchedulingRule rule= project.getWorkspace().getRuleFactory().refreshRule(project.getFolder(SETTINGS_FOLDER_NAME));
if (project.contains(rule)) {
- rule= new MultiRule(new ISchedulingRule[] {project, INDEXER_SCHEDULING_RULE });
+ rule= MultiRule.combine(project, INIT_INDEXER_SCHEDULING_RULE);
}
- else if (!rule.contains(project)) {
- rule= new MultiRule(new ISchedulingRule[] {rule, project, INDEXER_SCHEDULING_RULE });
+ else if (rule.contains(project)) {
+ rule= MultiRule.combine(rule, INIT_INDEXER_SCHEDULING_RULE);
+ }
+ else {
+ rule= MultiRule.combine(new ISchedulingRule[] {rule, project, INIT_INDEXER_SCHEDULING_RULE });
}
addProject.setRule(rule);
addProject.setSystem(true);

Back to the top