| """ |
| Tests that importing ObjC modules in a non-ObjC target doesn't crash LLDB. |
| """ |
| |
| import lldb |
| from lldbsuite.test.decorators import * |
| from lldbsuite.test.lldbtest import * |
| from lldbsuite.test import lldbutil |
| |
| |
| class TestCase(TestBase): |
| def test(self): |
| self.build() |
| lldbutil.run_to_source_breakpoint( |
| self, "// break here", lldb.SBFileSpec("main.c") |
| ) |
| |
| # Import foundation to get some ObjC types. |
| self.expect("expr --lang objc -- @import Foundation") |
| # Do something with NSString (which requires special handling when |
| # preparing to run in the target). The expression most likely can't |
| # be prepared to run in the target but it should at least not crash LLDB. |
| self.expect( |
| 'expr --lang objc -- [NSString stringWithFormat:@"%d", 1];', |
| error=True, |
| substrs=[ |
| "Rewriting an Objective-C constant string requires CFStringCreateWithBytes" |
| ], |
| ) |