diff options
author | hjk <hjk@qt.io> | 2020-12-11 08:42:58 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-12-11 11:37:11 +0000 |
commit | d4ed07eb872fd29bd7b3fcf1955b9825a5702d3b (patch) | |
tree | f14ddcc9a1a4b0301ca88fa9578804be7eba09dd /share | |
parent | 0a20b8e7de67ce99443173da59323bbc50fc6d4c (diff) |
Debugger: Change/improve LLDB display of enums in some cases
This fixes the Internal2, EnumFlags and EnumInClass tests on Linux.
The values lose now the previously hand-crafted Class:: prefixes,
but the context is clear from the type column, and it's what LLDB
developers (and potentially users) consider normal.
Change-Id: I09e41f7b4fb4f078ef3f535fe650d06e7c2a0331
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'share')
-rw-r--r-- | share/qtcreator/debugger/lldbbridge.py | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/share/qtcreator/debugger/lldbbridge.py b/share/qtcreator/debugger/lldbbridge.py index 44e361727b..b1eee5d8c0 100644 --- a/share/qtcreator/debugger/lldbbridge.py +++ b/share/qtcreator/debugger/lldbbridge.py @@ -219,16 +219,14 @@ class Dumper(DumperBase): if code == lldb.eTypeClassEnumeration: intval = nativeValue.GetValueAsSigned() - if hasattr(nativeType, 'get_enum_members_array'): - for enumMember in nativeType.get_enum_members_array(): - # Even when asking for signed we get unsigned with LLDB 3.8. - diff = enumMember.GetValueAsSigned() - intval - mask = (1 << nativeType.GetByteSize() * 8) - 1 - if diff & mask == 0: - path = nativeType.GetName().split('::') - path[-1] = enumMember.GetName() - val.ldisplay = '%s (%d)' % ('::'.join(path), intval) - val.ldisplay = '%d' % intval + display = str(nativeValue).split(' = ') + if len(display) == 2: + verbose = display[1] + if '|' in verbose and not verbose.startswith('('): + verbose = '(' + verbose + ')' + else: + verbose = intval + val.ldisplay = '%s (%d)' % (verbose, intval) elif code in (lldb.eTypeClassComplexInteger, lldb.eTypeClassComplexFloat): val.ldisplay = str(nativeValue.GetValue()) #elif code == lldb.eTypeClassArray: |