From aca7156c0cd83bc3ecec9fc7c8300d179f54716f Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 18 Jun 2007 14:16:45 +0000 Subject: [PATCH] Fix for 193112, ClassCastException in binding resolution. --- .../core/dom/parser/cpp/CPPFunctionTemplate.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java index 13fbdb746c0..50e2c29eaf0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java @@ -26,6 +26,7 @@ import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunctionType; import org.eclipse.cdt.core.dom.ast.IParameter; +import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.IScope; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier; @@ -180,7 +181,14 @@ public class CPPFunctionTemplate extends CPPTemplateDefinition implements ICPPFu if( size > 0 ){ for( int i = 0; i < size; i++ ){ IASTParameterDeclaration p = params[i]; - result[i] = (IParameter) p.getDeclarator().getName().resolveBinding(); + final IASTName pname = p.getDeclarator().getName(); + final IBinding binding= pname.resolveBinding(); + if (binding instanceof IParameter) { + result[i]= (IParameter) binding; + } + else { + result[i] = new CPPParameter.CPPParameterProblem(p, IProblemBinding.SEMANTIC_INVALID_TYPE, pname.toCharArray()); + } } } return result;