diff options
author | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-24 15:00:11 -0300 |
---|---|---|
committer | Marcelo Lira <marcelo.lira@openbossa.org> | 2009-11-24 15:20:30 -0300 |
commit | 5c8637fd719e9dfd0415173128d0d8ea916b7d9b (patch) | |
tree | 6936d28579d1761a2dde4954734e7f6542547bb2 /abstractmetabuilder.cpp | |
parent | 139e84644ea0088e16678e8b8c17b9e5b4fd6269 (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.cpp | 6 |
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())); |