199451b44SJordan Rupprecht""" 299451b44SJordan RupprechtTests that ObjC member variables are available where they should be. 399451b44SJordan Rupprecht""" 499451b44SJordan Rupprechtimport lldb 599451b44SJordan Rupprechtfrom lldbsuite.test.decorators import * 699451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import * 799451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil 899451b44SJordan Rupprecht 999451b44SJordan Rupprecht 1099451b44SJordan Rupprechtclass ObjCSelfTestCase(TestBase): 1199451b44SJordan Rupprecht def test_with_run_command(self): 1299451b44SJordan Rupprecht """Test that the appropriate member variables are available when stopped in Objective-C class and instance methods""" 1399451b44SJordan Rupprecht self.build() 1499451b44SJordan Rupprecht self.runCmd("file " + self.getBuildArtifact("a.out"), CURRENT_EXECUTABLE_SET) 1599451b44SJordan Rupprecht 16*2238dcc3SJonas Devlieghere self.set_breakpoint(line_number("main.m", "// breakpoint 1")) 17*2238dcc3SJonas Devlieghere self.set_breakpoint(line_number("main.m", "// breakpoint 2")) 1899451b44SJordan Rupprecht 1999451b44SJordan Rupprecht self.runCmd("process launch", RUN_SUCCEEDED) 2099451b44SJordan Rupprecht 21*2238dcc3SJonas Devlieghere self.expect("expression -- m_a = 2", startstr="(int) $0 = 2") 2299451b44SJordan Rupprecht 2399451b44SJordan Rupprecht self.runCmd("process continue") 2499451b44SJordan Rupprecht 2599451b44SJordan Rupprecht # This would be disallowed if we enforced const. But we don't. 26*2238dcc3SJonas Devlieghere self.expect("expression -- m_a = 2", error=True) 2799451b44SJordan Rupprecht 28*2238dcc3SJonas Devlieghere self.expect("expression -- s_a", startstr="(int) $1 = 5") 2999451b44SJordan Rupprecht 3099451b44SJordan Rupprecht def set_breakpoint(self, line): 3199451b44SJordan Rupprecht lldbutil.run_break_set_by_file_and_line( 32*2238dcc3SJonas Devlieghere self, "main.m", line, num_expected_locations=1, loc_exact=True 33*2238dcc3SJonas Devlieghere ) 34