2626using namespace swift ;
2727
2828#if SWIFT_BUILD_SWIFT_SYNTAX
29+ static BridgedDiagnosticSeverity bridgeDiagnosticSeverity (DiagnosticKind kind) {
30+ switch (kind) {
31+ case DiagnosticKind::Error:
32+ return BridgedDiagnosticSeverity::BridgedError;
33+
34+ case DiagnosticKind::Warning:
35+ return BridgedDiagnosticSeverity::BridgedWarning;
36+
37+ case DiagnosticKind::Remark:
38+ return BridgedDiagnosticSeverity::BridgedRemark;
39+
40+ case DiagnosticKind::Note:
41+ return BridgedDiagnosticSeverity::BridgedNote;
42+ }
43+ }
44+
2945// / Enqueue a diagnostic with ASTGen's diagnostic rendering.
3046static void addQueueDiagnostic (void *queuedDiagnostics,
3147 void *perFrontendState,
@@ -37,24 +53,7 @@ static void addQueueDiagnostic(void *queuedDiagnostics,
3753 info.FormatArgs );
3854 }
3955
40- BridgedDiagnosticSeverity severity;
41- switch (info.Kind ) {
42- case DiagnosticKind::Error:
43- severity = BridgedDiagnosticSeverity::BridgedError;
44- break ;
45-
46- case DiagnosticKind::Warning:
47- severity = BridgedDiagnosticSeverity::BridgedWarning;
48- break ;
49-
50- case DiagnosticKind::Remark:
51- severity = BridgedDiagnosticSeverity::BridgedRemark;
52- break ;
53-
54- case DiagnosticKind::Note:
55- severity = BridgedDiagnosticSeverity::BridgedNote;
56- break ;
57- }
56+ BridgedDiagnosticSeverity severity = bridgeDiagnosticSeverity (info.Kind );
5857
5958 // Map the highlight ranges.
6059 SmallVector<BridgedCharSourceRange, 2 > highlightRanges;
@@ -87,6 +86,39 @@ static void addQueueDiagnostic(void *queuedDiagnostics,
8786 }
8887}
8988
89+ void DiagnosticBridge::emitDiagnosticWithoutLocation (
90+ const DiagnosticInfo &info, llvm::raw_ostream &out, bool forceColors) {
91+ ASSERT (queuedDiagnostics == nullptr );
92+
93+ // If we didn't have per-frontend state before, create it now.
94+ if (!perFrontendState) {
95+ perFrontendState = swift_ASTGen_createPerFrontendDiagnosticState ();
96+ }
97+
98+ llvm::SmallString<256 > text;
99+ {
100+ llvm::raw_svector_ostream out (text);
101+ DiagnosticEngine::formatDiagnosticText (out, info.FormatString ,
102+ info.FormatArgs );
103+ }
104+
105+ BridgedDiagnosticSeverity severity = bridgeDiagnosticSeverity (info.Kind );
106+
107+ BridgedStringRef bridgedRenderedString{nullptr , 0 };
108+ swift_ASTGen_renderSingleDiagnostic (
109+ perFrontendState, text.str (), severity, info.Category ,
110+ llvm::StringRef (info.CategoryDocumentationURL ), forceColors ? 1 : 0 ,
111+ &bridgedRenderedString);
112+
113+ auto renderedString = bridgedRenderedString.unbridged ();
114+ if (renderedString.data ()) {
115+ out << " <unknown>:0: " ;
116+ out.write (renderedString.data (), renderedString.size ());
117+ swift_ASTGen_freeBridgedString (renderedString);
118+ out << " \n " ;
119+ }
120+ }
121+
90122void DiagnosticBridge::enqueueDiagnostic (SourceManager &SM,
91123 const DiagnosticInfo &Info,
92124 unsigned innermostBufferID) {
0 commit comments