Summary: When the ClangModulesDeclVendor currently fails it just prints very basic and often incomplete diagnostics without any source locations: ``` (lldb) p @import Foundation error: while importing modules: 'foo/bar.h' file not found could not build module 'Darwin' [...] ``` or even just ``` (lldb) p @import Foundation error: while importing modules: could not build module 'Darwin' [...] ``` These diagnostics help neither the user nor us with figuring out what is the reason for the failure. This patch wires up a full TextDiagnosticPrinter in the ClangModulesDeclVendor and makes sure we always return the error stream to the user when we fail to compile our modules. Fixes rdar://63216849 Reviewers: aprantl, jdoerfert Reviewed By: aprantl Subscribers: JDevlieghere Differential Revision: https://reviews.llvm.org/D79947
24 lines
1.0 KiB
Python
24 lines
1.0 KiB
Python
import lldb
|
|
from lldbsuite.test.decorators import *
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
|
|
class TestCase(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
|
|
@skipUnlessDarwin
|
|
def test(self):
|
|
self.build()
|
|
lldbutil.run_to_source_breakpoint(self, "// break here", lldb.SBFileSpec("main.m"))
|
|
|
|
# Try importing our custom module. This will fail as LLDB won't define
|
|
# the CLANG_ONLY define when it compiles the module for the expression
|
|
# evaluator.
|
|
# Check that the error message shows file/line/column, prints the relevant
|
|
# line from the source code and mentions the module that failed to build.
|
|
self.expect("expr @import LLDBTestModule", error=True,
|
|
substrs=["module.h:4:1: error: unknown type name 'syntax_error_for_lldb_to_find'",
|
|
"syntax_error_for_lldb_to_find // comment that tests source printing",
|
|
"could not build module 'LLDBTestModule'"])
|