aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-09-16 08:00:32 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-09-16 08:00:32 +0200
commit53181fb95d3884cc067d005f37accd92d128bccc (patch)
tree6b21bd8e6bdd3b80e21590219331d41f71975df1 /sources/shiboken2
parent2b0ea8856212b0320238f1c14091a1396039c0a4 (diff)
parent1d50a0a9f6691b2081e389bafa1f22d2fb6004ed (diff)
Merge remote-tracking branch 'origin/5.15' into dev
Diffstat (limited to 'sources/shiboken2')
-rw-r--r--sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp5
-rw-r--r--sources/shiboken2/generator/generator.cpp3
-rw-r--r--sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp30
-rw-r--r--sources/shiboken2/generator/shiboken2/cppgenerator.cpp18
-rw-r--r--sources/shiboken2/generator/shiboken2/ctypenames.h56
-rw-r--r--sources/shiboken2/generator/shiboken2/overloaddata.cpp58
-rw-r--r--sources/shiboken2/generator/shiboken2/shibokengenerator.cpp27
-rw-r--r--sources/shiboken2/libshiboken/basewrapper.h3
-rw-r--r--sources/shiboken2/shibokenmodule/files.dir/shibokensupport/__feature__.py6
9 files changed, 123 insertions, 83 deletions
diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
index 33596e235..ed80b82f8 100644
--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
@@ -1292,7 +1292,7 @@ void AbstractMetaBuilderPrivate::traverseFunctions(ScopeModelItem scopeItem,
classFunctionList(scopeItem, &constructorAttributes, metaClass);
metaClass->setAttributes(metaClass->attributes() | constructorAttributes);
- for (AbstractMetaFunction *metaFunction : functions){
+ for (AbstractMetaFunction *metaFunction : functions) {
metaFunction->setOriginalAttributes(metaFunction->attributes());
if (metaClass->isNamespace())
*metaFunction += AbstractMetaAttributes::Static;
@@ -1307,7 +1307,8 @@ void AbstractMetaBuilderPrivate::traverseFunctions(ScopeModelItem scopeItem,
}
} else if (QPropertySpec *write = metaClass->propertySpecForWrite(metaFunction->name())) {
// Property setter must be in the form "void name(<type>)"
- // make sure the function was created with all aguments, some argument can be missing during the pareser because of errors on typesystem
+ // Make sure the function was created with all arguments; some argument can be
+ // missing during the parsing because of errors in the typesystem.
if ((!metaFunction->type()) && (metaFunction->arguments().size() == 1) && (write->type() == metaFunction->arguments().at(0)->type()->typeEntry())) {
*metaFunction += AbstractMetaAttributes::PropertyWriter;
metaFunction->setPropertySpec(write);
diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp
index 0be7d1e15..d3b52cdcb 100644
--- a/sources/shiboken2/generator/generator.cpp
+++ b/sources/shiboken2/generator/generator.cpp
@@ -27,6 +27,7 @@
****************************************************************************/
#include "generator.h"
+#include "ctypenames.h"
#include "abstractmetalang.h"
#include "parser/codemodel.h"
#include "messages.h"
@@ -860,7 +861,7 @@ QString Generator::translateType(const AbstractMetaType *cType,
} else if (cType->isArray()) {
s = translateType(cType->arrayElementType(), context, options) + QLatin1String("[]");
} else if ((options & Generator::EnumAsInts) && useEnumAsIntForProtectedHack(cType)) {
- s = QLatin1String("int");
+ s = intT();
} else {
if (options & Generator::OriginalName) {
s = cType->originalTypeDescription().trimmed();
diff --git a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
index 878ad9d57..5cc5dcc67 100644
--- a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
+++ b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp
@@ -27,6 +27,7 @@
****************************************************************************/
#include "qtdocgenerator.h"
+#include "ctypenames.h"
#include <abstractmetalang.h>
#include <messages.h>
#include <reporthandler.h>
@@ -2006,10 +2007,7 @@ QString QtDocGenerator::functionSignature(const AbstractMetaClass* cppClass, con
QString QtDocGenerator::translateToPythonType(const AbstractMetaType* type, const AbstractMetaClass* cppClass)
{
- static const QStringList nativeTypes = {
- QLatin1String("bool"),
- QLatin1String("float"),
- QLatin1String("int"),
+ static const QStringList nativeTypes = {boolT(), floatT(), intT(),
QLatin1String("object"),
QLatin1String("str")
};
@@ -2022,14 +2020,14 @@ QString QtDocGenerator::translateToPythonType(const AbstractMetaType* type, cons
{ QLatin1String("QString"), QLatin1String("str") },
{ QLatin1String("uchar"), QLatin1String("str") },
{ QLatin1String("QStringList"), QLatin1String("list of strings") },
- { QLatin1String("QVariant"), QLatin1String("object") },
- { QLatin1String("quint32"), QLatin1String("int") },
- { QLatin1String("uint32_t"), QLatin1String("int") },
- { QLatin1String("quint64"), QLatin1String("int") },
- { QLatin1String("qint64"), QLatin1String("int") },
- { QLatin1String("size_t"), QLatin1String("int") },
- { QLatin1String("int64_t"), QLatin1String("int") },
- { QLatin1String("qreal"), QLatin1String("float") }
+ { qVariantT(), QLatin1String("object") },
+ { QLatin1String("quint32"), intT() },
+ { QLatin1String("uint32_t"), intT() },
+ { QLatin1String("quint64"), intT() },
+ { QLatin1String("qint64"), intT() },
+ { QLatin1String("size_t"), intT() },
+ { QLatin1String("int64_t"), intT() },
+ { QLatin1String("qreal"), floatT() }
};
const auto found = typeMap.find(name);
if (found != typeMap.end())
@@ -2038,10 +2036,10 @@ QString QtDocGenerator::translateToPythonType(const AbstractMetaType* type, cons
QString strType;
if (type->isConstant() && name == QLatin1String("char") && type->indirections() == 1) {
strType = QLatin1String("str");
- } else if (name.startsWith(QLatin1String("unsigned short"))) {
- strType = QLatin1String("int");
- } else if (name.startsWith(QLatin1String("unsigned "))) { // uint and ulong
- strType = QLatin1String("int");
+ } else if (name.startsWith(unsignedShortT())) {
+ strType = intT();
+ } else if (name.startsWith(unsignedT())) { // uint and ulong
+ strType = intT();
} else if (type->isContainer()) {
QString strType = translateType(type, cppClass, Options(ExcludeConst) | ExcludeReference);
strType.remove(QLatin1Char('*'));
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
index 6927229d9..5e6ad9b23 100644
--- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
@@ -29,6 +29,7 @@
#include <memory>
#include "cppgenerator.h"
+#include "ctypenames.h"
#include "fileout.h"
#include "overloaddata.h"
#include <abstractmetalang.h>
@@ -150,16 +151,16 @@ CppGenerator::CppGenerator()
QLatin1String("PyObject*")});
m_sequenceProtocol.insert(QLatin1String("__setitem__"),
{QLatin1String("PyObject *self, Py_ssize_t _i, PyObject *_value"),
- QLatin1String("int")});
+ intT()});
m_sequenceProtocol.insert(QLatin1String("__getslice__"),
{QLatin1String("PyObject *self, Py_ssize_t _i1, Py_ssize_t _i2"),
QLatin1String("PyObject*")});
m_sequenceProtocol.insert(QLatin1String("__setslice__"),
{QLatin1String("PyObject *self, Py_ssize_t _i1, Py_ssize_t _i2, PyObject *_value"),
- QLatin1String("int")});
+ intT()});
m_sequenceProtocol.insert(QLatin1String("__contains__"),
{QLatin1String("PyObject *self, PyObject *_value"),
- QLatin1String("int")});
+ intT()});
m_sequenceProtocol.insert(QLatin1String("__concat__"),
{QLatin1String("PyObject *self, PyObject *_other"),
QLatin1String("PyObject*")});
@@ -182,7 +183,7 @@ CppGenerator::CppGenerator()
QLatin1String("PyObject*")});
m_mappingProtocol.insert(QLatin1String("__msetitem__"),
{QLatin1String("PyObject *self, PyObject *_key, PyObject *_value"),
- QLatin1String("int")});
+ intT()});
// Sequence protocol structure members names
m_mpFuncs.insert(QLatin1String("__mlen__"), QLatin1String("mp_length"));
@@ -5415,9 +5416,6 @@ void CppGenerator::writeSmartPointerSetattroFunction(QTextStream &s, const Gener
writeSetattroDefaultReturn(s);
}
-static inline QString qObjectClassName() { return QStringLiteral("QObject"); }
-static inline QString qMetaObjectClassName() { return QStringLiteral("QMetaObject"); }
-
void CppGenerator::writeGetattroDefinition(QTextStream &s, const AbstractMetaClass *metaClass)
{
s << "static PyObject *" << cpythonGetattroFunctionName(metaClass)
@@ -5428,7 +5426,7 @@ QString CppGenerator::qObjectGetAttroFunction() const
{
static QString result;
if (result.isEmpty()) {
- AbstractMetaClass *qobjectClass = AbstractMetaClass::findClass(classes(), qObjectClassName());
+ AbstractMetaClass *qobjectClass = AbstractMetaClass::findClass(classes(), qObjectT());
Q_ASSERT(qobjectClass);
result = QLatin1String("PySide::getMetaDataFromQObject(")
+ cpythonWrapperCPtr(qobjectClass, QLatin1String("self"))
@@ -5623,8 +5621,8 @@ bool CppGenerator::finishGeneration()
//We need move QMetaObject register before QObject
Dependencies additionalDependencies;
const AbstractMetaClassList &allClasses = classes();
- if (auto qObjectClass = AbstractMetaClass::findClass(allClasses, qObjectClassName())) {
- if (auto qMetaObjectClass = AbstractMetaClass::findClass(allClasses, qMetaObjectClassName())) {
+ if (auto qObjectClass = AbstractMetaClass::findClass(allClasses, qObjectT())) {
+ if (auto qMetaObjectClass = AbstractMetaClass::findClass(allClasses, qMetaObjectT())) {
Dependency dependency;
dependency.parent = qMetaObjectClass;
dependency.child = qObjectClass;
diff --git a/sources/shiboken2/generator/shiboken2/ctypenames.h b/sources/shiboken2/generator/shiboken2/ctypenames.h
new file mode 100644
index 000000000..abac261d5
--- /dev/null
+++ b/sources/shiboken2/generator/shiboken2/ctypenames.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt for Python.
+**
+** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef CTYPENAMES_H
+#define CTYPENAMES_H
+
+#include <QtCore/QString>
+
+static inline QString boolT() { return QStringLiteral("bool"); }
+static inline QString intT() { return QStringLiteral("int"); }
+static inline QString unsignedT() { return QStringLiteral("unsigned"); }
+static inline QString unsignedIntT() { return QStringLiteral("unsigned int"); }
+static inline QString longT() { return QStringLiteral("long"); }
+static inline QString unsignedLongT() { return QStringLiteral("unsigned long"); }
+static inline QString shortT() { return QStringLiteral("short"); }
+static inline QString unsignedShortT() { return QStringLiteral("unsigned short"); }
+static inline QString unsignedCharT() { return QStringLiteral("unsigned char"); }
+static inline QString longLongT() { return QStringLiteral("long long"); }
+static inline QString unsignedLongLongT() { return QStringLiteral("unsigned long long"); }
+static inline QString charT() { return QStringLiteral("char"); }
+static inline QString floatT() { return QStringLiteral("float"); }
+static inline QString doubleT() { return QStringLiteral("double"); }
+static inline QString constCharPtrT() { return QStringLiteral("const char*"); }
+
+static inline QString qByteArrayT() { return QStringLiteral("QByteArray"); }
+static inline QString qMetaObjectT() { return QStringLiteral("QMetaObject"); }
+static inline QString qObjectT() { return QStringLiteral("QObject"); }
+static inline QString qStringT() { return QStringLiteral("QString"); }
+static inline QString qVariantT() { return QStringLiteral("QVariant"); }
+
+#endif // CTYPENAMES_H
diff --git a/sources/shiboken2/generator/shiboken2/overloaddata.cpp b/sources/shiboken2/generator/shiboken2/overloaddata.cpp
index bd39e9444..e70eeaea1 100644
--- a/sources/shiboken2/generator/shiboken2/overloaddata.cpp
+++ b/sources/shiboken2/generator/shiboken2/overloaddata.cpp
@@ -30,6 +30,7 @@
#include <reporthandler.h>
#include <graph.h>
#include "overloaddata.h"
+#include "ctypenames.h"
#include "indentor.h"
#include "shibokengenerator.h"
@@ -200,14 +201,10 @@ void OverloadData::sortNextOverloads()
// Primitive types that are not int, long, short,
// char and their respective unsigned counterparts.
- QStringList nonIntegerPrimitives;
- nonIntegerPrimitives << QLatin1String("float") << QLatin1String("double")
- << QLatin1String("bool");
+ static const QStringList nonIntegerPrimitives{floatT(), doubleT(), boolT()};
// Signed integer primitive types.
- QStringList signedIntegerPrimitives;
- signedIntegerPrimitives << QLatin1String("int") << QLatin1String("short")
- << QLatin1String("long");
+ static const QStringList signedIntegerPrimitives{intT(), shortT(), longT(), longLongT()};
// sort the children overloads
for (OverloadData *ov : qAsConst(m_nextOverloadData))
@@ -233,10 +230,10 @@ void OverloadData::sortNextOverloads()
} else if (!checkPyBuffer && typeName == QLatin1String("PyBuffer")) {
checkPyBuffer = true;
pyBufferIndex = sortData.lastProcessedItemId();
- } else if (!checkQVariant && typeName == QLatin1String("QVariant")) {
+ } else if (!checkQVariant && typeName == qVariantT()) {
checkQVariant = true;
qvariantIndex = sortData.lastProcessedItemId();
- } else if (!checkQString && typeName == QLatin1String("QString")) {
+ } else if (!checkQString && typeName == qStringT()) {
checkQString = true;
qstringIndex = sortData.lastProcessedItemId();
}
@@ -267,23 +264,16 @@ void OverloadData::sortNextOverloads()
// Create the graph of type dependencies based on implicit conversions.
Graph graph(sortData.reverseMap.count());
// All C++ primitive types, add any forgotten type AT THE END OF THIS LIST!
- const char *primitiveTypes[] = {"int",
- "unsigned int",
- "long",
- "unsigned long",
- "short",
- "unsigned short",
- "bool",
- "unsigned char",
- "char",
- "float",
- "double",
- "const char*"
- };
- const int numPrimitives = sizeof(primitiveTypes)/sizeof(const char *);
- bool hasPrimitive[numPrimitives];
- for (int i = 0; i < numPrimitives; ++i)
- hasPrimitive[i] = sortData.map.contains(QLatin1String(primitiveTypes[i]));
+ static const QStringList primitiveTypes{intT(), unsignedIntT(), longT(), unsignedLongT(),
+ shortT(), unsignedShortT(), boolT(), unsignedCharT(), charT(), floatT(),
+ doubleT(), constCharPtrT()};
+
+ QList<int> foundPrimitiveTypeIds;
+ for (const auto &p : primitiveTypes) {
+ const auto it = sortData.map.constFind(p);
+ if (it != sortData.map.cend())
+ foundPrimitiveTypeIds.append(it.value());
+ }
if (checkPySequence && checkPyObject)
graph.addEdge(pySeqIndex, pyobjectIndex);
@@ -306,7 +296,7 @@ void OverloadData::sortNextOverloads()
else
convertibleType = getTypeName(function->arguments().constFirst()->type());
- if (convertibleType == QLatin1String("int") || convertibleType == QLatin1String("unsigned int"))
+ if (convertibleType == intT() || convertibleType == unsignedIntT())
classesWithIntegerImplicitConversion << targetTypeEntryName;
if (!sortData.map.contains(convertibleType))
@@ -379,12 +369,12 @@ void OverloadData::sortNextOverloads()
// Add dependency on PyObject, so its check is the last one (too generic).
graph.addEdge(targetTypeId, pyobjectIndex);
}
- } else if (checkQVariant && targetTypeEntryName != QLatin1String("QVariant")) {
+ } else if (checkQVariant && targetTypeEntryName != qVariantT()) {
if (!graph.containsEdge(qvariantIndex, targetTypeId)) // Avoid cyclic dependency.
graph.addEdge(targetTypeId, qvariantIndex);
} else if (checkQString && ShibokenGenerator::isPointer(ov->argType())
- && targetTypeEntryName != QLatin1String("QString")
- && targetTypeEntryName != QLatin1String("QByteArray")
+ && targetTypeEntryName != qStringT()
+ && targetTypeEntryName != qByteArrayT()
&& (!checkPyObject || targetTypeId != pyobjectIndex)) {
if (!graph.containsEdge(qstringIndex, targetTypeId)) // Avoid cyclic dependency.
graph.addEdge(targetTypeId, qstringIndex);
@@ -392,16 +382,14 @@ void OverloadData::sortNextOverloads()
if (targetType->isEnum()) {
// Enum values must precede primitive types.
- for (int i = 0; i < numPrimitives; ++i) {
- if (hasPrimitive[i])
- graph.addEdge(targetTypeId, sortData.map[QLatin1String(primitiveTypes[i])]);
- }
+ for (auto id : foundPrimitiveTypeIds)
+ graph.addEdge(targetTypeId, id);
}
}
// QByteArray args need to be checked after QString args
- if (sortData.map.contains(QLatin1String("QString")) && sortData.map.contains(QLatin1String("QByteArray")))
- graph.addEdge(sortData.map[QLatin1String("QString")], sortData.map[QLatin1String("QByteArray")]);
+ if (sortData.map.contains(qStringT()) && sortData.map.contains(qByteArrayT()))
+ graph.addEdge(sortData.map.value(qStringT()), sortData.map.value(qByteArrayT()));
for (OverloadData *ov : qAsConst(m_nextOverloadData)) {
const AbstractMetaType *targetType = ov->argType();
diff --git a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp
index c82ef690c..418d3f529 100644
--- a/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/shibokengenerator.cpp
@@ -27,6 +27,7 @@
****************************************************************************/
#include "shibokengenerator.h"
+#include "ctypenames.h"
#include <abstractmetalang.h>
#include <messages.h>
#include "overloaddata.h"
@@ -195,8 +196,8 @@ void ShibokenGenerator::initPrimitiveTypesCorrespondences()
m_pythonPrimitiveTypeName.insert(QLatin1String(intType), QStringLiteral("PyInt"));
// PyFloat
- m_pythonPrimitiveTypeName.insert(QLatin1String("double"), QLatin1String("PyFloat"));
- m_pythonPrimitiveTypeName.insert(QLatin1String("float"), QLatin1String("PyFloat"));
+ m_pythonPrimitiveTypeName.insert(doubleT(), QLatin1String("PyFloat"));
+ m_pythonPrimitiveTypeName.insert(floatT(), QLatin1String("PyFloat"));
// PyLong
const char *longTypes[] = {
@@ -256,18 +257,18 @@ void ShibokenGenerator::initPrimitiveTypesCorrespondences()
m_formatUnits.clear();
m_formatUnits.insert(QLatin1String("char"), QLatin1String("b"));
m_formatUnits.insert(QLatin1String("unsigned char"), QLatin1String("B"));
- m_formatUnits.insert(QLatin1String("int"), QLatin1String("i"));
+ m_formatUnits.insert(intT(), QLatin1String("i"));
m_formatUnits.insert(QLatin1String("unsigned int"), QLatin1String("I"));
- m_formatUnits.insert(QLatin1String("short"), QLatin1String("h"));
- m_formatUnits.insert(QLatin1String("unsigned short"), QLatin1String("H"));
- m_formatUnits.insert(QLatin1String("long"), QLatin1String("l"));
- m_formatUnits.insert(QLatin1String("unsigned long"), QLatin1String("k"));
- m_formatUnits.insert(QLatin1String("long long"), QLatin1String("L"));
+ m_formatUnits.insert(shortT(), QLatin1String("h"));
+ m_formatUnits.insert(unsignedShortT(), QLatin1String("H"));
+ m_formatUnits.insert(longT(), QLatin1String("l"));
+ m_formatUnits.insert(unsignedLongLongT(), QLatin1String("k"));
+ m_formatUnits.insert(longLongT(), QLatin1String("L"));
m_formatUnits.insert(QLatin1String("__int64"), QLatin1String("L"));
- m_formatUnits.insert(QLatin1String("unsigned long long"), QLatin1String("K"));
+ m_formatUnits.insert(unsignedLongLongT(), QLatin1String("K"));
m_formatUnits.insert(QLatin1String("unsigned __int64"), QLatin1String("K"));
- m_formatUnits.insert(QLatin1String("double"), QLatin1String("d"));
- m_formatUnits.insert(QLatin1String("float"), QLatin1String("f"));
+ m_formatUnits.insert(doubleT(), QLatin1String("d"));
+ m_formatUnits.insert(floatT(), QLatin1String("f"));
}
void ShibokenGenerator::initKnownPythonTypes()
@@ -581,7 +582,7 @@ QString ShibokenGenerator::guessScopeForDefaultValue(const AbstractMetaFunction
const AbstractMetaClass *metaClass = AbstractMetaClass::findClass(classes(), arg->type()->typeEntry());
if (enumValueRegEx.match(value).hasMatch() && value != QLatin1String("NULL"))
prefix = resolveScopePrefix(metaClass, value);
- } else if (arg->type()->isPrimitive() && arg->type()->name() == QLatin1String("int")) {
+ } else if (arg->type()->isPrimitive() && arg->type()->name() == intT()) {
if (enumValueRegEx.match(value).hasMatch() && func->implementingClass())
prefix = resolveScopePrefix(func->implementingClass(), value);
} else if(arg->type()->isPrimitive()) {
@@ -2245,7 +2246,7 @@ ShibokenGenerator::AttroCheck ShibokenGenerator::checkAttroFunctionNeeds(const A
AbstractMetaClass::GetAttroFunction)) {
result |= AttroCheckFlag::GetattroUser;
}
- if (usePySideExtensions() && metaClass->qualifiedCppName() == QLatin1String("QObject"))
+ if (usePySideExtensions() && metaClass->qualifiedCppName() == qObjectT())
result |= AttroCheckFlag::SetattroQObject;
if (useOverrideCaching(metaClass))
result |= AttroCheckFlag::SetattroMethodOverride;
diff --git a/sources/shiboken2/libshiboken/basewrapper.h b/sources/shiboken2/libshiboken/basewrapper.h
index 267759daa..4fec74464 100644
--- a/sources/shiboken2/libshiboken/basewrapper.h
+++ b/sources/shiboken2/libshiboken/basewrapper.h
@@ -97,9 +97,6 @@ typedef void (*SubTypeInitHook)(SbkObjectType *, PyObject *, PyObject *);
typedef PyObject *(*SelectableFeatureHook)(PyTypeObject *);
LIBSHIBOKEN_API void initSelectableFeature(SelectableFeatureHook func);
-// PYSIDE-1019: Publish the start of setattro.
-LIBSHIBOKEN_API void SbkObject_NotifySetAttr(PyObject *obj, PyObject *name, PyObject *value);
-
// PYSIDE-1019: Get access to PySide reserved bits.
LIBSHIBOKEN_API int SbkObjectType_GetReserved(PyTypeObject *type);
LIBSHIBOKEN_API void SbkObjectType_SetReserved(PyTypeObject *type, int value);
diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/__feature__.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/__feature__.py
index 482d81017..3852b3463 100644
--- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/__feature__.py
+++ b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/__feature__.py
@@ -175,9 +175,9 @@ def info(mod_name=None):
def _current_selection(flag):
names = []
if flag >= 0:
- for idx, name in enumerate(_really_all_feature_names):
- if (1 << idx) & flag:
- names.append(name)
+ for idx, name in enumerate(_really_all_feature_names):
+ if (1 << idx) & flag:
+ names.append(name)
return names
#eof