Skip to content

Commit 9e08f24

Browse files
authored
Merge pull request #6400 from Michael137/bugfix/lldb-member-func-ptr-format-to-20221013
[cherry-pick][stable/20221013] [lldb][test] TestDataFormatterCpp.py: fix expected format for member pointers
2 parents cc22d39 + 44204d3 commit 9e08f24

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed

lldb/test/API/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212

1313
class CppDataFormatterTestCase(TestBase):
14-
1514
def setUp(self):
1615
# Call super's setUp().
1716
TestBase.setUp(self)
@@ -286,15 +285,23 @@ def cleanup():
286285
substrs=['(int) iAmInt = 0x00000001'])
287286
self.expect("frame variable iAmInt", substrs=['(int) iAmInt = 1'])
288287

289-
# Check that pointer to members are correctly formatted
288+
@skipIfWindows
289+
def test_mem_func_ptr_formats(self):
290+
self.build()
291+
292+
lldbutil.run_to_source_breakpoint(self, "Break in has_local_mem_func_pointers", lldb.SBFileSpec("main.cpp"))
293+
290294
self.expect(
291295
"frame variable member_ptr",
292-
substrs=['member_ptr = 0x'])
296+
patterns=['member_ptr = 0x[0-9a-z]+'])
293297
self.expect(
294298
"frame variable member_func_ptr",
295-
substrs=['member_func_ptr = 0x',
296-
'(a.out`IUseCharStar::member_func(int) at main.cpp:61)'])
299+
patterns=['member_func_ptr = 0x[0-9a-z]+'],
300+
substrs=['(a.out`IUseCharStar::member_func(int) at main.cpp:61)'])
297301
self.expect(
298302
"frame variable ref_to_member_func_ptr",
299-
substrs=['ref_to_member_func_ptr = 0x',
300-
'(a.out`IUseCharStar::member_func(int) at main.cpp:61)'])
303+
patterns=['ref_to_member_func_ptr = 0x[0-9a-z]+'],
304+
substrs=['(a.out`IUseCharStar::member_func(int) at main.cpp:61)'])
305+
self.expect(
306+
"frame variable virt_member_func_ptr",
307+
patterns=['virt_member_func_ptr = 0x[0-9a-z]+$'])

lldb/test/API/functionalities/data-formatter/data-formatter-cpp/main.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,21 @@ struct IUseCharStar
5959
IUseCharStar() : pointer("Hello world") {}
6060

6161
char const *member_func(int) { return ""; }
62+
virtual void virt_member_func() {}
6263
};
6364

65+
void has_local_mem_func_pointers() {
66+
const char *IUseCharStar::*member_ptr = &IUseCharStar::pointer;
67+
const char *(IUseCharStar::*member_func_ptr)(int) =
68+
&IUseCharStar::member_func;
69+
auto &ref_to_member_func_ptr = member_func_ptr;
70+
71+
void (IUseCharStar::*virt_member_func_ptr)() =
72+
&IUseCharStar::virt_member_func;
73+
74+
::puts("Break in has_local_mem_func_pointers");
75+
}
76+
6477
int main (int argc, const char * argv[])
6578
{
6679

@@ -109,10 +122,7 @@ int main (int argc, const char * argv[])
109122

110123
i_am_cooler the_coolest_guy(1,2,3.14,6.28,'E','G');
111124

112-
const char *IUseCharStar::*member_ptr = &IUseCharStar::pointer;
113-
const char *(IUseCharStar::*member_func_ptr)(int) =
114-
&IUseCharStar::member_func;
115-
auto &ref_to_member_func_ptr = member_func_ptr;
125+
has_local_mem_func_pointers();
116126

117127
return 0; // Set break point at this line.
118128
}

0 commit comments

Comments
 (0)