| """ | |
| Test that importing the std module on a compile unit | |
| that doesn't use the std module will not break LLDB. | |
| It's not really specified at the moment what kind of | |
| error we should report back to the user in this | |
| situation. Currently Clang will just complain that | |
| the std module doesn't exist or can't be loaded. | |
| """ | |
| from lldbsuite.test.decorators import * | |
| from lldbsuite.test.lldbtest import * | |
| from lldbsuite.test import lldbutil | |
| class STLTestCase(TestBase): | |
| @add_test_categories(["libc++"]) | |
| @skipIf(compiler=no_match("clang")) | |
| def test(self): | |
| self.build() | |
| lldbutil.run_to_source_breakpoint( | |
| self, "// Set break point at this line.", lldb.SBFileSpec("main.cpp") | |
| ) | |
| # Activate importing of std module. | |
| self.runCmd("settings set target.import-std-module true") | |
| # Run some commands that should all fail without our std module. | |
| self.expect("expr std::abs(-42)", error=True) | |
| self.expect("expr std::div(2, 1).quot", error=True) | |
| self.expect("expr (std::size_t)33U", error=True) | |
| self.expect("expr char a = 'b'; char b = 'a'; std::swap(a, b); a", error=True) |