diff options
author | Markus Schorn | 2007-06-18 14:16:45 +0000 |
---|---|---|
committer | Markus Schorn | 2007-06-18 14:16:45 +0000 |
commit | aca7156c0cd83bc3ecec9fc7c8300d179f54716f (patch) | |
tree | bfc427c92ced63aedfab6f06ff91f8d13f91db79 | |
parent | f7b4561c05e7c788eb639ca7c7a4ca9def0f3396 (diff) | |
download | org.eclipse.cdt-aca7156c0cd83bc3ecec9fc7c8300d179f54716f.tar.gz org.eclipse.cdt-aca7156c0cd83bc3ecec9fc7c8300d179f54716f.tar.xz org.eclipse.cdt-aca7156c0cd83bc3ecec9fc7c8300d179f54716f.zip |
Fix for 193112, ClassCastException in binding resolution.
-rw-r--r-- | core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunctionTemplate.java | 10 |
1 files changed, 9 insertions, 1 deletions
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; |