diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java index 9615798cbf8..79ea957844e 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassType.java @@ -247,13 +247,22 @@ public class CPPClassType implements ICPPClassType, ICPPInternalClassType { private ICPPASTCompositeTypeSpecifier getCompositeTypeSpecifier(){ if( definition != null ){ - return (ICPPASTCompositeTypeSpecifier) definition.getParent(); + IASTNode node = definition; + while( node instanceof IASTName ) + node = node.getParent(); + if( node instanceof ICPPASTCompositeTypeSpecifier ) + return (ICPPASTCompositeTypeSpecifier)node; } return null; } private ICPPASTElaboratedTypeSpecifier getElaboratedTypeSpecifier() { - if( declarations != null ) - return (ICPPASTElaboratedTypeSpecifier) declarations[0].getParent(); + if( declarations != null ){ + IASTNode node = declarations[0]; + while( node instanceof IASTName ) + node = node.getParent(); + if( node instanceof ICPPASTElaboratedTypeSpecifier ) + return (ICPPASTElaboratedTypeSpecifier)node; + } return null; } /* (non-Javadoc)