diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog
index 1e0ff3891c5..930bbd59915 100644
--- a/core/org.eclipse.cdt.core/ChangeLog
+++ b/core/org.eclipse.cdt.core/ChangeLog
@@ -1,3 +1,18 @@
+2005-05-02 Vladimir Hirsl
+ Fix for PR 92599: [Indexer] Remove annotation markers preference from DOMIndexer & friends
+ Removed indexer problem markers property page block for DOMIndexer.
+ Only inclusion not found preprocessor problem markers are going to be
+ generated (there isn't an option in UI to disable/enable them yet).
+ Also, fixed deleting of indexer problem markers when indexer is changed.
+
+ * index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java
+ * index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java
+ * index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java
+ * index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java
+ * index/org/eclipse/cdt/internal/core/index/nullindexer/NullIndexer.java
+ * index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java
+ * index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
+
2005-05-02 Vladimir Hirsl
Fix for PR 96762: DOM indexer misses some obvious symbols
Fixed calculation of file locations for names inside macro definitions
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java
index d963f38ba3c..7b3e535cd20 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java
@@ -133,7 +133,7 @@ public class CTagsIndexer extends AbstractCExtension implements ICDTIndexer {
* @see org.eclipse.cdt.core.index.ICDTIndexer#indexJobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IIndexJob)
*/
public void indexJobFinishedNotification(IIndexJob job) {
- ((CIndexStorage)indexStorage).setNeedToSave(true);
+ indexStorage.setNeedToSave(true);
if (job instanceof CTagsAddCompilationUnitToIndex){
CTagsAddCompilationUnitToIndex tempJob = (CTagsAddCompilationUnitToIndex) job;
@@ -371,11 +371,7 @@ public class CTagsIndexer extends AbstractCExtension implements ICDTIndexer {
}
public void indexerRemoved(IProject project) {
- //Remove any existing problem markers
- try {
- project.deleteMarkers(ICModelMarker.INDEXER_MARKER, true,IResource.DEPTH_ZERO);
- } catch (CoreException e) {}
-
+ indexManager.removeIndexerProblems(project);
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java
index 89eb2c872af..ce812492cb4 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java
@@ -10,13 +10,11 @@
***********************************************************************/
package org.eclipse.cdt.internal.core.index.domsourceindexer;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.ICompositeType;
@@ -31,12 +29,9 @@ import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.core.dom.ast.c.CASTVisitor;
import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.domsourceindexer.IndexerOutputWrapper.EntryType;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.Path;
public class CGenerateIndexVisitor extends CASTVisitor {
private DOMSourceIndexerRunner indexer;
- private IFile resourceFile;
{
shouldVisitNames = true;
// shouldVisitDeclarations = false;
@@ -54,10 +49,9 @@ public class CGenerateIndexVisitor extends CASTVisitor {
// shouldVisitDesignators = false
}
- public CGenerateIndexVisitor(DOMSourceIndexerRunner indexer, IFile resourceFile) {
+ public CGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
super();
this.indexer = indexer;
- this.resourceFile = resourceFile;
}
/* (non-Javadoc)
@@ -84,7 +78,7 @@ public class CGenerateIndexVisitor extends CASTVisitor {
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
// Get the location
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(problem);
- processProblem(problem, loc);
+ indexer.processProblem(problem, loc);
}
return super.visit(problem);
}
@@ -101,7 +95,7 @@ public class CGenerateIndexVisitor extends CASTVisitor {
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
// Get the location
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(name);
- processProblem(name, loc);
+ indexer.processProblem(name, loc);
}
return;
}
@@ -116,21 +110,6 @@ public class CGenerateIndexVisitor extends CASTVisitor {
}
}
- /**
- * @param name
- */
- private void processProblem(IASTNode node, IASTFileLocation loc) {
- IFile tempFile = resourceFile;
- //If we are in an include file, get the include file
- if (loc != null) {
- String fileName = loc.getFileName();
- tempFile = CCorePlugin.getWorkspace().getRoot().getFileForLocation(new Path(fileName));
- if (tempFile != null) {
- indexer.generateMarkerProblem(tempFile, resourceFile, node, loc);
- }
- }
- }
-
/**
* @param name
* @param binding
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java
index 7dbe29dada3..a29f6855712 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CPPGenerateIndexVisitor.java
@@ -10,13 +10,11 @@
***********************************************************************/
package org.eclipse.cdt.internal.core.index.domsourceindexer;
-import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.ASTNodeProperty;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.ICompositeType;
@@ -42,12 +40,9 @@ import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.domsourceindexer.IndexerOutputWrapper.EntryType;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.Path;
public class CPPGenerateIndexVisitor extends CPPASTVisitor {
private DOMSourceIndexerRunner indexer;
- private IFile resourceFile;
{
shouldVisitNames = true;
@@ -68,10 +63,9 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
// shouldVisitTemplateParameters = false;
}
- public CPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer, IFile resourceFile) {
+ public CPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
super();
this.indexer = indexer;
- this.resourceFile = resourceFile;
}
/* (non-Javadoc)
@@ -98,7 +92,7 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)) {
// Get the location
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(problem);
- processProblem(problem, loc);
+ indexer.processProblem(problem, loc);
}
return super.visit(problem);
}
@@ -115,7 +109,7 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
// Get the location
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(name);
- processProblem(name, loc);
+ indexer.processProblem(name, loc);
}
return;
}
@@ -131,21 +125,6 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
}
}
- /**
- * @param name
- */
- private void processProblem(IASTNode node, IASTFileLocation loc) {
- IFile tempFile = resourceFile;
- //If we are in an include file, get the include file
- if (loc != null) {
- String fileName = loc.getFileName();
- tempFile = CCorePlugin.getWorkspace().getRoot().getFileForLocation(new Path(fileName));
- if (tempFile != null) {
- indexer.generateMarkerProblem(tempFile, resourceFile, node, loc);
- }
- }
- }
-
/**
* @param name
* @param binding
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java
index 07a61ef81e7..7705fde0911 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java
@@ -24,6 +24,7 @@ import org.eclipse.cdt.core.dom.IASTServiceProvider.UnsupportedDialectException;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTName;
+import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTPreprocessorMacroDefinition;
import org.eclipse.cdt.core.dom.ast.IASTProblem;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
@@ -79,6 +80,8 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
output.addIndexedFile(file.getFullPath().toString());
int problems = indexer.indexProblemsEnabled(resourceFile.getProject());
+ // enable inclusion problem markers
+ problems |= SourceIndexer.INCLUSION_PROBLEMS_BIT;
setProblemMarkersEnabled(problems);
requestRemoveMarkers(resourceFile, null);
@@ -100,12 +103,13 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
processIncludeDirectives(tu.getDependencyTree());
processMacroDefinitions(tu.getMacroDefinitions());
+ processPreprocessorProblems(tu.getPreprocessorProblems());
ASTVisitor visitor = null;
if (language == ParserLanguage.CPP) {
- visitor = new CPPGenerateIndexVisitor(this, resourceFile);
+ visitor = new CPPGenerateIndexVisitor(this);
} else {
- visitor = new CGenerateIndexVisitor(this, resourceFile);
+ visitor = new CGenerateIndexVisitor(this);
}
tu.accept(visitor);
@@ -239,6 +243,36 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
}
+ /**
+ * @param preprocessorProblems
+ */
+ private void processPreprocessorProblems(IASTProblem[] preprocessorProblems) {
+ for (int i = 0; i < preprocessorProblems.length; i++) {
+ IASTProblem problem = preprocessorProblems[i];
+
+ if (areProblemMarkersEnabled() && shouldRecordProblem(problem)) {
+ // Get the location
+ IASTFileLocation loc = IndexEncoderUtil.getFileLocation(problem);
+ processProblem(problem, loc);
+ }
+ }
+ }
+
+ /**
+ * @param name
+ */
+ public void processProblem(IASTNode node, IASTFileLocation loc) {
+ IFile tempFile = resourceFile;
+ //If we are in an include file, get the include file
+ if (loc != null) {
+ String fileName = loc.getFileName();
+ tempFile = CCorePlugin.getWorkspace().getRoot().getFileForLocation(new Path(fileName));
+ if (tempFile != null) {
+ generateMarkerProblem(tempFile, resourceFile, node, loc);
+ }
+ }
+ }
+
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer#addMarkers(org.eclipse.core.resources.IFile, org.eclipse.core.resources.IFile, java.lang.Object, java.lang.Object)
*/
@@ -289,11 +323,9 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
int start = fileLoc.getNodeOffset();
int end = start + fileLoc.getNodeLength();
marker.setAttribute(IMarker.LOCATION, fileLoc.getStartingLineNumber());
- marker.setAttribute(IMarker.LOCATION, 1);
marker.setAttribute(IMarker.MESSAGE, INDEXER_MARKER_PREFIX + errorMessage);
marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
marker.setAttribute(IMarker.LINE_NUMBER, fileLoc.getStartingLineNumber());
- marker.setAttribute(IMarker.LINE_NUMBER, 1);
marker.setAttribute(IMarker.CHAR_START, start);
marker.setAttribute(IMarker.CHAR_END, end);
marker.setAttribute(INDEXER_MARKER_ORIGINATOR, originator.getFullPath().toString());
@@ -310,7 +342,10 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
boolean semantics = (getProblemMarkersEnabled() & SourceIndexer.SEMANTIC_PROBLEMS_BIT ) != 0;
boolean syntax = (getProblemMarkersEnabled() & SourceIndexer.SYNTACTIC_PROBLEMS_BIT ) != 0;
- if (problem.checkCategory(IASTProblem.PREPROCESSOR_RELATED) ||
+ if (problem.checkCategory(IASTProblem.PREPROCESSOR_INCLUSION_NOT_FOUND)) {
+ return true;
+ }
+ else if (problem.checkCategory(IASTProblem.PREPROCESSOR_RELATED) ||
problem.checkCategory(IASTProblem.SCANNER_RELATED))
return preprocessor && problem.getID() != IASTProblem.PREPROCESSOR_CIRCULAR_INCLUSION;
else if (problem.checkCategory(IASTProblem.SEMANTICS_RELATED))
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/nullindexer/NullIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/nullindexer/NullIndexer.java
index 2d35505c312..3eecc217b26 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/nullindexer/NullIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/nullindexer/NullIndexer.java
@@ -3,6 +3,7 @@ package org.eclipse.cdt.internal.core.index.nullindexer;
import java.io.IOException;
import org.eclipse.cdt.core.AbstractCExtension;
+import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.core.index.IIndexStorage;
import org.eclipse.cdt.internal.core.index.IIndex;
@@ -67,8 +68,7 @@ public class NullIndexer extends AbstractCExtension implements ICDTIndexer {
}
public void indexerRemoved(IProject project) {
- // TODO Auto-generated method stub
-
+ CCorePlugin.getDefault().getCoreModel().getIndexManager().removeIndexerProblems(project);
}
public void index(IFile document, IIndexerOutput output) throws IOException {
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java
index a7f5e405ac8..6e02e26c7fa 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java
@@ -25,7 +25,6 @@ import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.core.index.IIndexChangeListener;
import org.eclipse.cdt.core.index.IIndexStorage;
import org.eclipse.cdt.core.index.IndexChangeEvent;
-import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.parser.util.ObjectSet;
import org.eclipse.cdt.internal.core.Util;
import org.eclipse.cdt.internal.core.index.IIndex;
@@ -74,6 +73,7 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
public static final int PREPROCESSOR_PROBLEMS_BIT = 1;
public static final int SEMANTIC_PROBLEMS_BIT = 1 << 1;
public static final int SYNTACTIC_PROBLEMS_BIT = 1 << 2;
+ public static final int INCLUSION_PROBLEMS_BIT = 1 << 3;
public static final String SOURCE_INDEXER_ID = "originalsourceindexer"; //$NON-NLS-1$
public static final String SOURCE_INDEXER_UNIQUE_ID = CCorePlugin.PLUGIN_ID + "." + SOURCE_INDEXER_ID; //$NON-NLS-1$;
@@ -84,7 +84,6 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
protected IndexManager indexManager = null;
protected HashSet jobSet = null;
- private boolean indexEnabled = false;
protected long totalIndexTime = 0;
@@ -161,12 +160,7 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
* Warning: Does not check whether index is consistent (not being used)
*/
public synchronized boolean haveEncounteredHeader(IPath projectPath, IPath filePath) {
-
- if (!(indexStorage instanceof CIndexStorage))
- return false;
-
- SimpleLookupTable headerTable = ((CIndexStorage)indexStorage).getEncounteredHeaders();
-
+ SimpleLookupTable headerTable = indexStorage.getEncounteredHeaders();
// Path is already canonical per construction
ObjectSet headers = (ObjectSet) headerTable.get(projectPath);
@@ -269,7 +263,6 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
if (cext.length > 0) {
//initializeIndexerId();
for (int i = 0; i < cext.length; i++) {
- String id = cext[i].getID();
String orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
if (orig != null){
Integer tempInt = new Integer(orig);
@@ -336,30 +329,9 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
}
- static private class RemoveIndexMarkersJob extends Job{
- private final IResource resource;
- public RemoveIndexMarkersJob( IResource resource, String name ){
- super( name );
- this.resource = resource;
- }
- protected IStatus run(IProgressMonitor monitor) {
- try {
- resource.deleteMarkers( ICModelMarker.INDEXER_MARKER, true, IResource.DEPTH_INFINITE );
- } catch (CoreException e) {
- return Status.CANCEL_STATUS;
- }
- return Status.OK_STATUS;
- }
-
- }
-
public void removeIndexerProblems( IResource resource){
- String jobName = "remove markers"; //$NON-NLS-1$
- RemoveIndexMarkersJob job = new RemoveIndexMarkersJob( resource, jobName );
- job.setRule( resource );
- job.setPriority( Job.DECORATE );
- job.schedule();
- }
+ indexManager.removeIndexerProblems(resource);
+ }
public void addIndexChangeListener(IIndexChangeListener listener) {
synchronized(indexChangeListeners) {
@@ -422,8 +394,8 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
* No more job awaiting.
*/
public void notifyIdle(long idlingTime){
- if (idlingTime > 1000 && ((CIndexStorage) indexStorage).getNeedToSave())
- ((CIndexStorage) indexStorage).saveIndexes();
+ if (idlingTime > 1000 && indexStorage.getNeedToSave())
+ indexStorage.saveIndexes();
}
/* (non-Javadoc)
@@ -504,7 +476,7 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
* @see org.eclipse.cdt.core.index2.IIndexer#indexJobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IIndexJob)
*/
public void indexJobFinishedNotification(IIndexJob job) {
- ((CIndexStorage)indexStorage).setNeedToSave(true);
+ indexStorage.setNeedToSave(true);
if (job instanceof AddCompilationUnitToIndex){
AddCompilationUnitToIndex tempJob = (AddCompilationUnitToIndex) job;
@@ -655,15 +627,7 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
}
public void indexerRemoved(IProject project) {
- //Remove any existing problem markers
- /*try {
- IMarker[] markers = project.findMarkers(ICModelMarker.INDEXER_MARKER, true, IResource.DEPTH_INFINITE);
- for (int i=0; i
+
+