diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-12 14:47:17 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-09-13 07:25:12 +0000 |
commit | 80365b2115f26713f840e52318678216a6ff2864 (patch) | |
tree | 10be908637d1d89bdee76297d74d4bcac257ac95 /sources/shiboken2/generator/generator.cpp | |
parent | 7b2025f542729b0c407519d2cb45688dd402eed7 (diff) |
shiboken: Add default constructible with default values
Extend the check for default constructible by also checking whether
the first argument has an unmodified default value, for example:
explicit QSqlIndex(const QString &cursorName = QString(), const QString &name = QString());
This can be treated like default constructible, except that {}
may not be used for return values.
Task-number: PYSIDE-62
Change-Id: I70af2a624de54201158a4b56e51b67ef115c2fc6
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken2/generator/generator.cpp')
-rw-r--r-- | sources/shiboken2/generator/generator.cpp | 11 |
1 files changed, 10 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; |