1""" 2Tests GCC's complex integer types. 3""" 4 5import lldb 6from lldbsuite.test.decorators import * 7from lldbsuite.test.lldbtest import * 8from lldbsuite.test import lldbutil 9 10class TestCase(TestBase): 11 12 @no_debug_info_test 13 @skipIfWindows 14 def test(self): 15 self.build() 16 lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c")) 17 18 long_size_eq_int = self.frame().EvaluateExpression("sizeof(long) == sizeof(int)") 19 20 # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. 21 self.expect_expr("complex_int", result_type="_Complex int", result_value="4294967295 + 4294967294i") 22 self.expect_expr("complex_unsigned", result_type="_Complex int", result_value="1 + 2i") 23 24 # FIXME: We get the type wrong if long has the same size as int. 25 if long_size_eq_int.GetValue() == "true": 26 self.expect_expr("complex_long", result_type="_Complex int") 27 self.expect_expr("complex_unsigned_long", result_type="_Complex int", result_value="1 + 2i") 28 else: 29 self.expect_expr("complex_long", result_type="_Complex long") 30 self.expect_expr("complex_unsigned_long", result_type="_Complex long", result_value="1 + 2i") 31 32 @no_debug_info_test 33 @skipIfWindows 34 def test_long_long(self): 35 self.build() 36 lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c")) 37 38 # FIXME: We get the type wrong if long has the same size as long long. 39 # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. 40 long_size_eq_long_long = self.frame().EvaluateExpression("sizeof(long) == sizeof(long long)") 41 if long_size_eq_long_long.GetValue() == "true": 42 self.expect_expr("complex_long_long", result_type="_Complex long") 43 self.expect_expr("complex_unsigned_long_long", result_type="_Complex long", result_value="1 + 2i") 44 else: 45 self.expect_expr("complex_long_long", result_type="_Complex long long") 46 self.expect_expr("complex_unsigned_long_long", result_type="_Complex long long", result_value="1 + 2i") 47