From 6f8cde0951da369d0b2960d8634ab9cf2a4b08d3 Mon Sep 17 00:00:00 2001 From: Marcelo Lira Date: Fri, 26 Feb 2010 20:46:30 -0300 Subject: External conversion operators are now part of a class' implicit conversions. AbstractMetaClass::implicitConversions() returns externally declared conversion operators in addition to its own implicit constructors. The implicit conversion tests where extended with the new case. --- abstractmetalang.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'abstractmetalang.cpp') diff --git a/abstractmetalang.cpp b/abstractmetalang.cpp index 94114e3e9..73f617637 100644 --- a/abstractmetalang.cpp +++ b/abstractmetalang.cpp @@ -1102,12 +1102,15 @@ AbstractMetaFunctionList AbstractMetaClass::nonVirtualShellFunctions() const AbstractMetaFunctionList AbstractMetaClass::implicitConversions() const { - AbstractMetaFunctionList list = queryFunctions(Constructors); + if (!hasCloneOperator() && !hasExternalConversionOperators()) + return AbstractMetaFunctionList(); + AbstractMetaFunctionList returned; - if (!hasCloneOperator()) - return returned; + AbstractMetaFunctionList list = queryFunctions(Constructors); + list.append(externalConversionOperators()); + foreach (AbstractMetaFunction *f, list) { - if ((f->actualMinimumArgumentCount() == 1 || f->arguments().size() == 1) + if ((f->actualMinimumArgumentCount() == 1 || f->arguments().size() == 1 || f->isConversionOperator()) && !f->isExplicit() && !f->isCopyConstructor() && !f->isModifiedRemoved() -- cgit v1.2.3