mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Fix for PR 92599: [Indexer] Remove annotation markers preference from DOMIndexer & friends
- Replaced indexer problem markers property page block for DOMIndexer. (from SourceIndexerBlock to NullIndexerBlock). 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.
This commit is contained in:
parent
2bd5960655
commit
39e465b9a8
10 changed files with 118 additions and 105 deletions
|
@ -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
|
2005-05-02 Vladimir Hirsl
|
||||||
Fix for PR 96762: DOM indexer misses some obvious symbols
|
Fix for PR 96762: DOM indexer misses some obvious symbols
|
||||||
Fixed calculation of file locations for names inside macro definitions
|
Fixed calculation of file locations for names inside macro definitions
|
||||||
|
|
|
@ -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)
|
* @see org.eclipse.cdt.core.index.ICDTIndexer#indexJobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IIndexJob)
|
||||||
*/
|
*/
|
||||||
public void indexJobFinishedNotification(IIndexJob job) {
|
public void indexJobFinishedNotification(IIndexJob job) {
|
||||||
((CIndexStorage)indexStorage).setNeedToSave(true);
|
indexStorage.setNeedToSave(true);
|
||||||
|
|
||||||
if (job instanceof CTagsAddCompilationUnitToIndex){
|
if (job instanceof CTagsAddCompilationUnitToIndex){
|
||||||
CTagsAddCompilationUnitToIndex tempJob = (CTagsAddCompilationUnitToIndex) job;
|
CTagsAddCompilationUnitToIndex tempJob = (CTagsAddCompilationUnitToIndex) job;
|
||||||
|
@ -371,11 +371,7 @@ public class CTagsIndexer extends AbstractCExtension implements ICDTIndexer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void indexerRemoved(IProject project) {
|
public void indexerRemoved(IProject project) {
|
||||||
//Remove any existing problem markers
|
indexManager.removeIndexerProblems(project);
|
||||||
try {
|
|
||||||
project.deleteMarkers(ICModelMarker.INDEXER_MARKER, true,IResource.DEPTH_ZERO);
|
|
||||||
} catch (CoreException e) {}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -10,13 +10,11 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.core.index.domsourceindexer;
|
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.ASTNodeProperty;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
|
import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
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.IASTProblem;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
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.core.dom.ast.c.CASTVisitor;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndex;
|
import org.eclipse.cdt.internal.core.index.IIndex;
|
||||||
import org.eclipse.cdt.internal.core.index.domsourceindexer.IndexerOutputWrapper.EntryType;
|
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 {
|
public class CGenerateIndexVisitor extends CASTVisitor {
|
||||||
private DOMSourceIndexerRunner indexer;
|
private DOMSourceIndexerRunner indexer;
|
||||||
private IFile resourceFile;
|
|
||||||
{
|
{
|
||||||
shouldVisitNames = true;
|
shouldVisitNames = true;
|
||||||
// shouldVisitDeclarations = false;
|
// shouldVisitDeclarations = false;
|
||||||
|
@ -54,10 +49,9 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
||||||
// shouldVisitDesignators = false
|
// shouldVisitDesignators = false
|
||||||
}
|
}
|
||||||
|
|
||||||
public CGenerateIndexVisitor(DOMSourceIndexerRunner indexer, IFile resourceFile) {
|
public CGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
|
||||||
super();
|
super();
|
||||||
this.indexer = indexer;
|
this.indexer = indexer;
|
||||||
this.resourceFile = resourceFile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -84,7 +78,7 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
||||||
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
|
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
|
||||||
// Get the location
|
// Get the location
|
||||||
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(problem);
|
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(problem);
|
||||||
processProblem(problem, loc);
|
indexer.processProblem(problem, loc);
|
||||||
}
|
}
|
||||||
return super.visit(problem);
|
return super.visit(problem);
|
||||||
}
|
}
|
||||||
|
@ -101,7 +95,7 @@ public class CGenerateIndexVisitor extends CASTVisitor {
|
||||||
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
|
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
|
||||||
// Get the location
|
// Get the location
|
||||||
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(name);
|
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(name);
|
||||||
processProblem(name, loc);
|
indexer.processProblem(name, loc);
|
||||||
}
|
}
|
||||||
return;
|
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 name
|
||||||
* @param binding
|
* @param binding
|
||||||
|
|
|
@ -10,13 +10,11 @@
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
package org.eclipse.cdt.internal.core.index.domsourceindexer;
|
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.ASTNodeProperty;
|
||||||
import org.eclipse.cdt.core.dom.ast.DOMException;
|
import org.eclipse.cdt.core.dom.ast.DOMException;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
|
import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
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.IASTProblem;
|
||||||
import org.eclipse.cdt.core.dom.ast.IBinding;
|
import org.eclipse.cdt.core.dom.ast.IBinding;
|
||||||
import org.eclipse.cdt.core.dom.ast.ICompositeType;
|
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.core.search.ICSearchConstants.LimitTo;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndex;
|
import org.eclipse.cdt.internal.core.index.IIndex;
|
||||||
import org.eclipse.cdt.internal.core.index.domsourceindexer.IndexerOutputWrapper.EntryType;
|
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 {
|
public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
||||||
private DOMSourceIndexerRunner indexer;
|
private DOMSourceIndexerRunner indexer;
|
||||||
private IFile resourceFile;
|
|
||||||
|
|
||||||
{
|
{
|
||||||
shouldVisitNames = true;
|
shouldVisitNames = true;
|
||||||
|
@ -68,10 +63,9 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
||||||
// shouldVisitTemplateParameters = false;
|
// shouldVisitTemplateParameters = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer, IFile resourceFile) {
|
public CPPGenerateIndexVisitor(DOMSourceIndexerRunner indexer) {
|
||||||
super();
|
super();
|
||||||
this.indexer = indexer;
|
this.indexer = indexer;
|
||||||
this.resourceFile = resourceFile;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -98,7 +92,7 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
||||||
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)) {
|
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)) {
|
||||||
// Get the location
|
// Get the location
|
||||||
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(problem);
|
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(problem);
|
||||||
processProblem(problem, loc);
|
indexer.processProblem(problem, loc);
|
||||||
}
|
}
|
||||||
return super.visit(problem);
|
return super.visit(problem);
|
||||||
}
|
}
|
||||||
|
@ -115,7 +109,7 @@ public class CPPGenerateIndexVisitor extends CPPASTVisitor {
|
||||||
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
|
if (indexer.areProblemMarkersEnabled() && indexer.shouldRecordProblem(problem)){
|
||||||
// Get the location
|
// Get the location
|
||||||
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(name);
|
IASTFileLocation loc = IndexEncoderUtil.getFileLocation(name);
|
||||||
processProblem(name, loc);
|
indexer.processProblem(name, loc);
|
||||||
}
|
}
|
||||||
return;
|
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 name
|
||||||
* @param binding
|
* @param binding
|
||||||
|
|
|
@ -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.ASTVisitor;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTName;
|
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.IASTPreprocessorMacroDefinition;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTProblem;
|
import org.eclipse.cdt.core.dom.ast.IASTProblem;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
|
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
|
||||||
|
@ -79,6 +80,8 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
|
||||||
output.addIndexedFile(file.getFullPath().toString());
|
output.addIndexedFile(file.getFullPath().toString());
|
||||||
|
|
||||||
int problems = indexer.indexProblemsEnabled(resourceFile.getProject());
|
int problems = indexer.indexProblemsEnabled(resourceFile.getProject());
|
||||||
|
// enable inclusion problem markers
|
||||||
|
problems |= SourceIndexer.INCLUSION_PROBLEMS_BIT;
|
||||||
setProblemMarkersEnabled(problems);
|
setProblemMarkersEnabled(problems);
|
||||||
requestRemoveMarkers(resourceFile, null);
|
requestRemoveMarkers(resourceFile, null);
|
||||||
|
|
||||||
|
@ -100,12 +103,13 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
|
||||||
|
|
||||||
processIncludeDirectives(tu.getDependencyTree());
|
processIncludeDirectives(tu.getDependencyTree());
|
||||||
processMacroDefinitions(tu.getMacroDefinitions());
|
processMacroDefinitions(tu.getMacroDefinitions());
|
||||||
|
processPreprocessorProblems(tu.getPreprocessorProblems());
|
||||||
|
|
||||||
ASTVisitor visitor = null;
|
ASTVisitor visitor = null;
|
||||||
if (language == ParserLanguage.CPP) {
|
if (language == ParserLanguage.CPP) {
|
||||||
visitor = new CPPGenerateIndexVisitor(this, resourceFile);
|
visitor = new CPPGenerateIndexVisitor(this);
|
||||||
} else {
|
} else {
|
||||||
visitor = new CGenerateIndexVisitor(this, resourceFile);
|
visitor = new CGenerateIndexVisitor(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
tu.accept(visitor);
|
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)
|
/* (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)
|
* @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 start = fileLoc.getNodeOffset();
|
||||||
int end = start + fileLoc.getNodeLength();
|
int end = start + fileLoc.getNodeLength();
|
||||||
marker.setAttribute(IMarker.LOCATION, fileLoc.getStartingLineNumber());
|
marker.setAttribute(IMarker.LOCATION, fileLoc.getStartingLineNumber());
|
||||||
marker.setAttribute(IMarker.LOCATION, 1);
|
|
||||||
marker.setAttribute(IMarker.MESSAGE, INDEXER_MARKER_PREFIX + errorMessage);
|
marker.setAttribute(IMarker.MESSAGE, INDEXER_MARKER_PREFIX + errorMessage);
|
||||||
marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
|
marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
|
||||||
marker.setAttribute(IMarker.LINE_NUMBER, fileLoc.getStartingLineNumber());
|
marker.setAttribute(IMarker.LINE_NUMBER, fileLoc.getStartingLineNumber());
|
||||||
marker.setAttribute(IMarker.LINE_NUMBER, 1);
|
|
||||||
marker.setAttribute(IMarker.CHAR_START, start);
|
marker.setAttribute(IMarker.CHAR_START, start);
|
||||||
marker.setAttribute(IMarker.CHAR_END, end);
|
marker.setAttribute(IMarker.CHAR_END, end);
|
||||||
marker.setAttribute(INDEXER_MARKER_ORIGINATOR, originator.getFullPath().toString());
|
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 semantics = (getProblemMarkersEnabled() & SourceIndexer.SEMANTIC_PROBLEMS_BIT ) != 0;
|
||||||
boolean syntax = (getProblemMarkersEnabled() & SourceIndexer.SYNTACTIC_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))
|
problem.checkCategory(IASTProblem.SCANNER_RELATED))
|
||||||
return preprocessor && problem.getID() != IASTProblem.PREPROCESSOR_CIRCULAR_INCLUSION;
|
return preprocessor && problem.getID() != IASTProblem.PREPROCESSOR_CIRCULAR_INCLUSION;
|
||||||
else if (problem.checkCategory(IASTProblem.SEMANTICS_RELATED))
|
else if (problem.checkCategory(IASTProblem.SEMANTICS_RELATED))
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.eclipse.cdt.internal.core.index.nullindexer;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.AbstractCExtension;
|
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.ICDTIndexer;
|
||||||
import org.eclipse.cdt.core.index.IIndexStorage;
|
import org.eclipse.cdt.core.index.IIndexStorage;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndex;
|
import org.eclipse.cdt.internal.core.index.IIndex;
|
||||||
|
@ -67,8 +68,7 @@ public class NullIndexer extends AbstractCExtension implements ICDTIndexer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void indexerRemoved(IProject project) {
|
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 {
|
public void index(IFile document, IIndexerOutput output) throws IOException {
|
||||||
|
|
|
@ -25,7 +25,6 @@ import org.eclipse.cdt.core.index.ICDTIndexer;
|
||||||
import org.eclipse.cdt.core.index.IIndexChangeListener;
|
import org.eclipse.cdt.core.index.IIndexChangeListener;
|
||||||
import org.eclipse.cdt.core.index.IIndexStorage;
|
import org.eclipse.cdt.core.index.IIndexStorage;
|
||||||
import org.eclipse.cdt.core.index.IndexChangeEvent;
|
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.core.parser.util.ObjectSet;
|
||||||
import org.eclipse.cdt.internal.core.Util;
|
import org.eclipse.cdt.internal.core.Util;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndex;
|
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 PREPROCESSOR_PROBLEMS_BIT = 1;
|
||||||
public static final int SEMANTIC_PROBLEMS_BIT = 1 << 1;
|
public static final int SEMANTIC_PROBLEMS_BIT = 1 << 1;
|
||||||
public static final int SYNTACTIC_PROBLEMS_BIT = 1 << 2;
|
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_ID = "originalsourceindexer"; //$NON-NLS-1$
|
||||||
public static final String SOURCE_INDEXER_UNIQUE_ID = CCorePlugin.PLUGIN_ID + "." + SOURCE_INDEXER_ID; //$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 IndexManager indexManager = null;
|
||||||
|
|
||||||
protected HashSet jobSet = null;
|
protected HashSet jobSet = null;
|
||||||
private boolean indexEnabled = false;
|
|
||||||
|
|
||||||
protected long totalIndexTime = 0;
|
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)
|
* Warning: Does not check whether index is consistent (not being used)
|
||||||
*/
|
*/
|
||||||
public synchronized boolean haveEncounteredHeader(IPath projectPath, IPath filePath) {
|
public synchronized boolean haveEncounteredHeader(IPath projectPath, IPath filePath) {
|
||||||
|
SimpleLookupTable headerTable = indexStorage.getEncounteredHeaders();
|
||||||
if (!(indexStorage instanceof CIndexStorage))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
SimpleLookupTable headerTable = ((CIndexStorage)indexStorage).getEncounteredHeaders();
|
|
||||||
|
|
||||||
|
|
||||||
// Path is already canonical per construction
|
// Path is already canonical per construction
|
||||||
ObjectSet headers = (ObjectSet) headerTable.get(projectPath);
|
ObjectSet headers = (ObjectSet) headerTable.get(projectPath);
|
||||||
|
@ -269,7 +263,6 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
|
||||||
if (cext.length > 0) {
|
if (cext.length > 0) {
|
||||||
//initializeIndexerId();
|
//initializeIndexerId();
|
||||||
for (int i = 0; i < cext.length; i++) {
|
for (int i = 0; i < cext.length; i++) {
|
||||||
String id = cext[i].getID();
|
|
||||||
String orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
|
String orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
|
||||||
if (orig != null){
|
if (orig != null){
|
||||||
Integer tempInt = new Integer(orig);
|
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){
|
public void removeIndexerProblems( IResource resource){
|
||||||
String jobName = "remove markers"; //$NON-NLS-1$
|
indexManager.removeIndexerProblems(resource);
|
||||||
RemoveIndexMarkersJob job = new RemoveIndexMarkersJob( resource, jobName );
|
}
|
||||||
job.setRule( resource );
|
|
||||||
job.setPriority( Job.DECORATE );
|
|
||||||
job.schedule();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addIndexChangeListener(IIndexChangeListener listener) {
|
public void addIndexChangeListener(IIndexChangeListener listener) {
|
||||||
synchronized(indexChangeListeners) {
|
synchronized(indexChangeListeners) {
|
||||||
|
@ -422,8 +394,8 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
|
||||||
* No more job awaiting.
|
* No more job awaiting.
|
||||||
*/
|
*/
|
||||||
public void notifyIdle(long idlingTime){
|
public void notifyIdle(long idlingTime){
|
||||||
if (idlingTime > 1000 && ((CIndexStorage) indexStorage).getNeedToSave())
|
if (idlingTime > 1000 && indexStorage.getNeedToSave())
|
||||||
((CIndexStorage) indexStorage).saveIndexes();
|
indexStorage.saveIndexes();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (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)
|
* @see org.eclipse.cdt.core.index2.IIndexer#indexJobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IIndexJob)
|
||||||
*/
|
*/
|
||||||
public void indexJobFinishedNotification(IIndexJob job) {
|
public void indexJobFinishedNotification(IIndexJob job) {
|
||||||
((CIndexStorage)indexStorage).setNeedToSave(true);
|
indexStorage.setNeedToSave(true);
|
||||||
|
|
||||||
if (job instanceof AddCompilationUnitToIndex){
|
if (job instanceof AddCompilationUnitToIndex){
|
||||||
AddCompilationUnitToIndex tempJob = (AddCompilationUnitToIndex) job;
|
AddCompilationUnitToIndex tempJob = (AddCompilationUnitToIndex) job;
|
||||||
|
@ -655,15 +627,7 @@ public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void indexerRemoved(IProject project) {
|
public void indexerRemoved(IProject project) {
|
||||||
//Remove any existing problem markers
|
removeIndexerProblems(project);
|
||||||
/*try {
|
|
||||||
IMarker[] markers = project.findMarkers(ICModelMarker.INDEXER_MARKER, true, IResource.DEPTH_INFINITE);
|
|
||||||
for (int i=0; i<markers.length; i++){
|
|
||||||
removeIndexerProblems(markers[i].getResource());
|
|
||||||
}
|
|
||||||
} catch (CoreException e) {}*/
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,12 +19,14 @@ import org.eclipse.cdt.core.ICDescriptor;
|
||||||
import org.eclipse.cdt.core.ICExtensionReference;
|
import org.eclipse.cdt.core.ICExtensionReference;
|
||||||
import org.eclipse.cdt.core.index.ICDTIndexer;
|
import org.eclipse.cdt.core.index.ICDTIndexer;
|
||||||
import org.eclipse.cdt.core.index.IIndexStorage;
|
import org.eclipse.cdt.core.index.IIndexStorage;
|
||||||
|
import org.eclipse.cdt.core.model.ICModelMarker;
|
||||||
import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexRequest;
|
import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexRequest;
|
||||||
import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
|
import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
|
||||||
import org.eclipse.cdt.internal.core.index.sourceindexer.IndexRequest;
|
import org.eclipse.cdt.internal.core.index.sourceindexer.IndexRequest;
|
||||||
import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
|
import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
|
||||||
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
|
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
|
||||||
import org.eclipse.cdt.internal.core.search.processing.JobManager;
|
import org.eclipse.cdt.internal.core.search.processing.JobManager;
|
||||||
|
import org.eclipse.core.resources.IMarker;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.resources.IResourceDelta;
|
import org.eclipse.core.resources.IResourceDelta;
|
||||||
|
@ -375,4 +377,30 @@ public class IndexManager extends JobManager{
|
||||||
job.schedule();
|
job.schedule();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
2005-05-04 Vladimir Hirsl
|
||||||
|
Fix for PR 92599: [Indexer] Remove annotation markers preference from DOMIndexer & friends
|
||||||
|
Replaced indexer problem markers property page block for DOMIndexer.
|
||||||
|
(from SourceIndexerBlock to NullIndexerBlock).
|
||||||
|
Only inclusion not found preprocessor problem markers are going to be
|
||||||
|
generated (there isn't an option in UI to disable/enable them yet).
|
||||||
|
|
||||||
|
* plugin.xml
|
||||||
|
|
||||||
2005-04-22 Vladimir Hirsl
|
2005-04-22 Vladimir Hirsl
|
||||||
Added per file C/C++ Includes & Symbols property page to display
|
Added per file C/C++ Includes & Symbols property page to display
|
||||||
per file scanner info (discovered and user specified).
|
per file scanner info (discovered and user specified).
|
||||||
|
|
|
@ -1357,11 +1357,19 @@
|
||||||
indexerID="org.eclipse.cdt.core.nullindexer"
|
indexerID="org.eclipse.cdt.core.nullindexer"
|
||||||
name="%CDTIndexer.nullindexer"
|
name="%CDTIndexer.nullindexer"
|
||||||
id="org.eclipse.cdt.ui.nullindexerUI"/>
|
id="org.eclipse.cdt.ui.nullindexerUI"/>
|
||||||
|
<indexerUI
|
||||||
|
class="org.eclipse.cdt.ui.dialogs.NullIndexerBlock"
|
||||||
|
id="org.eclipse.cdt.ui.DOMASTSourceIndexerUI"
|
||||||
|
indexerID="org.eclipse.cdt.core.domsourceindexer"
|
||||||
|
name="%CDTIndexer.domsourceindexer"/>
|
||||||
|
<!-- to enable indexer problem markers property page
|
||||||
|
uncomment this entry and comment the previous one
|
||||||
<indexerUI
|
<indexerUI
|
||||||
class="org.eclipse.cdt.ui.dialogs.SourceIndexerBlock"
|
class="org.eclipse.cdt.ui.dialogs.SourceIndexerBlock"
|
||||||
id="org.eclipse.cdt.ui.DOMASTSourceIndexerUI"
|
id="org.eclipse.cdt.ui.DOMASTSourceIndexerUI"
|
||||||
indexerID="org.eclipse.cdt.core.domsourceindexer"
|
indexerID="org.eclipse.cdt.core.domsourceindexer"
|
||||||
name="%CDTIndexer.domsourceindexer"/>
|
name="%CDTIndexer.domsourceindexer"/>
|
||||||
|
-->
|
||||||
<indexerUI
|
<indexerUI
|
||||||
class="org.eclipse.cdt.ui.dialogs.CTagsIndexerBlock"
|
class="org.eclipse.cdt.ui.dialogs.CTagsIndexerBlock"
|
||||||
indexerID="org.eclipse.cdt.core.ctagsindexer"
|
indexerID="org.eclipse.cdt.core.ctagsindexer"
|
||||||
|
|
Loading…
Add table
Reference in a new issue