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