From 6ca469c8d4847d066767a95b9e4c4a21927a8bcc Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Tue, 26 Jul 2005 19:50:35 +0000 Subject: [PATCH] 2005-07-26 Alain Magloire Fix PR 100992: IMethod were generated for implementation, we should generate IFunction for method defines outside of the class shell. * model/org/eclipse/cdt/internal/core/model/CModelBuilder.java --- core/org.eclipse.cdt.core/ChangeLog | 5 +++++ .../cdt/internal/core/model/CModelBuilder.java | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog index f7fc6e80f05..4288f07c677 100644 --- a/core/org.eclipse.cdt.core/ChangeLog +++ b/core/org.eclipse.cdt.core/ChangeLog @@ -1,3 +1,8 @@ +2005-07-26 Alain Magloire + Fix PR 100992: IMethod were generated for implementation, we should generate + IFunction for method defines outside of the class shell. + * model/org/eclipse/cdt/internal/core/model/CModelBuilder.java + 2005-07-22 Alain Magloire Fix PR 104908 * plugin.xml diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java index ecf71fd8dfe..7fb149ce463 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelBuilder.java @@ -19,6 +19,8 @@ import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IParent; import org.eclipse.cdt.core.model.IProblemRequestor; +import org.eclipse.cdt.core.model.IStructure; +import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.core.parser.ExtendedScannerInfo; import org.eclipse.cdt.core.parser.IParser; @@ -689,7 +691,7 @@ public class CModelBuilder { FunctionDeclaration element = null; - if( functionDeclaration instanceof IASTMethod ) + if( functionDeclaration instanceof IASTMethod && parent instanceof IStructure) { IASTMethod methodDeclaration = (IASTMethod) functionDeclaration; MethodDeclaration methodElement = null; @@ -734,6 +736,18 @@ public class CModelBuilder { } else // instance of IASTFunction { + if (parent instanceof ITranslationUnit) { + String[] names = functionDeclaration.getFullyQualifiedName(); + StringBuffer buf = new StringBuffer(); + for (int i = 0; i < names.length; ++i) { + if (buf.length() != 0) { + buf.append("::"); //$NON-NLS-1$ + } + buf.append(names[i]); + } + name = buf.toString(); + } + FunctionDeclaration functionElement = null; if (functionDeclaration.hasFunctionBody()) {