Fix compile error with qWarning() << myDateTime and QT_NO_DEBUG_OUTPUT
All QDebug operator << in custom classes were disabled by QT_NO_DEBUG_STREAM, which was set by QT_NO_DEBUG_OUTPUT. Now QT_NO_DEBUG_STREAM is never set automatically, but remains available for reducing the feature set altogether (qconfig.h). Remove check on QT_NO_TEXTSTREAM: this define is meaningless, it doesn't even undefine QTextStream, and this is unrelated to QDebug streaming anyway. Change-Id: I5eeed0144fa684d0e790e9dfd9a4aeb956218c39 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
ec104d7a54
commit
9498f1aa54
@ -1683,10 +1683,6 @@ Q_CORE_EXPORT void qFatal(const char *, ...) /* print fatal message and exit */
|
||||
Q_CORE_EXPORT void qErrnoWarning(int code, const char *msg, ...);
|
||||
Q_CORE_EXPORT void qErrnoWarning(const char *msg, ...);
|
||||
|
||||
#if (defined(QT_NO_DEBUG_OUTPUT) || defined(QT_NO_TEXTSTREAM)) && !defined(QT_NO_DEBUG_STREAM)
|
||||
#define QT_NO_DEBUG_STREAM
|
||||
#endif
|
||||
|
||||
/*
|
||||
Forward declarations only.
|
||||
|
||||
@ -1694,13 +1690,19 @@ Q_CORE_EXPORT void qErrnoWarning(const char *msg, ...);
|
||||
*/
|
||||
class QDebug;
|
||||
class QNoDebug;
|
||||
#ifndef QT_NO_DEBUG_STREAM
|
||||
#if !defined(QT_NO_DEBUG_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
|
||||
Q_CORE_EXPORT_INLINE QDebug qDebug();
|
||||
Q_CORE_EXPORT_INLINE QDebug qWarning();
|
||||
Q_CORE_EXPORT_INLINE QDebug qCritical();
|
||||
#else
|
||||
inline QNoDebug qDebug();
|
||||
#endif
|
||||
#if !defined(QT_NO_WARNING_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
|
||||
Q_CORE_EXPORT_INLINE QDebug qWarning();
|
||||
#else
|
||||
inline QNoDebug qWarning();
|
||||
#endif
|
||||
#if !defined(QT_NO_DEBUG_STREAM)
|
||||
Q_CORE_EXPORT_INLINE QDebug qCritical();
|
||||
#endif
|
||||
|
||||
#define QT_NO_QDEBUG_MACRO while (false) qDebug
|
||||
#ifdef QT_NO_DEBUG_OUTPUT
|
||||
|
@ -141,8 +141,6 @@ public:
|
||||
inline QNoDebug &operator<<(const T &) { return *this; }
|
||||
};
|
||||
|
||||
Q_CORE_EXPORT_INLINE QDebug qCritical() { return QDebug(QtCriticalMsg); }
|
||||
|
||||
inline QDebug &QDebug::operator=(const QDebug &other)
|
||||
{
|
||||
if (this != &other) {
|
||||
@ -275,17 +273,15 @@ inline QDebug operator<<(QDebug debug, const QFlags<T> &flags)
|
||||
return debug.space();
|
||||
}
|
||||
|
||||
#if !defined(QT_NO_DEBUG_STREAM)
|
||||
#if !defined(QT_NO_DEBUG_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
|
||||
Q_CORE_EXPORT_INLINE QDebug qDebug() { return QDebug(QtDebugMsg); }
|
||||
|
||||
#else // QT_NO_DEBUG_STREAM
|
||||
#else
|
||||
#undef qDebug
|
||||
inline QNoDebug qDebug() { return QNoDebug(); }
|
||||
#define qDebug QT_NO_QDEBUG_MACRO
|
||||
|
||||
#endif
|
||||
|
||||
#if !defined(QT_NO_WARNING_OUTPUT)
|
||||
#if !defined(QT_NO_WARNING_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
|
||||
Q_CORE_EXPORT_INLINE QDebug qWarning() { return QDebug(QtWarningMsg); }
|
||||
#else
|
||||
#undef qWarning
|
||||
@ -293,6 +289,11 @@ inline QNoDebug qWarning() { return QNoDebug(); }
|
||||
#define qWarning QT_NO_QWARNING_MACRO
|
||||
#endif
|
||||
|
||||
#if !defined(QT_NO_DEBUG_STREAM)
|
||||
Q_CORE_EXPORT_INLINE QDebug qCritical() { return QDebug(QtCriticalMsg); }
|
||||
#endif
|
||||
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
QT_END_HEADER
|
||||
|
@ -11,6 +11,7 @@ SUBDIRS=\
|
||||
qfilesystementry \
|
||||
qfilesystemwatcher \
|
||||
qiodevice \
|
||||
qnodebug \
|
||||
qprocess \
|
||||
qprocessenvironment \
|
||||
qresourceengine \
|
||||
|
4
tests/auto/corelib/io/qnodebug/qnodebug.pro
Normal file
4
tests/auto/corelib/io/qnodebug/qnodebug.pro
Normal file
@ -0,0 +1,4 @@
|
||||
CONFIG += testcase parallel_test
|
||||
TARGET = tst_qnodebug
|
||||
QT = core testlib
|
||||
SOURCES = tst_qnodebug.cpp
|
80
tests/auto/corelib/io/qnodebug/tst_qnodebug.cpp
Normal file
80
tests/auto/corelib/io/qnodebug/tst_qnodebug.cpp
Normal file
@ -0,0 +1,80 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
|
||||
** All rights reserved.
|
||||
** Contact: Nokia Corporation (qt-info@nokia.com)
|
||||
**
|
||||
** This file is part of the test suite of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:LGPL$
|
||||
** GNU Lesser General Public License Usage
|
||||
** This file may be used under the terms of the GNU Lesser General Public
|
||||
** License version 2.1 as published by the Free Software Foundation and
|
||||
** appearing in the file LICENSE.LGPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU Lesser
|
||||
** General Public License version 2.1 requirements will be met:
|
||||
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
||||
**
|
||||
** In addition, as a special exception, Nokia gives you certain additional
|
||||
** rights. These rights are described in the Nokia Qt LGPL Exception
|
||||
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
|
||||
**
|
||||
** GNU General Public License Usage
|
||||
** Alternatively, this file may be used under the terms of the GNU General
|
||||
** Public License version 3.0 as published by the Free Software Foundation
|
||||
** and appearing in the file LICENSE.GPL included in the packaging of this
|
||||
** file. Please review the following information to ensure the GNU General
|
||||
** Public License version 3.0 requirements will be met:
|
||||
** http://www.gnu.org/copyleft/gpl.html.
|
||||
**
|
||||
** Other Usage
|
||||
** Alternatively, this file may be used in accordance with the terms and
|
||||
** conditions contained in a signed written agreement between you and Nokia.
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
// This test is for "release" mode, with -DQT_NO_DEBUG -DQT_NO_DEBUG_OUTPUT
|
||||
#ifndef QT_NO_DEBUG
|
||||
#define QT_NO_DEBUG
|
||||
#endif
|
||||
#ifndef QT_NO_DEBUG_OUTPUT
|
||||
#define QT_NO_DEBUG_OUTPUT
|
||||
#endif
|
||||
|
||||
#include <QtCore/QtCore>
|
||||
#include <QtCore/QtDebug>
|
||||
#include <QtTest/QtTest>
|
||||
|
||||
class tst_QNoDebug: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void noDebugOutput() const;
|
||||
void streaming() const;
|
||||
};
|
||||
|
||||
void tst_QNoDebug::noDebugOutput() const
|
||||
{
|
||||
// should do nothing
|
||||
qDebug() << "foo";
|
||||
|
||||
// qWarning still works, though
|
||||
QTest::ignoreMessage(QtWarningMsg, "bar ");
|
||||
qWarning() << "bar";
|
||||
}
|
||||
|
||||
void tst_QNoDebug::streaming() const
|
||||
{
|
||||
QDateTime dt(QDate(1,2,3),QTime(4,5,6));
|
||||
QTest::ignoreMessage(QtWarningMsg, qPrintable(QString::fromLatin1("QDateTime(\"%1\") ").arg(dt.toString())));
|
||||
qWarning() << dt;
|
||||
}
|
||||
|
||||
QTEST_MAIN(tst_QNoDebug);
|
||||
#include "tst_qnodebug.moc"
|
Loading…
Reference in New Issue
Block a user