1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

NPE for illegal friend declarations on global scope, bug 292174.

This commit is contained in:
Markus Schorn 2009-10-14 11:22:27 +00:00
parent 241e84b54e
commit 0cfed67288

View file

@ -892,11 +892,13 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
if (elaboratedSpecifier.isFriend()) {
pdomName.setIsFriendSpecifier(true);
PDOMName enclClassName = (PDOMName) pdomName.getEnclosingDefinition();
if (enclClassName != null) {
PDOMBinding enclClassBinding = enclClassName.getBinding();
if (enclClassBinding instanceof PDOMCPPClassType) {
((PDOMCPPClassType) enclClassBinding).addFriend(new PDOMCPPFriend(this, pdomName));
}
}
}
} else if (parentNode instanceof ICPPASTFunctionDeclarator) {
if (parentNode.getParent() instanceof IASTSimpleDeclaration) {
IASTSimpleDeclaration grandparentNode = (IASTSimpleDeclaration) parentNode.getParent();
@ -904,6 +906,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
if (((ICPPASTDeclSpecifier) grandparentNode.getDeclSpecifier()).isFriend()) {
pdomName.setIsFriendSpecifier(true);
PDOMName enclClassName = (PDOMName) pdomName.getEnclosingDefinition();
if (enclClassName != null) {
PDOMBinding enclClassBinding = enclClassName.getBinding();
if (enclClassBinding instanceof PDOMCPPClassType) {
((PDOMCPPClassType) enclClassBinding).addFriend(new PDOMCPPFriend(this, pdomName));
@ -913,6 +916,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
}
}
}
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage#getUsingDirectives()
@ -952,6 +956,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
}
if (pdomName.isFriendSpecifier()) {
PDOMName enclClassName = (PDOMName) pdomName.getEnclosingDefinition();
if (enclClassName != null) {
PDOMBinding enclClassBinding = enclClassName.getBinding();
if (enclClassBinding instanceof PDOMCPPClassType) {
PDOMCPPClassType ownerClass = (PDOMCPPClassType) enclClassBinding;
@ -959,6 +964,7 @@ class PDOMCPPLinkage extends PDOMLinkage implements IIndexCPPBindingConstants {
}
}
}
}
@Override
protected PDOMFile getLocalToFile(IBinding binding, PDOMBinding glob) throws CoreException {