diff options
Diffstat (limited to 'abstractmetabuilder.cpp')
-rw-r--r-- | abstractmetabuilder.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/abstractmetabuilder.cpp b/abstractmetabuilder.cpp index 182f4456d..4d8a4f1d8 100644 --- a/abstractmetabuilder.cpp +++ b/abstractmetabuilder.cpp @@ -503,16 +503,27 @@ bool AbstractMetaBuilder::build(QIODevice* input) m_currentClass = 0; + // Global functions foreach (FunctionModelItem func, m_dom->functions()) { if (func->accessPolicy() != CodeModel::Public || func->name().startsWith("operator")) continue; + FunctionTypeEntry* funcEntry = types->findFunctionType(func->name()); + if (!funcEntry) + continue; + AbstractMetaFunction* metaFunc = traverseFunction(func); - if (metaFunc) { - QFileInfo info(func->fileName()); - metaFunc->setIncludeFile(Include(Include::IncludePath, info.fileName())); - m_globalFunctions << metaFunc; + if (!metaFunc) + continue; + + if (!funcEntry->hasSignature(metaFunc->minimalSignature())) { + delete metaFunc; + continue; } + + QFileInfo info(func->fileName()); + funcEntry->setInclude(Include(Include::IncludePath, info.fileName())); + m_globalFunctions << metaFunc; } // Functions added to the module on the type system. |