From b66ffc6cd2aad556f9f7cf8bfc0f1cea299f2bc1 Mon Sep 17 00:00:00 2001 From: Vladimir Hirsl Date: Tue, 21 Jun 2005 17:36:13 +0000 Subject: [PATCH] Fix for 100598: DOM Indexer encodes weird things when indexing a CPP file in a C project. Fixed correlation between parser's parser language and indexer visitor. --- core/org.eclipse.cdt.core/ChangeLog | 7 +++++++ .../index/domsourceindexer/CGenerateIndexVisitor.java | 11 +++++++---- .../domsourceindexer/DOMSourceIndexerRunner.java | 6 ++---- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index b0d4bf98933..f75ba938282 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,10 @@ +2005-06-21 Vladimir Hirsl + Fix for 100598: DOM Indexer encodes weird things when indexing a CPP file in a C project + Fixed correlation between parser's parser language and indexer visitor. + + * index/org/eclipse/cdt/internal/core/index/domsourceindexer/CGenerateIndexVisitor.java + * index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSoureIndexerRunner.java + 2005-06-20 Vladimir Hirsl Completed optimization #2 in PR 91801: [Indexer] Optimize header file visiting/indexing Encountered headers are removed before instead of after indexing the whole project, thus 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 042275d453f..880298e2119 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 @@ -185,10 +185,13 @@ public class CGenerateIndexVisitor extends CASTVisitor { if (entryKind != IIndex.REFERENCE) { modifiers = IndexVisitorUtil.getModifiers(name, binding); } - TypeEntry indexEntry = new TypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber); - indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); - - indexEntry.serialize(indexer.getOutput()); + // guard against cpp entities in c project + if (iEntryType != 0) { + TypeEntry indexEntry = new TypeEntry(iEntryType, entryKind, qualifiedName, modifiers, fileNumber); + indexEntry.setNameOffset(fileLoc.getNodeOffset(), fileLoc.getNodeLength(), IIndex.OFFSET); + + indexEntry.serialize(indexer.getOutput()); + } } else if (binding instanceof IEnumeration){ int modifiers = 0; 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 0d6424eb90e..0bb659bad4d 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 @@ -105,9 +105,6 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner { // Add the name of the file to the index output.addIndexedFile(file.getFullPath().toString()); - //C or CPP? - ParserLanguage language = CoreModel.hasCCNature(resourceFile.getProject()) ? - ParserLanguage.CPP : ParserLanguage.C; IASTTranslationUnit tu = null; long startTime = 0, parseTime = 0, endTime = 0; String error = null; @@ -122,7 +119,8 @@ public class DOMSourceIndexerRunner extends AbstractIndexerRunner { parseTime = System.currentTimeMillis(); ASTVisitor visitor = null; - if (language == ParserLanguage.CPP) { + //C or CPP? + if (tu.getParserLanguage() == ParserLanguage.CPP) { visitor = new CPPGenerateIndexVisitor(this); } else { visitor = new CGenerateIndexVisitor(this);