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 mydir = TestBase.compute_mydir(__file__) 13 14 @no_debug_info_test 15 @skipIfWindows 16 def test(self): 17 self.build() 18 lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c")) 19 20 long_size_eq_int = self.frame().EvaluateExpression("sizeof(long) == sizeof(int)") 21 22 # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. 23 self.expect_expr("complex_int", result_type="_Complex int", result_value="4294967295 + 4294967294i") 24 self.expect_expr("complex_unsigned", result_type="_Complex int", result_value="1 + 2i") 25 26 # FIXME: We get the type wrong if long has the same size as int. 27 if long_size_eq_int.GetValue() == "true": 28 self.expect_expr("complex_long", result_type="_Complex int") 29 self.expect_expr("complex_unsigned_long", result_type="_Complex int", result_value="1 + 2i") 30 else: 31 self.expect_expr("complex_long", result_type="_Complex long") 32 self.expect_expr("complex_unsigned_long", result_type="_Complex long", result_value="1 + 2i") 33 34 @no_debug_info_test 35 @skipIfWindows 36 def test_long_long(self): 37 self.build() 38 lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.c")) 39 40 # FIXME: We get the type wrong if long has the same size as long long. 41 # FIXME: LLDB treats all complex ints as unsigned, so the value is wrong. 42 long_size_eq_long_long = self.frame().EvaluateExpression("sizeof(long) == sizeof(long long)") 43 if long_size_eq_long_long.GetValue() == "true": 44 self.expect_expr("complex_long_long", result_type="_Complex long") 45 self.expect_expr("complex_unsigned_long_long", result_type="_Complex long", result_value="1 + 2i") 46 else: 47 self.expect_expr("complex_long_long", result_type="_Complex long long") 48 self.expect_expr("complex_unsigned_long_long", result_type="_Complex long long", result_value="1 + 2i") 49