File tree Expand file tree Collapse file tree 3 files changed +14
-4
lines changed Expand file tree Collapse file tree 3 files changed +14
-4
lines changed Original file line number Diff line number Diff line change @@ -315,7 +315,7 @@ void AbstractMetaBuilder::traverseStreamOperator(FunctionModelItem item)
315315
316316 setupFunctionDefaults (streamFunction, streamedClass);
317317
318- streamedClass->addFunction (streamFunction);
318+ streamedClass->addFunction (streamFunction, /* check_duplicates= */ true );
319319 streamedClass->typeEntry ()->addExtraInclude (streamClass->typeEntry ()->include ());
320320
321321 m_current_class = old_current_class;
@@ -354,7 +354,7 @@ void AbstractMetaBuilder::traverseArithmeticOperator(FunctionModelItem item)
354354
355355 setupFunctionDefaults (streamFunction, aClass);
356356
357- aClass->addFunction (streamFunction);
357+ aClass->addFunction (streamFunction, /* check_duplicates= */ true );
358358 if (bClass) {
359359 aClass->typeEntry ()->addExtraInclude (bClass->typeEntry ()->include ());
360360 }
Original file line number Diff line number Diff line change @@ -1094,10 +1094,20 @@ bool AbstractMetaClass::hasDefaultToStringFunction() const
10941094 return false ;
10951095}
10961096
1097- void AbstractMetaClass::addFunction (AbstractMetaFunction *function)
1097+ void AbstractMetaClass::addFunction (AbstractMetaFunction *function, bool check_duplicates )
10981098{
10991099 function->setOwnerClass (this );
11001100
1101+ if (check_duplicates) {
1102+ for (const auto f : m_functions) {
1103+ if (f->name () == function->name () &&
1104+ f->minimalSignature () == function->minimalSignature ())
1105+ {
1106+ return ;
1107+ }
1108+ }
1109+ }
1110+
11011111 if (!function->isDestructor ()) {
11021112 m_functions << function;
11031113 // seems like this is not needed and takes a lot of performance
Original file line number Diff line number Diff line change @@ -692,7 +692,7 @@ class AbstractMetaClass : public AbstractMetaAttributes
692692
693693 AbstractMetaFunctionList functions () const { return m_functions; }
694694 void setFunctions (const AbstractMetaFunctionList &functions);
695- void addFunction (AbstractMetaFunction *function);
695+ void addFunction (AbstractMetaFunction *function, bool check_duplicates = false );
696696 void removeFunction (AbstractMetaFunction* function);
697697 bool hasFunction (const AbstractMetaFunction *f) const ;
698698 bool hasFunction (const QString &str) const ;
You can’t perform that action at this time.
0 commit comments