@@ -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 = (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 ((int )R[0 ], Blob, (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 ((int )R[0 ], Blob, (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);
@@ -280,13 +284,13 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
280
284
}
281
285
}
282
286
283
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
284
- TypeInfo *I) {
287
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
288
+ llvm::StringRef Blob, TypeInfo *I) {
285
289
return llvm::Error::success ();
286
290
}
287
291
288
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
289
- FieldTypeInfo *I) {
292
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
293
+ llvm::StringRef Blob, FieldTypeInfo *I) {
290
294
switch (ID) {
291
295
case FIELD_TYPE_NAME:
292
296
return decodeRecord (R, I->Name , Blob);
@@ -298,8 +302,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
298
302
}
299
303
}
300
304
301
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
302
- MemberTypeInfo *I) {
305
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
306
+ llvm::StringRef Blob, MemberTypeInfo *I) {
303
307
switch (ID) {
304
308
case MEMBER_TYPE_NAME:
305
309
return decodeRecord (R, I->Name , Blob);
@@ -311,8 +315,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
311
315
}
312
316
}
313
317
314
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
315
- CommentInfo *I) {
318
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
319
+ llvm::StringRef Blob, CommentInfo *I) {
316
320
switch (ID) {
317
321
case COMMENT_KIND:
318
322
return decodeRecord (R, I->Kind , Blob);
@@ -342,8 +346,8 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
342
346
}
343
347
}
344
348
345
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
346
- Reference *I, FieldId &F) {
349
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
350
+ llvm::StringRef Blob, Reference *I, FieldId &F) {
347
351
switch (ID) {
348
352
case REFERENCE_USR:
349
353
return decodeRecord (R, I->USR , Blob);
@@ -363,30 +367,31 @@ llvm::Error parseRecord(const Record &R, unsigned ID, llvm::StringRef Blob,
363
367
}
364
368
}
365
369
366
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
367
- TemplateInfo *I) {
370
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
371
+ llvm::StringRef Blob, TemplateInfo *I) {
368
372
// Currently there are no child records of TemplateInfo (only child blocks).
369
373
return llvm::createStringError (llvm::inconvertibleErrorCode (),
370
374
" invalid field for TemplateParamInfo" );
371
375
}
372
376
373
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob,
374
- TemplateSpecializationInfo *I) {
377
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
378
+ llvm::StringRef Blob,
379
+ TemplateSpecializationInfo *I) {
375
380
if (ID == TEMPLATE_SPECIALIZATION_OF)
376
381
return decodeRecord (R, I->SpecializationOf , Blob);
377
382
return llvm::createStringError (llvm::inconvertibleErrorCode (),
378
383
" invalid field for TemplateParamInfo" );
379
384
}
380
385
381
- llvm::Error parseRecord (const Record &R, unsigned ID, llvm::StringRef Blob ,
382
- TemplateParamInfo *I) {
386
+ static llvm::Error parseRecord (const Record &R, unsigned ID,
387
+ llvm::StringRef Blob, TemplateParamInfo *I) {
383
388
if (ID == TEMPLATE_PARAM_CONTENTS)
384
389
return decodeRecord (R, I->Contents , Blob);
385
390
return llvm::createStringError (llvm::inconvertibleErrorCode (),
386
391
" invalid field for TemplateParamInfo" );
387
392
}
388
393
389
- template <typename T> llvm::Expected<CommentInfo *> getCommentInfo (T I) {
394
+ template <typename T> static llvm::Expected<CommentInfo *> getCommentInfo (T I) {
390
395
return llvm::createStringError (llvm::inconvertibleErrorCode (),
391
396
" invalid type cannot contain CommentInfo" );
392
397
}
@@ -433,7 +438,7 @@ llvm::Expected<CommentInfo *> getCommentInfo(std::unique_ptr<CommentInfo> &I) {
433
438
// the parent block to set it. The template specializations define what to do
434
439
// for each supported parent block.
435
440
template <typename T, typename TTypeInfo>
436
- llvm::Error addTypeInfo (T I, TTypeInfo &&TI) {
441
+ static llvm::Error addTypeInfo (T I, TTypeInfo &&TI) {
437
442
return llvm::createStringError (llvm::inconvertibleErrorCode (),
438
443
" invalid type cannot contain TypeInfo" );
439
444
}
@@ -468,7 +473,8 @@ template <> llvm::Error addTypeInfo(TypedefInfo *I, TypeInfo &&T) {
468
473
return llvm::Error::success ();
469
474
}
470
475
471
- template <typename T> llvm::Error addReference (T I, Reference &&R, FieldId F) {
476
+ template <typename T>
477
+ static llvm::Error addReference (T I, Reference &&R, FieldId F) {
472
478
return llvm::createStringError (llvm::inconvertibleErrorCode (),
473
479
" invalid type cannot contain Reference" );
474
480
}
@@ -584,7 +590,7 @@ template <> llvm::Error addReference(RecordInfo *I, Reference &&R, FieldId F) {
584
590
}
585
591
586
592
template <typename T, typename ChildInfoType>
587
- void addChild (T I, ChildInfoType &&R) {
593
+ static void addChild (T I, ChildInfoType &&R) {
588
594
llvm::errs () << " invalid child type for info" ;
589
595
exit (1 );
590
596
}
@@ -625,7 +631,7 @@ template <> void addChild(BaseRecordInfo *I, FunctionInfo &&R) {
625
631
// TemplateParam children. These go into either a TemplateInfo (for template
626
632
// parameters) or TemplateSpecializationInfo (for the specialization's
627
633
// parameters).
628
- template <typename T> void addTemplateParam (T I, TemplateParamInfo &&P) {
634
+ template <typename T> static void addTemplateParam (T I, TemplateParamInfo &&P) {
629
635
llvm::errs () << " invalid container for template parameter" ;
630
636
exit (1 );
631
637
}
@@ -638,7 +644,7 @@ void addTemplateParam(TemplateSpecializationInfo *I, TemplateParamInfo &&P) {
638
644
}
639
645
640
646
// Template info. These apply to either records or functions.
641
- template <typename T> void addTemplate (T I, TemplateInfo &&P) {
647
+ template <typename T> static void addTemplate (T I, TemplateInfo &&P) {
642
648
llvm::errs () << " invalid container for template info" ;
643
649
exit (1 );
644
650
}
@@ -651,7 +657,7 @@ template <> void addTemplate(FunctionInfo *I, TemplateInfo &&P) {
651
657
652
658
// Template specializations go only into template records.
653
659
template <typename T>
654
- void addTemplateSpecialization (T I, TemplateSpecializationInfo &&TSI) {
660
+ static void addTemplateSpecialization (T I, TemplateSpecializationInfo &&TSI) {
655
661
llvm::errs () << " invalid container for template specialization info" ;
656
662
exit (1 );
657
663
}
0 commit comments