Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 364226

Summary: ClassCastException indexing template redeclaration
Product: [Tools] CDT Reporter: Marc-AndrĂ© Laperle <malaperle>
Component: cdt-parserAssignee: Markus Schorn <mschorn.eclipse>
Status: RESOLVED FIXED QA Contact: Markus Schorn <mschorn.eclipse>
Severity: normal    
Priority: P3 CC: cdtdoug
Version: 8.0   
Target Milestone: 8.1.0   
Hardware: All   
OS: All   
Whiteboard:
Bug Depends on:    
Bug Blocks: 364188    

Description Marc-André Laperle CLA 2011-11-19 14:53:10 EST
Tested with 8.0.0, 8.0.1 and master. From bug 364188.

This code doesn't compile but I don't think it should trigger an exception when indexing:


template<template<class > class Y> class Template;
template<class> class Template;



java.lang.ClassCastException: org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleTypeTemplateParameter cannot be cast to org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTemplateParameter.getTemplateParameters(CPPTemplateTemplateParameter.java:77)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPTemplateTemplateParameter.update(PDOMCPPTemplateTemplateParameter.java:217)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPClassTemplate.updateTemplateParameters(PDOMCPPClassTemplate.java:157)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPClassTemplate.update(PDOMCPPClassTemplate.java:122)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.addBinding(PDOMCPPLinkage.java:298)
	at org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkage.addBinding(PDOMCPPLinkage.java:237)
	at org.eclipse.cdt.internal.core.pdom.dom.PDOMFile.createPDOMName(PDOMFile.java:490)
	at org.eclipse.cdt.internal.core.pdom.dom.PDOMFile.addNames(PDOMFile.java:457)
	at org.eclipse.cdt.internal.core.pdom.WritablePDOM.addFileContent(WritablePDOM.java:132)
	at org.eclipse.cdt.internal.core.index.WritableCIndex.setFileContent(WritableCIndex.java:93)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.storeFileInIndex(PDOMWriter.java:560)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.storeSymbolsInIndex(PDOMWriter.java:264)
	at org.eclipse.cdt.internal.core.pdom.PDOMWriter.addSymbols(PDOMWriter.java:212)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.writeToIndex(AbstractIndexerTask.java:1112)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseFile(AbstractIndexerTask.java:961)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.parseLinkage(AbstractIndexerTask.java:786)
	at org.eclipse.cdt.internal.core.pdom.AbstractIndexerTask.runTask(AbstractIndexerTask.java:494)
	at org.eclipse.cdt.internal.core.pdom.indexer.PDOMIndexerTask.run(PDOMIndexerTask.java:137)
	at org.eclipse.cdt.internal.core.pdom.PDOMIndexerJob.run(PDOMIndexerJob.java:137)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Comment 1 Markus Schorn CLA 2011-11-30 05:03:48 EST
Thanks for the sample code!
Added testcase and fix.
Comment 2 CDT Genie CLA 2011-11-30 09:23:10 EST
*** cdt git genie on behalf of Markus Schorn ***

    Bug 364226: Invalid redeclaration of class-template.

[*] http://git.eclipse.org/c/cdt/org.eclipse.cdt.git/commit/?id=6e0560d4f59e2091b15bc5359774fff628108f2d