diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java index 6267671fd76..b17827eb998 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPSemantics.java @@ -1108,13 +1108,14 @@ public class CPPSemantics { ICPPBase [] bases = null; if( lookIn instanceof ICPPClassScope ){ ICPPClassType c = ((ICPPClassScope)lookIn).getClassType(); - bases = c.getBases(); + if (c != null) + bases = c.getBases(); } Object inherited = null; Object result = null; - if( bases.length == 0 ) + if( bases == null || bases.length == 0 ) return null; //use data to detect circular inheritance diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java index 3b4d4652c39..41e78f62082 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java @@ -40,7 +40,9 @@ public class PDOMCField extends PDOMMember implements IField { } public IType getType() throws DOMException { - throw new PDOMNotImplementedError(); + return null; + // TODO - do we need the real type? + //throw new PDOMNotImplementedError(); } public boolean isStatic() throws DOMException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java index 8bf59b34de2..22530535735 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java @@ -54,7 +54,7 @@ public class PDOMCStructure extends PDOMMemberOwner implements ICompositeType { public IField findField(String name) throws DOMException { try { PDOMMember[] members = findMembers(name.toCharArray()); - return (PDOMCField)members[0]; + return members.length > 0 ? (PDOMCField)members[0] : null; } catch (CoreException e) { CCorePlugin.log(e); return null; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java index 28555841069..733b1a57b27 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java @@ -13,8 +13,10 @@ package org.eclipse.cdt.internal.core.pdom.dom.c; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTName; +import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.IVariable; +import org.eclipse.cdt.internal.core.dom.parser.c.CVariable; import org.eclipse.cdt.internal.core.pdom.PDOMDatabase; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -29,6 +31,8 @@ public class PDOMCVariable extends PDOMBinding implements IVariable { public PDOMCVariable(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException { super(pdom, parent, name, PDOMCLinkage.CVARIABLE); + CVariable binding = (CVariable)name.getBinding(); + IType type = binding.getType(); } public PDOMCVariable(PDOMDatabase pdom, int record) { @@ -40,7 +44,9 @@ public class PDOMCVariable extends PDOMBinding implements IVariable { } public IType getType() throws DOMException { - throw new PDOMNotImplementedError(); + return null; + // TODO - do we need the real type? + //throw new PDOMNotImplementedError(); } public boolean isStatic() throws DOMException { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java index e90b280f1de..c88026bdbea 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java @@ -26,6 +26,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor; import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.internal.core.pdom.PDOMDatabase; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMMember; import org.eclipse.cdt.internal.core.pdom.dom.PDOMMemberOwner; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -53,7 +54,11 @@ public class PDOMCPPClassType extends PDOMMemberOwner implements ICPPClassType, } public boolean isSameType(IType type) { - throw new PDOMNotImplementedError(); + if (type instanceof PDOMBinding) + return record == ((PDOMBinding)type).getRecord(); + else + // TODO - should we check for real? + return false; } public Object clone() { @@ -121,7 +126,9 @@ public class PDOMCPPClassType extends PDOMMemberOwner implements ICPPClassType, } public ICPPClassType getClassType() { - throw new PDOMNotImplementedError(); + return null; + // TODO - do we need the real type? + //throw new PDOMNotImplementedError(); } public ICPPMethod[] getImplicitMethods() { @@ -148,7 +155,7 @@ public class PDOMCPPClassType extends PDOMMemberOwner implements ICPPClassType, try { PDOMMember[] matches = findMembers(name.toCharArray()); // TODO - need to check for overloads - return matches[0]; + return matches.length > 0 ? matches[0] : null; } catch (CoreException e) { CCorePlugin.log(e); return null;