From 1f8ea23acb209ef599d6b58802deb88c5897b66e Mon Sep 17 00:00:00 2001 From: Jesse Weinstein Date: Thu, 4 Apr 2013 15:03:25 -0400 Subject: [PATCH] Bug 295674 - Friend functions are *not* methods. Change-Id: Iad77cedd5c28044d68c66348526ac3213c24f52a Reviewed-on: https://git.eclipse.org/r/11662 Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../internal/ui/refactoring/utils/NodeHelper.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) mode change 100644 => 100755 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java old mode 100644 new mode 100755 index 2e8d2f95fde..51b79dc4d55 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/refactoring/utils/NodeHelper.java @@ -16,7 +16,9 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; +import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclaration; +import org.eclipse.cdt.core.dom.ast.IASTDeclarator; import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; import org.eclipse.cdt.core.dom.ast.IASTName; @@ -25,6 +27,7 @@ import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier; +import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; @@ -128,8 +131,13 @@ public class NodeHelper { if (simpleDeclaration == null) { return false; } - return simpleDeclaration.getDeclarators().length == 1 && - simpleDeclaration.getDeclarators()[0] instanceof ICPPASTFunctionDeclarator; + final IASTDeclSpecifier declSpecifier = simpleDeclaration.getDeclSpecifier(); + final IASTDeclarator[] declarators = simpleDeclaration.getDeclarators(); + if ((declSpecifier instanceof ICPPASTDeclSpecifier) + && ((ICPPASTDeclSpecifier) declSpecifier).isFriend()) { + return false; + } + return declarators.length == 1 && declarators[0] instanceof ICPPASTFunctionDeclarator; } public static boolean isContainedInTemplateDeclaration(IASTNode node) {