1*99451b44SJordan Rupprecht"""Test that inline functions from modules are imported correctly"""
2*99451b44SJordan Rupprecht
3*99451b44SJordan Rupprecht
4*99451b44SJordan Rupprecht
5*99451b44SJordan Rupprecht
6*99451b44SJordan Rupprechtimport unittest2
7*99451b44SJordan Rupprecht
8*99451b44SJordan Rupprechtimport lldb
9*99451b44SJordan Rupprechtfrom lldbsuite.test.decorators import *
10*99451b44SJordan Rupprechtfrom lldbsuite.test.lldbtest import *
11*99451b44SJordan Rupprechtfrom lldbsuite.test import lldbutil
12*99451b44SJordan Rupprecht
13*99451b44SJordan Rupprecht
14*99451b44SJordan Rupprechtclass ModulesInlineFunctionsTestCase(TestBase):
15*99451b44SJordan Rupprecht
16*99451b44SJordan Rupprecht    @skipIf(macos_version=["<", "10.12"], debug_info=no_match(["gmodules"]))
17*99451b44SJordan Rupprecht    def test_expr(self):
18*99451b44SJordan Rupprecht        self.build()
19*99451b44SJordan Rupprecht        exe = self.getBuildArtifact("a.out")
20*99451b44SJordan Rupprecht        self.runCmd("file " + exe, CURRENT_EXECUTABLE_SET)
21*99451b44SJordan Rupprecht
22*99451b44SJordan Rupprecht        # Break inside the foo function which takes a bar_ptr argument.
23*99451b44SJordan Rupprecht        lldbutil.run_to_source_breakpoint(
24*99451b44SJordan Rupprecht            self, '// Set breakpoint here.', lldb.SBFileSpec('main.m'))
25*99451b44SJordan Rupprecht
26*99451b44SJordan Rupprecht        self.runCmd(
27*99451b44SJordan Rupprecht            "settings set target.clang-module-search-paths \"" +
28*99451b44SJordan Rupprecht            self.getSourceDir() +
29*99451b44SJordan Rupprecht            "\"")
30*99451b44SJordan Rupprecht
31*99451b44SJordan Rupprecht        self.expect("expr @import myModule; 3", VARIABLES_DISPLAYED_CORRECTLY,
32*99451b44SJordan Rupprecht                    substrs=["int", "3"])
33*99451b44SJordan Rupprecht
34*99451b44SJordan Rupprecht        self.expect("expr isInline(2)", VARIABLES_DISPLAYED_CORRECTLY,
35*99451b44SJordan Rupprecht                    substrs=["4"])
36