diff options
-rw-r--r-- | sources/shiboken2/generator/generator.cpp | 11 | ||||
-rw-r--r-- | sources/shiboken2/generator/generator.h | 1 |
2 files changed, 11 insertions, 1 deletions
diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp index 7ae5b3fd1..21962b272 100644 --- a/sources/shiboken2/generator/generator.cpp +++ b/sources/shiboken2/generator/generator.cpp @@ -83,6 +83,8 @@ QString DefaultValue::returnValue() const return QLatin1String("nullptr"); case DefaultValue::Void: return QString(); + case DefaultValue::DefaultConstructorWithDefaultValues: + return m_value + QLatin1String("()"); case DefaultValue::DefaultConstructor: break; } @@ -108,6 +110,7 @@ QString DefaultValue::initialization() const Q_ASSERT(false); break; case DefaultValue::DefaultConstructor: + case DefaultValue::DefaultConstructorWithDefaultValues: break; } return QString(); @@ -135,6 +138,7 @@ QString DefaultValue::constructorParameter() const Q_ASSERT(false); break; case DefaultValue::DefaultConstructor: + case DefaultValue::DefaultConstructorWithDefaultValues: break; } return m_value + QLatin1String("()"); @@ -734,7 +738,7 @@ DefaultValue Generator::minimalConstructor(const TypeEntry* type) const // heuristically returned. If this is wrong the build of the generated // bindings will tell. return ctor.isEmpty() - ? DefaultValue(DefaultValue::DefaultConstructor, QLatin1String("::") + ? DefaultValue(DefaultValue::DefaultConstructorWithDefaultValues, QLatin1String("::") + type->qualifiedCppName()) : DefaultValue(DefaultValue::Custom, ctor); } @@ -773,6 +777,11 @@ DefaultValue Generator::minimalConstructor(const AbstractMetaClass* metaClass) c return DefaultValue(DefaultValue::DefaultConstructor, QLatin1String("::") + qualifiedCppName); } + // First argument has unmodified default: Default constructible with values + if (arguments.constFirst()->hasUnmodifiedDefaultValueExpression()) { + return DefaultValue(DefaultValue::DefaultConstructorWithDefaultValues, + QLatin1String("::") + qualifiedCppName); + } // Examine arguments, exclude functions taking a self parameter bool simple = true; bool suitable = true; diff --git a/sources/shiboken2/generator/generator.h b/sources/shiboken2/generator/generator.h index dd30f324e..a8f008e33 100644 --- a/sources/shiboken2/generator/generator.h +++ b/sources/shiboken2/generator/generator.h @@ -105,6 +105,7 @@ public: CppScalar, // A C++ scalar type (int,..) specified by value() Custom, // A custom constructor/expression, uses value() as is DefaultConstructor, // For classes named value() + DefaultConstructorWithDefaultValues, // as DefaultConstructor, but can't return {} though. Enum, // Enum value as specified by value() Pointer, // Pointer of type value() Void // "", for return values only |