@@ -1239,8 +1239,12 @@ class log : public data<log,ptr> {
1239
1239
log (log &other,
1240
1240
const uint8_t *in_sp,
1241
1241
const type_param *in_params,
1242
- const rust_shape_tables *in_tables)
1243
- : data<log,ptr>(other.task, in_sp, in_params, in_tables, other.dp),
1242
+ const rust_shape_tables *in_tables = NULL )
1243
+ : data<log,ptr>(other.task,
1244
+ in_sp,
1245
+ in_params,
1246
+ in_tables ? in_tables : other.tables,
1247
+ other.dp),
1244
1248
out (other.out) {}
1245
1249
1246
1250
log (log &other, ptr in_dp)
@@ -1259,12 +1263,15 @@ class log : public data<log,ptr> {
1259
1263
1260
1264
void walk_tag (bool align, tag_info &tinfo, uint32_t tag_variant) {
1261
1265
out << " tag" << tag_variant;
1262
- // TODO: Print insides.
1266
+ data<log,ptr>:: walk_variant (align, tinfo, tag_variant);
1263
1267
}
1264
1268
1265
1269
void walk_subcontext (bool align, log &sub) { sub.walk (align); }
1266
1270
1267
1271
void walk_vec (bool align, bool is_pod, const std::pair<ptr,ptr> &data);
1272
+ void walk_variant (bool align, tag_info &tinfo, uint32_t variant_id,
1273
+ const std::pair<const uint8_t *,const uint8_t *>
1274
+ variant_ptr_and_end);
1268
1275
1269
1276
template <typename T>
1270
1277
void walk_number () { out << get_dp<T>(dp); }
@@ -1323,6 +1330,27 @@ log::walk_vec(bool align, bool is_pod, const std::pair<ptr,ptr> &data) {
1323
1330
out << " ]" ;
1324
1331
}
1325
1332
1333
+ void
1334
+ log::walk_variant (bool align, tag_info &tinfo, uint32_t variant_id,
1335
+ const std::pair<const uint8_t *,const uint8_t *>
1336
+ variant_ptr_and_end) {
1337
+ log sub (*this , variant_ptr_and_end.first , tinfo.params );
1338
+ const uint8_t *variant_end = variant_ptr_and_end.second ;
1339
+
1340
+ bool first = true ;
1341
+ while (sub.sp < variant_end) {
1342
+ out << (first ? " (" : " , " );
1343
+
1344
+ sub.walk (align);
1345
+
1346
+ align = true ;
1347
+ first = false ;
1348
+ }
1349
+
1350
+ if (!first)
1351
+ out << " )" ;
1352
+ }
1353
+
1326
1354
} // end namespace shape
1327
1355
1328
1356
extern " C" void
0 commit comments