| """ |
| Tests GCC's complex integer types. |
| """ |
| |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestCase(TestBase): |
| @no_debug_info_test |
| @skipIfWindows |
| def test(self): |
| self.build() |
| lldbutil.run_to_source_breakpoint( |
| self, "// break here", lldb.SBFileSpec("main.c") |
| ) |
| |
| long_size_eq_int = self.frame().EvaluateExpression( |
| "sizeof(long) == sizeof(int)" |
| ) |
| |
| # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. |
| self.expect_expr( |
| "complex_int", |
| result_type="_Complex int", |
| result_value="4294967295 + 4294967294i", |
| ) |
| self.expect_expr( |
| "complex_unsigned", result_type="_Complex int", result_value="1 + 2i" |
| ) |
| |
| # FIXME: We get the type wrong if long has the same size as int. |
| if long_size_eq_int.GetValue() == "true": |
| self.expect_expr("complex_long", result_type="_Complex int") |
| self.expect_expr( |
| "complex_unsigned_long", |
| result_type="_Complex int", |
| result_value="1 + 2i", |
| ) |
| else: |
| self.expect_expr("complex_long", result_type="_Complex long") |
| self.expect_expr( |
| "complex_unsigned_long", |
| result_type="_Complex long", |
| result_value="1 + 2i", |
| ) |
| |
| @no_debug_info_test |
| @skipIfWindows |
| def test_long_long(self): |
| self.build() |
| lldbutil.run_to_source_breakpoint( |
| self, "// break here", lldb.SBFileSpec("main.c") |
| ) |
| |
| # FIXME: We get the type wrong if long has the same size as long long. |
| # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. |
| long_size_eq_long_long = self.frame().EvaluateExpression( |
| "sizeof(long) == sizeof(long long)" |
| ) |
| if long_size_eq_long_long.GetValue() == "true": |
| self.expect_expr("complex_long_long", result_type="_Complex long") |
| self.expect_expr( |
| "complex_unsigned_long_long", |
| result_type="_Complex long", |
| result_value="1 + 2i", |
| ) |
| else: |
| self.expect_expr("complex_long_long", result_type="_Complex long long") |
| self.expect_expr( |
| "complex_unsigned_long_long", |
| result_type="_Complex long long", |
| result_value="1 + 2i", |
| ) |