diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java index bdda9fdd810..a63a77a921d 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.internal.index.tests; +import java.io.ByteArrayInputStream; import java.util.regex.Pattern; import junit.framework.TestSuite; @@ -19,12 +20,19 @@ import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMManager; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IIndexBinding; +import org.eclipse.cdt.core.index.IIndexFile; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.internal.core.CCoreInternals; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRunnable; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Path; public class IndexIncludeTest extends IndexTestBase { private static final IProgressMonitor NPM= new NullProgressMonitor(); @@ -69,6 +77,8 @@ public class IndexIncludeTest extends IndexTestBase { CCoreInternals.getPDOMManager().setIndexAllHeaders(fProject, true); waitForIndexer(); checkHeader(true); + + checkContext(); } private void waitForIndexer() { @@ -84,6 +94,8 @@ public class IndexIncludeTest extends IndexTestBase { CCoreInternals.getPDOMManager().setIndexAllHeaders(fProject, true); waitForIndexer(); checkHeader(true); + + checkContext(); } private void checkHeader(boolean all) throws Exception { @@ -95,5 +107,30 @@ public class IndexIncludeTest extends IndexTestBase { finally { fIndex.releaseReadLock(); } + } + + private void checkContext() throws Exception { + final long timestamp= System.currentTimeMillis(); + final IResource file= fProject.getProject().findMember(new Path("included.h")); + assertNotNull(file); + ResourcesPlugin.getWorkspace().run(new IWorkspaceRunnable() { + public void run(IProgressMonitor monitor) throws CoreException { + ((IFile) file).setContents(new ByteArrayInputStream( "int included; int CONTEXT;\n".getBytes()), false, false, NPM); + } + }, NPM); + waitForIndexer(); + fIndex.acquireReadLock(); + try { + IIndexFile ifile= fIndex.getFile(file.getLocation()); + assertNotNull(ifile); + assertTrue(ifile.getTimestamp() >= timestamp); + + IIndexBinding[] result= fIndex.findBindings(Pattern.compile("testInclude_cpp"), true, IndexFilter.ALL, NPM); + assertEquals(1, result.length); + } + finally { + fIndex.releaseReadLock(); + } } + } diff --git a/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/included.h b/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/included.h index 1eb2d559126..4282aae8d32 100644 --- a/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/included.h +++ b/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/included.h @@ -1 +1,2 @@ -int included; \ No newline at end of file +int included; +int CONTEXT; \ No newline at end of file diff --git a/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/testInclude.cpp b/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/testInclude.cpp index a0b1143491f..e1ee8ed80b4 100644 --- a/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/testInclude.cpp +++ b/core/org.eclipse.cdt.core.tests/resources/indexTests/includes/testInclude.cpp @@ -1 +1,3 @@ +#define CONTEXT testInclude_cpp + #include "included.h" diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastReindex.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastReindex.java index 469d8bbc03e..86f686742af 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastReindex.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastReindex.java @@ -43,7 +43,6 @@ class PDOMFastReindex extends PDOMFastIndexerJob { parseTUs(fTUs, monitor); - assert fFilesToIndex == 0; String showTimings = Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/pdomtimings"); //$NON-NLS-1$ if (showTimings != null && showTimings.equalsIgnoreCase("true")) //$NON-NLS-1$