[kleopatra] [Bug 472056] accessiblevaluelabel.cpp fails to build with Clang 16
Ingo Klöcker
bugzilla_noreply at kde.org
Sun Sep 17 15:47:07 BST 2023
https://bugs.kde.org/show_bug.cgi?id=472056
Ingo Klöcker <kloecker at kde.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |kloecker at kde.org
Resolution|--- |UPSTREAM
Status|REPORTED |RESOLVED
--- Comment #2 from Ingo Klöcker <kloecker at kde.org> ---
QAccessible::UserRole is documented as "The first value to be used for user
defined roles.". Hence, we are supposed to use QAccessible::UserRole + n for
user defined roles. I'm using QAccessible::UserRole + 1.
Unfortunately, Qt chose 0x0000ffff as value for QAccessible::UserRole, so that
all values of the QAccessible::Role enum fit into uint16 and apparently clang
16 chooses uint16 as underlying type (because the "underlying type is an
implementation-defined integral type that can represent all enumerator
values").
I consider this a bug in Qt. To me, Qt clearly intends QAccessible::Role as a
32-bit enum (apparent from the 32-bit hex notation used for the enum values)
and therefore needs to state int (or unsigned int) explicitly as underlying
type of QAccessible::Role:
```
enum Role {
NoRole = 0x00000000,
TitleBar = 0x00000001,
MenuBar = 0x00000002,
```
https://code.qt.io/cgit/qt/qtbase.git/tree/src/gui/accessible/qaccessible_base.h
This is related to bug https://bugreports.qt.io/browse/QTBUG-64962 which was
closed as invalid without addressing the issue that compilers can choose
smaller underlying types than (seemingly) intended by Qt.
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Kdepim-bugs
mailing list