@@ -41,6 +41,7 @@ class CXLoadedDiagnosticSetImpl : public CXDiagnosticSetImpl {
41
41
42
42
llvm::BumpPtrAllocator Alloc;
43
43
Strings Categories;
44
+ Strings CategoryURLs;
44
45
Strings WarningFlags;
45
46
Strings FileNames;
46
47
@@ -126,6 +127,10 @@ CXString CXLoadedDiagnostic::getCategoryText() const {
126
127
return cxstring::createDup (CategoryText);
127
128
}
128
129
130
+ CXString CXLoadedDiagnostic::getCategoryURL () const {
131
+ return cxstring::createDup (CategoryURL);
132
+ }
133
+
129
134
unsigned CXLoadedDiagnostic::getNumRanges () const {
130
135
return Ranges.size ();
131
136
}
@@ -215,7 +220,8 @@ class DiagLoader : serialized_diags::SerializedDiagnosticReader {
215
220
std::error_code visitStartOfDiagnostic () override ;
216
221
std::error_code visitEndOfDiagnostic () override ;
217
222
218
- std::error_code visitCategoryRecord (unsigned ID, StringRef Name) override ;
223
+ std::error_code visitCategoryRecord (unsigned ID, StringRef Name,
224
+ StringRef URL) override ;
219
225
220
226
std::error_code visitDiagFlagRecord (unsigned ID, StringRef Name) override ;
221
227
@@ -345,11 +351,13 @@ std::error_code DiagLoader::visitEndOfDiagnostic() {
345
351
return std::error_code ();
346
352
}
347
353
348
- std::error_code DiagLoader::visitCategoryRecord (unsigned ID, StringRef Name) {
354
+ std::error_code DiagLoader::visitCategoryRecord (unsigned ID, StringRef Name,
355
+ StringRef URL) {
349
356
// FIXME: Why do we care about long strings?
350
357
if (Name.size () > 65536 )
351
358
return reportInvalidFile (" Out-of-bounds string in category" );
352
359
TopDiags->Categories [ID] = TopDiags->copyString (Name);
360
+ TopDiags->CategoryURLs [ID] = TopDiags->copyString (URL);
353
361
return std::error_code ();
354
362
}
355
363
@@ -431,6 +439,7 @@ std::error_code DiagLoader::visitDiagnosticRecord(
431
439
D.category = Category;
432
440
D.DiagOption = Flag ? TopDiags->WarningFlags [Flag] : " " ;
433
441
D.CategoryText = Category ? TopDiags->Categories [Category] : " " ;
442
+ D.CategoryURL = Category ? TopDiags->CategoryURLs [Category] : " " ;
434
443
D.Spelling = TopDiags->copyString (Message);
435
444
return std::error_code ();
436
445
}
0 commit comments