xref: /llvm-project/lldb/test/API/lang/cpp/fixits/TestCppFixIts.py (revision 8e2bd05c4e86834a318ef2279e271f0769be4988)
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