Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Schorn2007-06-18 14:16:45 +0000
committerMarkus Schorn2007-06-18 14:16:45 +0000
commitaca7156c0cd83bc3ecec9fc7c8300d179f54716f (patch)
treebfc427c92ced63aedfab6f06ff91f8d13f91db79
parentf7b4561c05e7c788eb639ca7c7a4ca9def0f3396 (diff)
downloadorg.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.java10
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;

Back to the top