Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Schorn2007-07-24 09:16:15 +0000
committerMarkus Schorn2007-07-24 09:16:15 +0000
commit208e4f68ef9c2723bdfe0264fe490bbfbdc58a14 (patch)
treeda561b8e0a4cd89f496fa6ab27a104c9bf1d7bab /core/org.eclipse.cdt.core.tests
parent79b3fc77bb8dfc7242490a5a1e8686a294d99b13 (diff)
downloadorg.eclipse.cdt-208e4f68ef9c2723bdfe0264fe490bbfbdc58a14.tar.gz
org.eclipse.cdt-208e4f68ef9c2723bdfe0264fe490bbfbdc58a14.tar.xz
org.eclipse.cdt-208e4f68ef9c2723bdfe0264fe490bbfbdc58a14.zip
Fix and Testcase for 197311, Full Indexer with dependent project corrupts index.
Diffstat (limited to 'core/org.eclipse.cdt.core.tests')
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java62
1 files changed, 61 insertions, 1 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java
index d73aca2e09d..731dcc7a4ce 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java
@@ -750,7 +750,6 @@ public class IndexBugsTests extends BaseTestCase {
// StructA_T gvar2;
public void testFileInMultipleFragments_bug192352() throws Exception {
StringBuffer[] contents= getContentsForTest(3);
-
ICProject p2 = CProjectHelper.createCCProject("__bugsTest_2_", "bin", IPDOMManager.ID_FAST_INDEXER);
try {
@@ -833,4 +832,65 @@ public class IndexBugsTests extends BaseTestCase {
index.releaseReadLock();
}
}
+
+ // int globalVar;
+
+ // #include "../__bugsTest__/common.h"
+ // void func() {
+ // globalVar++;
+ // }
+ public void testDependentProjectsWithFullIndexer_Bug197311() throws Exception {
+ StringBuffer[] contents= getContentsForTest(2);
+ final IIndexManager indexManager = CCorePlugin.getIndexManager();
+ indexManager.setIndexerId(fCProject, IPDOMManager.ID_FULL_INDEXER);
+ ICProject p2 = CProjectHelper.createCCProject("bug197311", "bin", IPDOMManager.ID_FULL_INDEXER);
+ IProject[] refs = new IProject[] {fCProject.getProject()};
+ IProjectDescription pd = p2.getProject().getDescription();
+ pd.setReferencedProjects(refs);
+ p2.getProject().setDescription(pd, new NullProgressMonitor());
+ try {
+ IFile f1= TestSourceReader.createFile(fCProject.getProject(), "common.h", contents[0].toString());
+ IFile f2= TestSourceReader.createFile(fCProject.getProject(), "src.cpp", contents[1].toString());
+ IFile f3= TestSourceReader.createFile(p2.getProject(), "src.cpp", contents[1].toString());
+ waitForIndexer();
+
+ IIndex index= indexManager.getIndex(p2, IIndexManager.ADD_DEPENDENCIES);
+ index.acquireReadLock();
+ try {
+ IIndexBinding[] bindings= index.findBindings("globalVar".toCharArray(), IndexFilter.ALL, NPM);
+ assertEquals(1, bindings.length);
+ IIndexBinding binding= bindings[0];
+ IIndexName[] names= index.findReferences(binding);
+ assertEquals(2, names.length);
+ names= index.findDeclarations(binding);
+ assertEquals(1, names.length);
+ }
+ finally {
+ index.releaseReadLock();
+ }
+
+ indexManager.reindex(p2);
+ waitForIndexer();
+
+ index= indexManager.getIndex(p2, IIndexManager.ADD_DEPENDENCIES);
+ index.acquireReadLock();
+ try {
+ IIndexBinding[] bindings= index.findBindings("globalVar".toCharArray(), IndexFilter.ALL, NPM);
+ assertEquals(1, bindings.length);
+ IIndexBinding binding= bindings[0];
+ IIndexName[] names= index.findReferences(binding);
+ assertEquals(2, names.length);
+ names= index.findDeclarations(binding);
+ assertEquals(1, names.length);
+ }
+ finally {
+ index.releaseReadLock();
+ }
+ }
+ finally {
+ CProjectHelper.delete(p2);
+ }
+
+
+ }
}

Back to the top