Ensure that Qt public headers compile with strict flags

Those from
http://wiki.qt-project.org/Coding_Conventions#Conventions_for_public_header_files
(unfortunatey -Wold-style-cast cannot be used due to the glibc macro bswap_16)
and many Qt defines that disable casts.

Change-Id: I97ac707a101df9819e8c031fa75a31b30e20247f
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
David Faure 2012-02-17 09:05:39 +01:00 committed by Qt by Nokia
parent 77172b25fe
commit 7e970eb58c
4 changed files with 34 additions and 10 deletions

View File

@ -284,7 +284,7 @@ private:
Constructor constructor,
Destructor destructor,
uint sizeOf,
uint typeFlags,
uint theTypeFlags,
int typeId);
QMetaType(const QMetaType &other);
QMetaType &operator =(const QMetaType &);
@ -621,7 +621,7 @@ inline QMetaType::QMetaType(const ExtensionFlag extensionFlags, const QMetaTypeI
Constructor constructor,
Destructor destructor,
uint size,
uint typeFlags,
uint theTypeFlags,
int typeId)
: m_creator(creator)
, m_deleter(deleter)
@ -630,7 +630,7 @@ inline QMetaType::QMetaType(const ExtensionFlag extensionFlags, const QMetaTypeI
, m_constructor(constructor)
, m_destructor(destructor)
, m_size(size)
, m_typeFlags(typeFlags)
, m_typeFlags(theTypeFlags)
, m_extensionFlags(extensionFlags)
, m_typeId(typeId)
{

View File

@ -432,10 +432,10 @@ private:
class Q_GUI_EXPORT QAccessibleEvent
{
public:
inline QAccessibleEvent(QAccessible::Event type, QObject *object, int child = -1)
: m_type(type), m_object(object), m_child(child)
inline QAccessibleEvent(QAccessible::Event typ, QObject *obj, int chld = -1)
: m_type(typ), m_object(obj), m_child(chld)
{
Q_ASSERT(object);
Q_ASSERT(obj);
}
QAccessible::Event type() const { return m_type; }

View File

@ -1,7 +1,28 @@
CONFIG += testcase
TARGET = tst_headersclean
SOURCES += tst_headersclean.cpp
QT = core network xml sql testlib
contains(QT_CONFIG,dbus): QT += dbus
contains(QT_CONFIG,opengl): QT += opengl
# No need to link to all modules, only those actually used
QT = core testlib gui widgets
*-g++*: QMAKE_CXXFLAGS += -W -Wall -Wextra -Werror
# The flags here come from http://wiki.qt-project.org/Coding_Conventions#Conventions_for_public_header_files
# -Wold-style-cast cannot be used, /usr/include/bits/byteswap.h defines the macro bswap_16 using C style casts :(
# -Wfloat-equal cannot be used, qrect.h and qvector2d.h do exact comparisons in isNull and operator==. Would need #pragmas.
*-g++*: QMAKE_CXXFLAGS += -Woverloaded-virtual -Wshadow -Wundef
# Other nice flags
*-g++*: QMAKE_CXXFLAGS += -Wnon-virtual-dtor -ansi -Wcast-align -Wchar-subscripts -Wpointer-arith -Wformat-security
# Enable pedantic mode, but accept variadic macros and 'long long' usage.
*-g++*: QMAKE_CXXFLAGS += -Wno-long-long -Wno-variadic-macros -pedantic-errors
QMAKE_CXXFLAGS += -DQT_NO_CAST_TO_ASCII \
-DQT_NO_CAST_FROM_ASCII \
-DQT_STRICT_ITERATORS \
-DQT_NO_URL_CAST_FROM_STRING \
-DQT_NO_CAST_FROM_BYTEARRAY \
-DQT_NO_KEYWORDS \
-DQT_USE_FAST_CONCATENATION \
-DQT_USE_FAST_OPERATOR_PLUS

View File

@ -39,7 +39,6 @@
**
****************************************************************************/
#define QT_NO_KEYWORDS
#define signals int
#define slots int
#define emit public:;
@ -47,12 +46,16 @@
#define forever public:;
#include <QtCore/QtCore>
#include <QtConcurrent/QtConcurrent>
#include <QtTest/QtTest>
#include <QtNetwork/QtNetwork>
#include <QtXml/QtXml>
#include <QtSql/QtSql>
#include <QtGui/QtGui>
#include <QtWidgets/QtWidgets>
#include <QtPrintSupport/QtPrintSupport>
#include <QtPlatformSupport/QtPlatformSupport>
#ifndef QT_NO_OPENGL
#include <QtOpenGL/QtOpenGL>