1*8e2bd05cSPete Lawrence""" 2*8e2bd05cSPete LawrenceTests a C++ fixit for the `expr` command and 3*8e2bd05cSPete Lawrence`po` alias (aka DWIM aka "do what I mean") alias. 4*8e2bd05cSPete Lawrence""" 5*8e2bd05cSPete Lawrenceimport lldb 6*8e2bd05cSPete Lawrencefrom lldbsuite.test.decorators import * 7*8e2bd05cSPete Lawrencefrom lldbsuite.test.lldbtest import * 8*8e2bd05cSPete Lawrencefrom lldbsuite.test import lldbutil 9*8e2bd05cSPete Lawrence 10*8e2bd05cSPete Lawrence 11*8e2bd05cSPete Lawrenceclass TestCase(TestBase): 12*8e2bd05cSPete Lawrence def test_fixit_with_dwim(self): 13*8e2bd05cSPete Lawrence """Confirms `po` shows an expression after applying Fix-It(s).""" 14*8e2bd05cSPete Lawrence 15*8e2bd05cSPete Lawrence self.build() 16*8e2bd05cSPete Lawrence lldbutil.run_to_source_breakpoint( 17*8e2bd05cSPete Lawrence self, "// break here", lldb.SBFileSpec("main.cpp") 18*8e2bd05cSPete Lawrence ) 19*8e2bd05cSPete Lawrence 20*8e2bd05cSPete Lawrence self.expect( 21*8e2bd05cSPete Lawrence "dwim-print -O -- class C { int i; void f() { []() { ++i; }(); } }; 42", 22*8e2bd05cSPete Lawrence error=True, 23*8e2bd05cSPete Lawrence substrs=[ 24*8e2bd05cSPete Lawrence "Evaluated this expression after applying Fix-It(s)", 25*8e2bd05cSPete Lawrence "class C { int i; void f() { [this]() { ++i; }(); } }", 26*8e2bd05cSPete Lawrence ], 27*8e2bd05cSPete Lawrence ) 28*8e2bd05cSPete Lawrence 29*8e2bd05cSPete Lawrence def test_fixit_with_expression(self): 30*8e2bd05cSPete Lawrence """Confirms `expression` shows an expression after applying Fix-It(s).""" 31*8e2bd05cSPete Lawrence 32*8e2bd05cSPete Lawrence self.build() 33*8e2bd05cSPete Lawrence lldbutil.run_to_source_breakpoint( 34*8e2bd05cSPete Lawrence self, "// break here", lldb.SBFileSpec("main.cpp") 35*8e2bd05cSPete Lawrence ) 36*8e2bd05cSPete Lawrence 37*8e2bd05cSPete Lawrence self.expect( 38*8e2bd05cSPete Lawrence "expr class C { int i; void f() { []() { ++i; }(); } }; 42", 39*8e2bd05cSPete Lawrence error=True, 40*8e2bd05cSPete Lawrence substrs=[ 41*8e2bd05cSPete Lawrence "Evaluated this expression after applying Fix-It(s)", 42*8e2bd05cSPete Lawrence "class C { int i; void f() { [this]() { ++i; }(); } }", 43*8e2bd05cSPete Lawrence ], 44*8e2bd05cSPete Lawrence ) 45