Bug 179454 - CCE in CPPTemplateDefinition
Summary: CCE in CPPTemplateDefinition
Status: VERIFIED FIXED
Alias: None
Product: CDT
Classification: Tools
Component: cdt-core (show other bugs)
Version: 4.0   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 4.0 M6   Edit
Assignee: Bryan Wilkinson CLA
QA Contact:
URL:
Whiteboard:
Keywords: contributed
Depends on:
Blocks:
 
Reported: 2007-03-27 04:35 EDT by Anton Leherbauer CLA
Modified: 2008-06-20 10:59 EDT (History)
1 user (show)

See Also:


Attachments
proposed patch (1.35 KB, patch)
2007-03-27 11:45 EDT, Bryan Wilkinson CLA
bjorn.freeman-benson: iplog+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Leherbauer CLA 2007-03-27 04:35:02 EDT
I got this exception when opening the GNU C++ include <complex> of my cygwin installation.

Exception in thread "org.eclipse.cdt.internal.ui.text.CReconciler" java.lang.ClassCastException: org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPTemplateTypeParameter
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateDefinition.updateTemplateParameterBindings(CPPTemplateDefinition.java:362)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateDefinition.addDefinition(CPPTemplateDefinition.java:316)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunctionTemplate.addDefinition(CPPFunctionTemplate.java:128)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:561)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:195)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:73)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplates.getContainingTemplate(CPPTemplates.java:167)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplates.createBinding(CPPTemplates.java:176)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor.createBinding(CPPVisitor.java:209)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.resolveBinding(CPPASTName.java:73)
	at org.eclipse.cdt.internal.ui.editor.SemanticToken.getBinding(SemanticToken.java:47)
	at org.eclipse.cdt.internal.ui.editor.SemanticHighlightings$MacroReferenceHighlighting.consumes(SemanticHighlightings.java:1234)
	at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler$PositionCollector.visitNode(SemanticHighlightingReconciler.java:231)
	at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler$PositionCollector.visit(SemanticHighlightingReconciler.java:177)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTName.accept(CPPASTName.java:127)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTSimpleTypeTemplateParameter.accept(CPPASTSimpleTypeTemplateParameter.java:80)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTemplateDeclaration.accept(CPPASTTemplateDeclaration.java:92)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTNamespaceDefinition.accept(CPPASTNamespaceDefinition.java:88)
	at org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTranslationUnit.accept(CPPASTTranslationUnit.java:566)
	at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler.reconcilePositions(SemanticHighlightingReconciler.java:436)
	at org.eclipse.cdt.internal.ui.editor.SemanticHighlightingReconciler.reconciled(SemanticHighlightingReconciler.java:401)
	at org.eclipse.cdt.internal.ui.editor.CEditor.reconciled(CEditor.java:2565)
	at org.eclipse.cdt.internal.ui.editor.CEditor.reconciled(CEditor.java:2504)
	at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.reconcile(CReconcilingStrategy.java:160)
	at org.eclipse.cdt.internal.ui.text.CReconcilingStrategy.initialReconcile(CReconcilingStrategy.java:169)
	at org.eclipse.jface.text.reconciler.MonoReconciler.initialProcess(MonoReconciler.java:103)
	at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:170)
Comment 1 Doug Schaefer CLA 2007-03-27 09:35:51 EDT
Hi Bryan, can you look at this?
Comment 2 Bryan Wilkinson CLA 2007-03-27 10:21:40 EDT
Yes, I'll have a look.
Comment 3 Bryan Wilkinson CLA 2007-03-27 11:45:23 EDT
Created attachment 62113 [details]
proposed patch

Patch modifies CPPVisitor.createBinding(ICPPASTElaboratedTypeSpecifier) to ignore IIndexBindings and forces it to create a new ICPPInternalBinding instead.  This behaviour is already implemented in other CPPVisitor.createBinding(...) methods.
Comment 4 Doug Schaefer CLA 2007-03-27 11:57:46 EDT
Patch applied. Thanks, Bryan.
Comment 5 Anton Leherbauer CLA 2007-03-28 02:48:48 EDT
Verified. Thanks.