From 8d2d30bf520c68907c060e81002715cbcc9c1ba9 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Tue, 23 Aug 2016 05:39:28 -0700 Subject: [PATCH] Bug 485889 - ClassCastException in CPPClassScope.findInheritedConstructorsSourceBases() Added diagnostic logging. Change-Id: I9b48751c11901c78e4938148d2bd8d490efe9209 --- .../internal/core/dom/parser/cpp/CPPClassScope.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/CPPClassScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java index 35619cef5cc..053ade7c537 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassScope.java @@ -24,6 +24,7 @@ import static org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUti import java.util.Arrays; +import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.ast.EScopeKind; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; @@ -62,6 +63,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPSemantics; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.SemanticUtil; import org.eclipse.cdt.internal.core.parser.util.ContentAssistMatcherFactory; +import org.eclipse.core.runtime.IStatus; /** * Base implementation for C++ scopes. @@ -168,7 +170,13 @@ public class CPPClassScope extends CPPScope implements ICPPClassScope { for (ICPPBase base : bases) { IType baseClass = base.getBaseClassType(); if (type.isSameType(baseClass)) { - ((CPPBaseClause) base).setInheritedConstructorsSource(true); + if (base instanceof CPPBaseClause) { + ((CPPBaseClause) base).setInheritedConstructorsSource(true); + } else { + CCorePlugin.log(IStatus.ERROR, "Unexpected type of base (" //$NON-NLS-1$ + + base.getClass().getSimpleName() + ") for '" //$NON-NLS-1$ + + compositeTypeSpec.getRawSignature() + "'"); //$NON-NLS-1$ + } } } }