From 746bb4fda5490685edf33a06da973552ca2e5619 Mon Sep 17 00:00:00 2001 From: Andrew Niefer Date: Mon, 28 Mar 2005 19:46:26 +0000 Subject: [PATCH] fix ClassCastException --- .../internal/core/dom/parser/cpp/CPPBaseClause.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBaseClause.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBaseClause.java index 3ea45c51456..b3efb01834a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBaseClause.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPBaseClause.java @@ -15,6 +15,8 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp; import org.eclipse.cdt.core.dom.ast.DOMException; +import org.eclipse.cdt.core.dom.ast.IBinding; +import org.eclipse.cdt.core.dom.ast.IProblemBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBase; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier; @@ -50,7 +52,14 @@ public class CPPBaseClause implements ICPPBase { * @see org.eclipse.cdt.core.dom.ast.cpp.ICPPBase#getBaseClass() */ public ICPPClassType getBaseClass() { - return (ICPPClassType) base.getName().resolveBinding(); + IBinding baseClass = base.getName().resolveBinding(); + if( baseClass instanceof ICPPClassType ) + return (ICPPClassType) baseClass; + else if( baseClass instanceof IProblemBinding ){ + return new CPPClassType.CPPClassTypeProblem( ((IProblemBinding)baseClass).getID(), base.getName().toCharArray() ); + } + + return new CPPClassType.CPPClassTypeProblem( IProblemBinding.SEMANTIC_NAME_NOT_FOUND, base.getName().toCharArray() ); } /* (non-Javadoc)