mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-09-10 12:03:16 +02:00
Bug 309096: NPE in pointer to member type.
This commit is contained in:
parent
d6fd606c63
commit
e734801e92
1 changed files with 15 additions and 10 deletions
|
@ -68,18 +68,23 @@ public class CPPPointerToMemberType extends CPPPointerType implements ICPPPointe
|
|||
* @see org.eclipse.cdt.core.dom.ast.cpp.ICPPPointerToMemberType#getMemberOfClass()
|
||||
*/
|
||||
public IType getMemberOfClass() {
|
||||
if (classType == null) {
|
||||
if (classType == null) {
|
||||
IASTName name;
|
||||
IBinding binding= null;
|
||||
ICPPASTPointerToMember pm = operator;
|
||||
IASTName name = pm.getName();
|
||||
if (name instanceof ICPPASTQualifiedName) {
|
||||
IASTName[] ns = ((ICPPASTQualifiedName) name).getNames();
|
||||
if (ns.length > 1)
|
||||
name = ns[ns.length - 2];
|
||||
else
|
||||
name = ns[ns.length - 1];
|
||||
if (pm == null) {
|
||||
name= new CPPASTName();
|
||||
} else {
|
||||
name = pm.getName();
|
||||
if (name instanceof ICPPASTQualifiedName) {
|
||||
IASTName[] ns = ((ICPPASTQualifiedName) name).getNames();
|
||||
if (ns.length > 1)
|
||||
name = ns[ns.length - 2];
|
||||
else
|
||||
name = ns[ns.length - 1];
|
||||
}
|
||||
binding = name.resolvePreBinding();
|
||||
}
|
||||
|
||||
IBinding binding = name.resolvePreBinding();
|
||||
if (binding instanceof IType) {
|
||||
classType = (IType) binding;
|
||||
} else {
|
||||
|
|
Loading…
Add table
Reference in a new issue