From 3898f8eaa7c0d64f56a5ebf2c628ca192506b0b4 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 24 Nov 2008 09:36:43 +0000 Subject: [PATCH] References to template parameters stored in index, bug 256095 --- .../cdt/internal/core/pdom/PDOMWriter.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java index 5b7ef7e3d93..ef7715ed44b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMWriter.java @@ -38,8 +38,10 @@ import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUsingDirective; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassTemplate; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredTemplateInstance; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace; import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceAlias; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier; import org.eclipse.cdt.core.index.IIndexFileLocation; import org.eclipse.cdt.core.parser.IProblem; @@ -243,17 +245,19 @@ abstract public class PDOMWriter { if (fShowProblems) { reportProblem((IProblemBinding) binding); } - } - else if (name.isReference()) { - if ((fSkipReferences & SKIP_TYPE_REFERENCES) != 0) { - if (isTypeReferenceBinding(binding) && !isRequiredReference(name)) { + } else if (name.isReference()) { + if (binding instanceof ICPPTemplateParameter || + binding instanceof ICPPDeferredTemplateInstance || + ((fSkipReferences & SKIP_TYPE_REFERENCES) != 0 && isTypeReferenceBinding(binding))) { + if (!isRequiredReference(name)) { na[0]= null; - fStatistics.fReferenceCount--; + } else { + fStatistics.fReferenceCount++; } + } else { + fStatistics.fReferenceCount++; } - fStatistics.fReferenceCount++; - } - else { + } else { fStatistics.fDeclarationCount++; } } catch (RuntimeException e) {