Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 287907 | Differences between
and this patch

Collapse All | Expand All

(-)parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java (-1 / +1 lines)
Lines 609-615 Link Here
609
609
610
	//	template <class U1> class Test;
610
	//	template <class U1> class Test;
611
	//	template <class U2> void f();
611
	//	template <class U2> void f();
612
	public void _test253080() throws Exception {
612
	public void test253080() throws Exception {
613
		waitForIndexer();
613
		waitForIndexer();
614
614
615
		String[] testData = getContentsForTest(3);
615
		String[] testData = getContentsForTest(3);
(-)parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassTemplate.java (-4 / +16 lines)
Lines 30-35 Link Here
30
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateNonTypeParameter;
30
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateNonTypeParameter;
31
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
31
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
32
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTemplateParameter;
32
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateTemplateParameter;
33
import org.eclipse.cdt.internal.core.Util;
33
import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
34
import org.eclipse.cdt.internal.core.dom.parser.ProblemBinding;
34
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache;
35
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache;
35
import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
36
import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
Lines 55-60 Link Here
55
	
56
	
56
	public PDOMCPPClassTemplate(PDOM pdom, PDOMNode parent, ICPPClassTemplate template)	throws CoreException {
57
	public PDOMCPPClassTemplate(PDOM pdom, PDOMNode parent, ICPPClassTemplate template)	throws CoreException {
57
		super(pdom, parent, template);
58
		super(pdom, parent, template);
59
		try {
60
			ICPPTemplateParameter[] templateParameters = template.getTemplateParameters();
61
			PDOMCPPLinkage linkage = (PDOMCPPLinkage) getLinkageImpl();
62
			PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + PARAMETERS, linkage);
63
			for (ICPPTemplateParameter parameter : templateParameters) {
64
				PDOMNode pdomParameter = linkage.createBinding(this, parameter);
65
				if (pdomParameter != null) {
66
					list.addMember(pdomParameter);
67
				}
68
			}
69
		} catch (DOMException e) {
70
			throw new CoreException(Util.createStatus(e));
71
		}
58
	}
72
	}
59
73
60
	public PDOMCPPClassTemplate(PDOM pdom, int bindingRecord) {
74
	public PDOMCPPClassTemplate(PDOM pdom, int bindingRecord) {
Lines 140-149 Link Here
140
154
141
	@Override
155
	@Override
142
	public void addChild(PDOMNode member) throws CoreException {
156
	public void addChild(PDOMNode member) throws CoreException {
143
		if (member instanceof ICPPTemplateParameter) {
157
		// Template parameters are added in ctor.
144
			PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + PARAMETERS, getLinkageImpl());
158
		if (!(member instanceof ICPPTemplateParameter)) {
145
			list.addMember(member);
146
		} else {
147
			super.addChild(member);
159
			super.addChild(member);
148
		}
160
		}
149
	}
161
	}
(-)parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunctionTemplate.java (-4 / +15 lines)
Lines 24-29 Link Here
24
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
24
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateArgument;
25
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance;
25
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance;
26
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
26
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
27
import org.eclipse.cdt.internal.core.Util;
27
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache;
28
import org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInstanceCache;
28
import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
29
import org.eclipse.cdt.internal.core.index.IIndexCPPBindingConstants;
29
import org.eclipse.cdt.internal.core.pdom.PDOM;
30
import org.eclipse.cdt.internal.core.pdom.PDOM;
Lines 50-55 Link Here
50
	public PDOMCPPFunctionTemplate(PDOM pdom, PDOMNode parent, ICPPFunctionTemplate template)
51
	public PDOMCPPFunctionTemplate(PDOM pdom, PDOMNode parent, ICPPFunctionTemplate template)
51
			throws CoreException {
52
			throws CoreException {
52
		super(pdom, parent, (ICPPFunction) template, false);
53
		super(pdom, parent, (ICPPFunction) template, false);
54
		try {
55
			ICPPTemplateParameter[] templateParameters = template.getTemplateParameters();
56
			PDOMCPPLinkage linkage = (PDOMCPPLinkage) getLinkageImpl();
57
			PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + TEMPLATE_PARAMS, linkage);
58
			for (ICPPTemplateParameter parameter : templateParameters) {
59
				PDOMNode pdomParameter = linkage.createBinding(this, parameter);
60
				if (pdomParameter != null) {
61
					list.addMember(pdomParameter);
62
				}
63
			}
64
		} catch (DOMException e) {
65
			throw new CoreException(Util.createStatus(e));
66
		}
53
	}
67
	}
54
68
55
	public PDOMCPPFunctionTemplate(PDOM pdom, int bindingRecord) {
69
	public PDOMCPPFunctionTemplate(PDOM pdom, int bindingRecord) {
Lines 100-109 Link Here
100
114
101
	@Override
115
	@Override
102
	public void addChild(PDOMNode member) throws CoreException {
116
	public void addChild(PDOMNode member) throws CoreException {
103
		if (member instanceof ICPPTemplateParameter) {
117
		// Template parameters are added in ctor.
104
			PDOMNodeLinkedList list = new PDOMNodeLinkedList(pdom, record + TEMPLATE_PARAMS, getLinkageImpl());
105
			list.addMember(member);
106
		} 
107
	}
118
	}
108
119
109
	@Override
120
	@Override
(-)parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java (-1 / +2 lines)
Lines 30-35 Link Here
30
import org.eclipse.cdt.core.dom.ast.IBinding;
30
import org.eclipse.cdt.core.dom.ast.IBinding;
31
import org.eclipse.cdt.core.dom.ast.IMacroBinding;
31
import org.eclipse.cdt.core.dom.ast.IMacroBinding;
32
import org.eclipse.cdt.core.dom.ast.IParameter;
32
import org.eclipse.cdt.core.dom.ast.IParameter;
33
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateParameter;
33
import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDirective;
34
import org.eclipse.cdt.core.dom.ast.cpp.ICPPUsingDirective;
34
import org.eclipse.cdt.core.index.IIndexFileLocation;
35
import org.eclipse.cdt.core.index.IIndexFileLocation;
35
import org.eclipse.cdt.core.index.IIndexInclude;
36
import org.eclipse.cdt.core.index.IIndexInclude;
Lines 305-311 Link Here
305
306
306
	private IIndexFragmentName createPDOMName(PDOMLinkage linkage, IASTName name, PDOMName caller) {
307
	private IIndexFragmentName createPDOMName(PDOMLinkage linkage, IASTName name, PDOMName caller) {
307
		final IBinding binding = name.getBinding();
308
		final IBinding binding = name.getBinding();
308
		if (binding instanceof IParameter) {
309
		if (binding instanceof IParameter || binding instanceof ICPPTemplateParameter) {
309
			return null;
310
			return null;
310
		}
311
		}
311
		try {
312
		try {

Return to bug 287907