View | Details | Raw Unified | Return to bug 292174
Collapse All | Expand All

(-)parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java (-10 / +19 lines)
Lines 905-913 Link Here
905
			if (elaboratedSpecifier.isFriend()) {
905
			if (elaboratedSpecifier.isFriend()) {
906
				pdomName.setIsFriendSpecifier(true);
906
				pdomName.setIsFriendSpecifier(true);
907
				PDOMName enclClassName= (PDOMName) pdomName.getEnclosingDefinition();
907
				PDOMName enclClassName= (PDOMName) pdomName.getEnclosingDefinition();
908
				PDOMBinding enclClassBinding= enclClassName.getBinding();
908
				if (enclClassName != null)
909
				if (enclClassBinding instanceof PDOMCPPClassType) {
909
				{
910
					((PDOMCPPClassType)enclClassBinding).addFriend(new PDOMCPPFriend(this, pdomName));
910
					PDOMBinding enclClassBinding= enclClassName.getBinding();
911
					if (enclClassBinding instanceof PDOMCPPClassType) {
912
						((PDOMCPPClassType)enclClassBinding).addFriend(new PDOMCPPFriend(this, pdomName));
913
					}
911
				}
914
				}
912
			}
915
			}
913
		} else if (parentNode instanceof ICPPASTFunctionDeclarator) {			
916
		} else if (parentNode instanceof ICPPASTFunctionDeclarator) {			
Lines 917-925 Link Here
917
					if (((ICPPASTDeclSpecifier)grandparentNode.getDeclSpecifier()).isFriend()) {
920
					if (((ICPPASTDeclSpecifier)grandparentNode.getDeclSpecifier()).isFriend()) {
918
						pdomName.setIsFriendSpecifier(true);
921
						pdomName.setIsFriendSpecifier(true);
919
						PDOMName enclClassName= (PDOMName) pdomName.getEnclosingDefinition();
922
						PDOMName enclClassName= (PDOMName) pdomName.getEnclosingDefinition();
920
						PDOMBinding enclClassBinding= enclClassName.getBinding();
923
						if (enclClassName != null)
921
						if (enclClassBinding instanceof PDOMCPPClassType) {
924
						{
922
							((PDOMCPPClassType)enclClassBinding).addFriend(new PDOMCPPFriend(this, pdomName));
925
							PDOMBinding enclClassBinding= enclClassName.getBinding();
926
							if (enclClassBinding instanceof PDOMCPPClassType) {
927
								((PDOMCPPClassType)enclClassBinding).addFriend(new PDOMCPPFriend(this, pdomName));
928
							}
923
						}
929
						}
924
					}
930
					}
925
				}
931
				}
Lines 965-974 Link Here
965
		}
971
		}
966
		if (pdomName.isFriendSpecifier()) {
972
		if (pdomName.isFriendSpecifier()) {
967
			PDOMName enclClassName= (PDOMName) pdomName.getEnclosingDefinition();
973
			PDOMName enclClassName= (PDOMName) pdomName.getEnclosingDefinition();
968
			PDOMBinding enclClassBinding= enclClassName.getBinding();
974
			if (enclClassName != null)
969
			if (enclClassBinding instanceof PDOMCPPClassType) {
975
			{
970
				PDOMCPPClassType ownerClass = (PDOMCPPClassType)enclClassBinding;
976
				PDOMBinding enclClassBinding= enclClassName.getBinding();
971
				ownerClass.removeFriend(pdomName);
977
				if (enclClassBinding instanceof PDOMCPPClassType) {
978
					PDOMCPPClassType ownerClass = (PDOMCPPClassType)enclClassBinding;
979
					ownerClass.removeFriend(pdomName);
980
				}
972
			}
981
			}
973
		}
982
		}
974
	}
983
	}

Return to bug 292174