""" 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", )