[lldb][Tests] Skip static-only tests in TestConstStaticIntegralMember.py for dsym...
authorMichael Buch <michaelbuch12@gmail.com>
Tue, 16 Aug 2022 23:48:45 +0000 (00:48 +0100)
committerMichael Buch <michaelbuch12@gmail.com>
Wed, 17 Aug 2022 14:39:21 +0000 (15:39 +0100)
This test fails for Clang versions < 14.0 for `dsym` variants.
`dsymutil` strips debug info for classes with only static members.
Thus move the failing assertions into the XFAIL test case.

Differential Revision: https://reviews.llvm.org/D132004

lldb/test/API/lang/cpp/const_static_integral_member/TestConstStaticIntegralMember.py

index 594e67b..4f51d22 100644 (file)
@@ -67,12 +67,6 @@ class TestCase(TestBase):
         self.expect_expr("A::scoped_ll_enum_val_neg", result_value="case0")
         self.expect_expr("A::scoped_ll_enum_val", result_value="case2")
 
-        # Test an aliased enum with fixed underlying type.
-        self.expect_expr("ClassWithEnumAlias::enum_alias",
-                         result_value="scoped_enum_case2")
-        self.expect_expr("ClassWithEnumAlias::enum_alias_alias",
-                         result_value="scoped_enum_case1")
-
         # Test taking address.
         if lldbplatformutil.getPlatform() == "windows":
             # On Windows data members without the out-of-class definitions still have
@@ -98,7 +92,20 @@ class TestCase(TestBase):
 
         self.expect_expr("ClassWithOnlyConstStatic::member", result_value="3")
 
+    # With older versions of Clang, LLDB fails to evaluate classes with only
+    # constexpr members when dsymutil is enabled
+    @expectedFailureAll(debug_info=["dsym"], compiler=["clang"], compiler_version=["<", "14.0"])
+    def test_class_with_only_constexpr_static(self):
+        self.build()
+        lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.cpp"))
+
         # Test `constexpr static`.
         self.expect_expr("ClassWithConstexprs::member", result_value="2")
         self.expect_expr("ClassWithConstexprs::enum_val", result_value="enum_case2")
         self.expect_expr("ClassWithConstexprs::scoped_enum_val", result_value="scoped_enum_case2")
+
+        # Test an aliased enum with fixed underlying type.
+        self.expect_expr("ClassWithEnumAlias::enum_alias",
+                         result_value="scoped_enum_case2")
+        self.expect_expr("ClassWithEnumAlias::enum_alias_alias",
+                         result_value="scoped_enum_case1")