@@ -18,14 +18,15 @@ namespace doc {
18
18
using Record = llvm::SmallVector<uint64_t , 1024 >;
19
19
20
20
// This implements decode for SmallString.
21
- llvm::Error decodeRecord (const Record &R, llvm::SmallVectorImpl<char > &Field,
22
- llvm::StringRef Blob) {
21
+ static llvm::Error decodeRecord (const Record &R,
22
+ llvm::SmallVectorImpl<char > &Field,
23
+ llvm::StringRef Blob) {
23
24
Field.assign (Blob.begin (), Blob.end ());
24
25
return llvm::Error::success ();
25
26
}
26
27
27
- llvm::Error decodeRecord (const Record &R, SymbolID &Field,
28
- llvm::StringRef Blob) {
28
+ static llvm::Error decodeRecord (const Record &R, SymbolID &Field,
29
+ llvm::StringRef Blob) {
29
30
if (R[0 ] != BitCodeConstants::USRHashSize)
30
31
return llvm::createStringError (llvm::inconvertibleErrorCode (),
31
32
" incorrect USR size" );
@@ -37,21 +38,23 @@ llvm::Error decodeRecord(const Record &R, SymbolID &Field,
37
38
return llvm::Error::success ();
38
39
}
39
40
40
- llvm::Error decodeRecord (const Record &R, bool &Field, llvm::StringRef Blob) {
41
+ static llvm::Error decodeRecord (const Record &R, bool &Field,
42
+ llvm::StringRef Blob) {
41
43
Field = R[0 ] != 0 ;
42
44
return llvm::Error::success ();
43
45
}
44
46
45
- llvm::Error decodeRecord (const Record &R, int &Field, llvm::StringRef Blob) {
47
+ static llvm::Error decodeRecord (const Record &R, int &Field,
48
+ llvm::StringRef Blob) {
46
49
if (R[0 ] > INT_MAX)
47
50
return llvm::createStringError (llvm::inconvertibleErrorCode (),
48
51
" integer too large to parse" );
49
52
Field = static_cast <int >(R[0 ]);
50
53
return llvm::Error::success ();
51
54
}
52
55
53
- llvm::Error decodeRecord (const Record &R, AccessSpecifier &Field,
54
- llvm::StringRef Blob) {
56
+ static llvm::Error decodeRecord (const Record &R, AccessSpecifier &Field,
57
+ llvm::StringRef Blob) {
55
58
switch (R[0 ]) {
56
59
case AS_public:
57
60
case AS_private:
@@ -65,8 +68,8 @@ llvm::Error decodeRecord(const Record &R, AccessSpecifier &Field,
65
68
}
66
69
}
67
70
68
- llvm::Error decodeRecord (const Record &R, TagTypeKind &Field,
69
- llvm::StringRef Blob) {
71
+ static llvm::Error decodeRecord (const Record &R, TagTypeKind &Field,
72
+ llvm::StringRef Blob) {
70
73
switch (static_cast <TagTypeKind>(R[0 ])) {
71
74
case TagTypeKind::Struct:
72
75
case TagTypeKind::Interface:
@@ -80,17 +83,17 @@ llvm::Error decodeRecord(const Record &R, TagTypeKind &Field,
80
83
" invalid value for TagTypeKind" );
81
84
}
82
85
83
- llvm::Error decodeRecord (const Record &R, std::optional<Location> &Field,
84
- llvm::StringRef Blob) {
86
+ static llvm::Error decodeRecord (const Record &R, std::optional<Location> &Field,
87
+ llvm::StringRef Blob) {
85
88
if (R[0 ] > INT_MAX)
86
89
return llvm::createStringError (llvm::inconvertibleErrorCode (),
87
90
" integer too large to parse" );
88
91
Field.emplace (static_cast <int >(R[0 ]), Blob, static_cast <bool >(R[1 ]));
89
92
return llvm::Error::success ();
90
93
}
91
94
92
- llvm::Error decodeRecord (const Record &R, InfoType &Field,
93
- llvm::StringRef Blob) {
95
+ static llvm::Error decodeRecord (const Record &R, InfoType &Field,
96
+ llvm::StringRef Blob) {
94
97
switch (auto IT = static_cast <InfoType>(R[0 ])) {
95
98
case InfoType::IT_namespace:
96
99
case InfoType::IT_record:
@@ -105,8 +108,8 @@ llvm::Error decodeRecord(const Record &R, InfoType &Field,
105
108
" invalid value for InfoType" );
106
109
}
107
110
108
- llvm::Error decodeRecord (const Record &R, FieldId &Field,
109
- llvm::StringRef Blob) {
111
+ static llvm::Error decodeRecord (const Record &R, FieldId &Field,
112
+ llvm::StringRef Blob) {
110
113
switch (auto F = static_cast <FieldId>(R[0 ])) {
111
114
case FieldId::F_namespace:
112
115
case FieldId::F_parent:
@@ -122,33 +125,34 @@ llvm::Error decodeRecord(const Record &R, FieldId &Field,
122
125
" invalid value for FieldId" );
123
126
}
124
127
125
- llvm::Error decodeRecord (const Record &R,
126
- llvm::SmallVectorImpl<llvm::SmallString<16 >> &Field,
127
- llvm::StringRef Blob) {
128
+ static llvm::Error
129
+ decodeRecord (const Record &R,
130
+ llvm::SmallVectorImpl<llvm::SmallString<16 >> &Field,
131
+ llvm::StringRef Blob) {
128
132
Field.push_back (Blob);
129
133
return llvm::Error::success ();
130
134
}
131
135
132
- llvm::Error decodeRecord (const Record &R,
133
- llvm::SmallVectorImpl<Location> &Field,
134
- llvm::StringRef Blob) {
136
+ static llvm::Error decodeRecord (const Record &R,
137
+ llvm::SmallVectorImpl<Location> &Field,
138
+ llvm::StringRef Blob) {
135
139
if (R[0 ] > INT_MAX)
136
140
return llvm::createStringError (llvm::inconvertibleErrorCode (),
137
141
" integer too large to parse" );
138
142
Field.emplace_back (static_cast <int >(R[0 ]), Blob, static_cast <bool >(R[1 ]));
139
143
return llvm::Error::success ();
140
144
}
141
145
142
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
143
- const unsigned VersionNo) {
146
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
147
+ llvm::StringRef Blob, const unsigned VersionNo) {
144
148
if (ID == VERSION && R[0 ] == VersionNo)
145
149
return llvm::Error::success ();
146
150
return llvm::createStringError (llvm::inconvertibleErrorCode (),
147
151
" mismatched bitcode version number" );
148
152
}
149
153
150
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
151
- NamespaceInfo *I) {
154
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
155
+ llvm::StringRef Blob, NamespaceInfo *I) {
152
156
switch (ID) {
153
157
case NAMESPACE_USR:
154
158
return decodeRecord (R, I->USR , Blob);
@@ -162,8 +166,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
162
166
}
163
167
}
164
168
165
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
166
- RecordInfo *I) {
169
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
170
+ llvm::StringRef Blob, RecordInfo *I) {
167
171
switch (ID) {
168
172
case RECORD_USR:
169
173
return decodeRecord (R, I->USR , Blob);
@@ -185,8 +189,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
185
189
}
186
190
}
187
191
188
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
189
- BaseRecordInfo *I) {
192
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
193
+ llvm::StringRef Blob, BaseRecordInfo *I) {
190
194
switch (ID) {
191
195
case BASE_RECORD_USR:
192
196
return decodeRecord (R, I->USR , Blob);
@@ -208,8 +212,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
208
212
}
209
213
}
210
214
211
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
212
- EnumInfo *I) {
215
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
216
+ llvm::StringRef Blob, EnumInfo *I) {
213
217
switch (ID) {
214
218
case ENUM_USR:
215
219
return decodeRecord (R, I->USR , Blob);
@@ -227,8 +231,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
227
231
}
228
232
}
229
233
230
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
231
- TypedefInfo *I) {
234
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
235
+ llvm::StringRef Blob, TypedefInfo *I) {
232
236
switch (ID) {
233
237
case TYPEDEF_USR:
234
238
return decodeRecord (R, I->USR , Blob);
@@ -244,8 +248,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
244
248
}
245
249
}
246
250
247
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
248
- EnumValueInfo *I) {
251
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
252
+ llvm::StringRef Blob, EnumValueInfo *I) {
249
253
switch (ID) {
250
254
case ENUM_VALUE_NAME:
251
255
return decodeRecord (R, I->Name , Blob);
@@ -259,8 +263,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
259
263
}
260
264
}
261
265
262
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
263
- FunctionInfo *I) {
266
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
267
+ llvm::StringRef Blob, FunctionInfo *I) {
264
268
switch (ID) {
265
269
case FUNCTION_USR:
266
270
return decodeRecord (R, I->USR , Blob);
@@ -282,13 +286,13 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
282
286
}
283
287
}
284
288
285
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
286
- TypeInfo *I) {
289
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
290
+ llvm::StringRef Blob, TypeInfo *I) {
287
291
return llvm::Error::success ();
288
292
}
289
293
290
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
291
- FieldTypeInfo *I) {
294
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
295
+ llvm::StringRef Blob, FieldTypeInfo *I) {
292
296
switch (ID) {
293
297
case FIELD_TYPE_NAME:
294
298
return decodeRecord (R, I->Name , Blob);
@@ -300,8 +304,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
300
304
}
301
305
}
302
306
303
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
304
- MemberTypeInfo *I) {
307
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
308
+ llvm::StringRef Blob, MemberTypeInfo *I) {
305
309
switch (ID) {
306
310
case MEMBER_TYPE_NAME:
307
311
return decodeRecord (R, I->Name , Blob);
@@ -315,8 +319,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
315
319
}
316
320
}
317
321
318
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
319
- CommentInfo *I) {
322
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
323
+ llvm::StringRef Blob, CommentInfo *I) {
320
324
switch (ID) {
321
325
case COMMENT_KIND:
322
326
return decodeRecord (R, I->Kind , Blob);
@@ -346,8 +350,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
346
350
}
347
351
}
348
352
349
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
350
- Reference *I, FieldId &F) {
353
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
354
+ llvm::StringRef Blob, Reference *I, FieldId &F) {
351
355
switch (ID) {
352
356
case REFERENCE_USR:
353
357
return decodeRecord (R, I->USR , Blob);
@@ -367,30 +371,31 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
367
371
}
368
372
}
369
373
370
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
371
- TemplateInfo *I) {
374
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
375
+ llvm::StringRef Blob, TemplateInfo *I) {
372
376
// Currently there are no child records of TemplateInfo (only child blocks).
373
377
return llvm::createStringError (llvm::inconvertibleErrorCode (),
374
378
" invalid field for TemplateParamInfo" );
375
379
}
376
380
377
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob,
378
- TemplateSpecializationInfo *I) {
381
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
382
+ llvm::StringRef Blob,
383
+ TemplateSpecializationInfo *I) {
379
384
if (ID == TEMPLATE_SPECIALIZATION_OF)
380
385
return decodeRecord (R, I->SpecializationOf , Blob);
381
386
return llvm::createStringError (llvm::inconvertibleErrorCode (),
382
387
" invalid field for TemplateParamInfo" );
383
388
}
384
389
385
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
386
- TemplateParamInfo *I) {
390
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
391
+ llvm::StringRef Blob, TemplateParamInfo *I) {
387
392
if (ID == TEMPLATE_PARAM_CONTENTS)
388
393
return decodeRecord (R, I->Contents , Blob);
389
394
return llvm::createStringError (llvm::inconvertibleErrorCode (),
390
395
" invalid field for TemplateParamInfo" );
391
396
}
392
397
393
- template <typename T> llvm::Expected<CommentInfo *> getCommentInfo (T I) {
398
+ template <typename T> static llvm::Expected<CommentInfo *> getCommentInfo (T I) {
394
399
return llvm::createStringError (llvm::inconvertibleErrorCode (),
395
400
" invalid type cannot contain CommentInfo" );
396
401
}
@@ -437,7 +442,7 @@ llvm::Expected<CommentInfo *> getCommentInfo(std::unique_ptr<CommentInfo> &I) {
437
442
// the parent block to set it. The template specializations define what to do
438
443
// for each supported parent block.
439
444
template <typename T, typename TTypeInfo>
440
- llvm::Error addTypeInfo (T I, TTypeInfo &&TI) {
445
+ static llvm::Error addTypeInfo (T I, TTypeInfo &&TI) {
441
446
return llvm::createStringError (llvm::inconvertibleErrorCode (),
442
447
" invalid type cannot contain TypeInfo" );
443
448
}
@@ -472,7 +477,8 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I, TypeInfo &&T) {
472
477
return llvm::Error::success ();
473
478
}
474
479
475
- template <typename T> llvm::Error addReference (T I, Reference &&R, FieldId F) {
480
+ template <typename T>
481
+ static llvm::Error addReference (T I, Reference &&R, FieldId F) {
476
482
return llvm::createStringError (llvm::inconvertibleErrorCode (),
477
483
" invalid type cannot contain Reference" );
478
484
}
@@ -588,7 +594,7 @@ template <> llvm::Error addReference(RecordInfo *I, Reference &&R, FieldId F) {
588
594
}
589
595
590
596
template <typename T, typename ChildInfoType>
591
- void addChild (T I, ChildInfoType &&R) {
597
+ static void addChild (T I, ChildInfoType &&R) {
592
598
llvm::errs () << " invalid child type for info" ;
593
599
exit (1 );
594
600
}
@@ -629,7 +635,7 @@ template <> void addChild(BaseRecordInfo *I, FunctionInfo &&R) {
629
635
// TemplateParam children. These go into either a TemplateInfo (for template
630
636
// parameters) or TemplateSpecializationInfo (for the specialization's
631
637
// parameters).
632
- template <typename T> void addTemplateParam (T I, TemplateParamInfo &&P) {
638
+ template <typename T> static void addTemplateParam (T I, TemplateParamInfo &&P) {
633
639
llvm::errs () << " invalid container for template parameter" ;
634
640
exit (1 );
635
641
}
@@ -642,7 +648,7 @@ void addTemplateParam(TemplateSpecializationInfo *I, TemplateParamInfo &&P) {
642
648
}
643
649
644
650
// Template info. These apply to either records or functions.
645
- template <typename T> void addTemplate (T I, TemplateInfo &&P) {
651
+ template <typename T> static void addTemplate (T I, TemplateInfo &&P) {
646
652
llvm::errs () << " invalid container for template info" ;
647
653
exit (1 );
648
654
}
@@ -655,7 +661,7 @@ template <> void addTemplate(FunctionInfo *I, TemplateInfo &&P) {
655
661
656
662
// Template specializations go only into template records.
657
663
template <typename T>
658
- void addTemplateSpecialization (T I, TemplateSpecializationInfo &&TSI) {
664
+ static void addTemplateSpecialization (T I, TemplateSpecializationInfo &&TSI) {
659
665
llvm::errs () << " invalid container for template specialization info" ;
660
666
exit (1 );
661
667
}
0 commit comments