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

Bug 295674 - Friend functions are *not* methods.

Change-Id: Iad77cedd5c28044d68c66348526ac3213c24f52a
Reviewed-on: https://git.eclipse.org/r/11662
Reviewed-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
IP-Clean: Sergey Prigogin <eclipse.sprigogin@gmail.com>
Tested-by: Sergey Prigogin <eclipse.sprigogin@gmail.com>
This commit is contained in:
Jesse Weinstein 2013-04-04 15:03:25 -04:00 committed by Sergey Prigogin
parent 28ae178c70
commit 1f8ea23acb

View file

@ -16,7 +16,9 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path; 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.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.IASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.IASTName; 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.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IBinding; 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.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.ICPPASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
@ -128,8 +131,13 @@ public class NodeHelper {
if (simpleDeclaration == null) { if (simpleDeclaration == null) {
return false; return false;
} }
return simpleDeclaration.getDeclarators().length == 1 && final IASTDeclSpecifier declSpecifier = simpleDeclaration.getDeclSpecifier();
simpleDeclaration.getDeclarators()[0] instanceof ICPPASTFunctionDeclarator; 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) { public static boolean isContainedInTemplateDeclaration(IASTNode node) {