1"""Test evaluating expressions which ref. index variable 'i' which just goes 2from out of scope to in scope when stopped at the breakpoint.""" 3 4 5 6import lldb 7from lldbsuite.test.lldbtest import * 8import lldbsuite.test.lldbutil as lldbutil 9 10 11class NonOverlappingIndexVariableCase(TestBase): 12 13 def setUp(self): 14 TestBase.setUp(self) 15 self.source = 'main.cpp' 16 self.line_to_break = line_number( 17 self.source, '// Set breakpoint here.') 18 19 # rdar://problem/9890530 20 def test_eval_index_variable(self): 21 """Test expressions of variable 'i' which appears in two for loops.""" 22 self.build() 23 self.runCmd("file " + self.getBuildArtifact("a.out"), 24 CURRENT_EXECUTABLE_SET) 25 26 lldbutil.run_break_set_by_file_and_line( 27 self, 28 self.source, 29 self.line_to_break, 30 num_expected_locations=1, 31 loc_exact=True) 32 33 self.runCmd("run", RUN_SUCCEEDED) 34 35 # The stop reason of the thread should be breakpoint. 36 self.expect("thread list", STOPPED_DUE_TO_BREAKPOINT, 37 substrs=['stopped', 38 'stop reason = breakpoint']) 39 40 self.runCmd('frame variable i') 41 self.runCmd('expr i') 42 self.runCmd('expr ptr[0]->point.x') 43 self.runCmd('expr ptr[0]->point.y') 44 self.runCmd('expr ptr[i]->point.x') 45 self.runCmd('expr ptr[i]->point.y') 46