Files
clang-p2996/lldb/test/API/lang/cpp/enum_promotion/main.cpp
Michael Buch 0feb00f17c [lldb][test] TestCPPEnumPromotion: make sure enums are preserved in dSYM
On macOS CI this was failing with:
```
FAIL: test_dsym (TestCPPEnumPromotion.TestCPPEnumPromotion)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/ec2-user/jenkins/workspace/llvm.org/as-lldb-cmake/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 1784, in test_method
    return attrvalue(self)
  File "/Users/ec2-user/jenkins/workspace/llvm.org/as-lldb-cmake/llvm-project/lldb/test/API/lang/cpp/enum_promotion/TestCPPEnumPromotion.py", line 28, in test
    self.expect_expr("+EnumUChar::UChar", result_type=UChar_promoted.type.name)
  File "/Users/ec2-user/jenkins/workspace/llvm.org/as-lldb-cmake/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 2540, in expect_expr
    value_check.check_value(self, eval_result, str(eval_result))
  File "/Users/ec2-user/jenkins/workspace/llvm.org/as-lldb-cmake/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 299, in check_value
    test_base.assertSuccess(val.GetError())
  File "/Users/ec2-user/jenkins/workspace/llvm.org/as-lldb-cmake/llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py", line 2575, in assertSuccess
    self.fail(self._formatMessage(msg, "'{}' is not success".format(error)))
AssertionError: 'error: <user expression 0>:1:2: use of undeclared identifier 'EnumUChar'
    1 | +EnumUChar::UChar
      |  ^
' is not success
```
But only for the `dSYM` variant of the test.

Looking at the dSYM, none of the enums are actually preserved in the debug-info. We have to actually use the enum types in source to get dsymutil to preserve them. This patch does just that.
2025-02-13 18:13:09 +00:00

23 lines
787 B
C++

enum EnumUChar { UChar = 1 } e1;
enum EnumUShort { UShort = 0x101 } e2;
enum EnumUInt { UInt = 0x10001 } e3;
enum EnumSLong { SLong = 0x100000001 } e4;
enum EnumULong { ULong = 0xFFFFFFFFFFFFFFF0 } e5;
enum EnumNChar { NChar = -1 } e6;
enum EnumNShort { NShort = -0x101 } e7;
enum EnumNInt { NInt = -0x10001 } e8;
enum EnumNLong { NLong = -0x100000001 } e9;
int main() {
auto UChar_promoted = +EnumUChar::UChar;
auto UShort_promoted = +EnumUShort::UShort;
auto UInt_promoted = +EnumUInt::UInt;
auto SLong_promoted = +EnumSLong::SLong;
auto ULong_promoted = +EnumULong::ULong;
auto NChar_promoted = +EnumNChar::NChar;
auto NShort_promoted = +EnumNShort::NShort;
auto NInt_promoted = +EnumNInt::NInt;
auto NLong_promoted = +EnumNLong::NLong;
return 0; // break here
}