diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 4e50a191c51..93eb91ae857 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -268,7 +268,28 @@ def qdump__QDateTime(d, value): # {sharedref(4), ... base = d.extractPointer(value) is32bit = d.is32bit() - if qtVersion >= 0x050200: + if qtVersion >= 0x050800: + # FIXME: Don't give up. + d.putPlainChildren(value) + return + msecsOffset = 0 + statusOffset = 8 + offsetFromUtcOffset = 12 + timeZoneOffset = 24 + status = d.extractInt(base + statusOffset) + if int(status & 0x0c == 0x0c): # ValidDate and ValidTime + isValid = True + msecs = d.extractInt64(base + msecsOffset) + offset = d.extractInt(base + offsetFromUtcOffset) + tzp = d.extractPointer(base + timeZoneOffset) + if tzp == 0: + tz = "" + else: + idBase = tzp + 2 * d.ptrSize() # [QSharedData] + [vptr] + elided, tz = d.encodeByteArrayHelper(d.extractPointer(idBase), limit=100) + d.putValue("%s/%s/%s/%s/%s" % (msecs, -1, offset, tz, status), + "datetimeinternal") + elif qtVersion >= 0x050200: if d.isWindowsTarget(): msecsOffset = 8 specOffset = 16 diff --git a/tests/auto/debugger/tst_offsets.cpp b/tests/auto/debugger/tst_offsets.cpp index 9256021c1f1..b8513f959c9 100644 --- a/tests/auto/debugger/tst_offsets.cpp +++ b/tests/auto/debugger/tst_offsets.cpp @@ -80,12 +80,17 @@ OFFSET_ACCESS(QDate, QDateTimePrivate, date); OFFSET_ACCESS(QTime, QDateTimePrivate, time); OFFSET_ACCESS(Qt::TimeSpec, QDateTimePrivate, spec); OFFSET_ACCESS(int, QDateTimePrivate, utcOffset); -#else +#elif QT_VERSION < 0x50800 OFFSET_ACCESS(qint64, QDateTimePrivate, m_msecs); OFFSET_ACCESS(Qt::TimeSpec, QDateTimePrivate, m_spec); OFFSET_ACCESS(int, QDateTimePrivate, m_offsetFromUtc); OFFSET_ACCESS(QTimeZone, QDateTimePrivate, m_timeZone); OFFSET_ACCESS(QDateTimePrivate::StatusFlags, QDateTimePrivate, m_status); +#else +OFFSET_ACCESS(qint64, QDateTimePrivate, m_msecs); +OFFSET_ACCESS(int, QDateTimePrivate, m_offsetFromUtc); +OFFSET_ACCESS(QTimeZone, QDateTimePrivate, m_timeZone); +OFFSET_ACCESS(QDateTimePrivate::StatusFlags, QDateTimePrivate, m_status); #endif @@ -222,7 +227,7 @@ void tst_offsets::offsets_data() OFFSET_TEST(QDateTimePrivate, spec) << 16 << 20; OFFSET_TEST(QDateTimePrivate, utcOffset) << 20 << 24; # endif -#else +#elif QT_VERSION < 0x50800 # ifdef Q_OS_WIN OFFSET_TEST(QDateTimePrivate, m_msecs) << 8 << 8; OFFSET_TEST(QDateTimePrivate, m_spec) << 16 << 16; @@ -236,6 +241,11 @@ void tst_offsets::offsets_data() OFFSET_TEST(QDateTimePrivate, m_timeZone) << 20 << 24; OFFSET_TEST(QDateTimePrivate, m_status) << 24 << 32; # endif +#else + OFFSET_TEST(QDateTimePrivate, m_msecs) << 0 << 0; + OFFSET_TEST(QDateTimePrivate, m_status) << 8 << 8; + OFFSET_TEST(QDateTimePrivate, m_offsetFromUtc) << 12 << 12; + OFFSET_TEST(QDateTimePrivate, m_timeZone) << 20 << 24; #endif #ifdef HAS_BOOST