aboutsummaryrefslogtreecommitdiffstats
path: root/abstractmetabuilder.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2009-11-24 15:00:11 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2009-11-24 15:20:30 -0300
commit5c8637fd719e9dfd0415173128d0d8ea916b7d9b (patch)
tree6936d28579d1761a2dde4954734e7f6542547bb2 /abstractmetabuilder.cpp
parent139e84644ea0088e16678e8b8c17b9e5b4fd6269 (diff)
Modified the AbstractMetaFunction class to have a separated flag to
indicate that it was added by the user or not, instead of using the AbstractMetaFunction::UserAddedFunction enum value. The old way prevented the function to be an UserAddedFunction and a ConstructorFunction at the same time, since this information was stored as an enum of the AbstractMetaFunction::FunctionType type. A test case was also added. Reviewed by Hugo Parente <hugo.lima@openbossa.org>
Diffstat (limited to 'abstractmetabuilder.cpp')
-rw-r--r--abstractmetabuilder.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp
index d40efd667..44f03154e 100644
--- a/abstractmetabuilder.cpp
+++ b/abstractmetabuilder.cpp
@@ -1221,6 +1221,10 @@ void AbstractMetaBuilder::traverseFunctions(ScopeModelItem scopeItem, AbstractMe
// Add the functions added by the typesystem
foreach (AddedFunction addedFunc, metaClass->typeEntry()->addedFunctions()) {
AbstractMetaFunction* func = traverseFunction(addedFunc);
+ if (func->name() == metaClass->name())
+ func->setFunctionType(AbstractMetaFunction::ConstructorFunction);
+ else
+ func->setFunctionType(AbstractMetaFunction::NormalFunction);
func->setDeclaringClass(metaClass);
func->setImplementingClass(metaClass);
metaClass->addFunction(func);
@@ -1397,7 +1401,7 @@ AbstractMetaFunction *AbstractMetaBuilder::traverseFunction(const AddedFunction&
metaFunction->setOriginalName(addedFunc.name());
int visibility = addedFunc.access() == AddedFunction::Public ? AbstractMetaAttributes::Public : AbstractMetaAttributes::Protected;
metaFunction->setVisibility(visibility);
- metaFunction->setFunctionType(AbstractMetaFunction::UserAddedFunction);
+ metaFunction->setUserAdded(true);
metaFunction->setAttributes(metaFunction->attributes() | AbstractMetaAttributes::Final);
metaFunction->setType(translateType(addedFunc.returnType()));