1import lldb 2from lldbsuite.test.decorators import * 3from lldbsuite.test.lldbtest import * 4from lldbsuite.test import lldbutil 5 6 7class TestCase(TestBase): 8 @skipUnlessDarwin 9 @no_debug_info_test 10 def test(self): 11 self.build() 12 lldbutil.run_to_source_breakpoint( 13 self, "// break here", lldb.SBFileSpec("main.m") 14 ) 15 16 # Test several variables with C++ keyword names and make sure they 17 # work as intended in the expression parser. 18 self.expect_expr("alignas", result_type="int", result_value="1") 19 self.expect_expr("alignof", result_type="int", result_value="1") 20 self.expect_expr("and", result_type="int", result_value="1") 21 self.expect_expr("and_eq", result_type="int", result_value="1") 22 self.expect_expr("atomic_cancel", result_type="int", result_value="1") 23 self.expect_expr("atomic_commit", result_type="int", result_value="1") 24 self.expect_expr("atomic_noexcept", result_type="int", result_value="1") 25 self.expect_expr("bitand", result_type="int", result_value="1") 26 self.expect_expr("bitor", result_type="int", result_value="1") 27 self.expect_expr("catch", result_type="int", result_value="1") 28 self.expect_expr("char8_t", result_type="int", result_value="1") 29 self.expect_expr("char16_t", result_type="int", result_value="1") 30 self.expect_expr("char32_t", result_type="int", result_value="1") 31 self.expect_expr("class", result_type="int", result_value="1") 32 self.expect_expr("compl", result_type="int", result_value="1") 33 self.expect_expr("concept", result_type="int", result_value="1") 34 self.expect_expr("consteval", result_type="int", result_value="1") 35 self.expect_expr("constexpr", result_type="int", result_value="1") 36 self.expect_expr("constinit", result_type="int", result_value="1") 37 self.expect_expr("const_cast", result_type="int", result_value="1") 38 self.expect_expr("co_await", result_type="int", result_value="1") 39 self.expect_expr("co_return", result_type="int", result_value="1") 40 self.expect_expr("co_yield", result_type="int", result_value="1") 41 self.expect_expr("decltype", result_type="int", result_value="1") 42 self.expect_expr("delete", result_type="int", result_value="1") 43 self.expect_expr("dynamic_cast", result_type="int", result_value="1") 44 self.expect_expr("explicit", result_type="int", result_value="1") 45 self.expect_expr("export", result_type="int", result_value="1") 46 self.expect_expr("friend", result_type="int", result_value="1") 47 self.expect_expr("mutable", result_type="int", result_value="1") 48 self.expect_expr("namespace", result_type="int", result_value="1") 49 self.expect_expr("new", result_type="int", result_value="1") 50 self.expect_expr("noexcept", result_type="int", result_value="1") 51 self.expect_expr("not", result_type="int", result_value="1") 52 self.expect_expr("not_eq", result_type="int", result_value="1") 53 self.expect_expr("operator", result_type="int", result_value="1") 54 self.expect_expr("or", result_type="int", result_value="1") 55 self.expect_expr("or_eq", result_type="int", result_value="1") 56 self.expect_expr("private", result_type="int", result_value="1") 57 self.expect_expr("protected", result_type="int", result_value="1") 58 self.expect_expr("public", result_type="int", result_value="1") 59 self.expect_expr("reflexpr", result_type="int", result_value="1") 60 self.expect_expr("reinterpret_cast", result_type="int", result_value="1") 61 self.expect_expr("requires", result_type="int", result_value="1") 62 self.expect_expr("static_assert", result_type="int", result_value="1") 63 self.expect_expr("static_cast", result_type="int", result_value="1") 64 self.expect_expr("synchronized", result_type="int", result_value="1") 65 self.expect_expr("template", result_type="int", result_value="1") 66 self.expect_expr("this", result_type="int", result_value="1") 67 self.expect_expr("thread_local", result_type="int", result_value="1") 68 self.expect_expr("throw", result_type="int", result_value="1") 69 self.expect_expr("try", result_type="int", result_value="1") 70 self.expect_expr("typeid", result_type="int", result_value="1") 71 self.expect_expr("typename", result_type="int", result_value="1") 72 self.expect_expr("virtual", result_type="int", result_value="1") 73 self.expect_expr("xor", result_type="int", result_value="1") 74 self.expect_expr("xor_eq", result_type="int", result_value="1") 75 76 # Some keywords are not available in LLDB as their language feature 77 # is enabled by default. 78 79 # 'using' is used by LLDB for local variables. 80 self.expect("expr using", error=True, substrs=["expected unqualified-id"]) 81 82 # 'wchar_t' supported is enabled in LLDB. 83 self.expect("expr wchar_t", error=True, substrs=["expected unqualified-id"]) 84 85 # LLDB enables 'bool' support by default. 86 self.expect("expr bool", error=True, substrs=["expected unqualified-id"]) 87 self.expect("expr false", error=True, substrs=["expected unqualified-id"]) 88 self.expect("expr true", error=True, substrs=["expected unqualified-id"]) 89