| ... | ... | @@ -146,7 +146,8 @@ pub fn print( |
| 146 | 146 | if (ty.zigTypeTag() == .Struct) { |
| 147 | 147 | try writer.writeAll(".{ "); |
| 148 | 148 | const struct_fields = ty.structFields(); |
| 149 | | const max_len = std.math.min(struct_fields.count(), max_aggregate_items); |
| 149 | const len = struct_fields.count(); |
| 150 | const max_len = std.math.min(len, max_aggregate_items); |
| 150 | 151 | |
| 151 | 152 | const field_names = struct_fields.keys(); |
| 152 | 153 | const fields = struct_fields.values(); |
| ... | ... | @@ -160,11 +161,15 @@ pub fn print( |
| 160 | 161 | .val = vals[i], |
| 161 | 162 | }, writer, level - 1, mod); |
| 162 | 163 | } |
| 164 | if (len > max_aggregate_items) { |
| 165 | try writer.writeAll(", ..."); |
| 166 | } |
| 163 | 167 | return writer.writeAll(" }"); |
| 164 | 168 | } else { |
| 165 | 169 | try writer.writeAll(".{ "); |
| 166 | 170 | const elem_ty = ty.elemType2(); |
| 167 | | const max_len = std.math.min(ty.arrayLen(), max_aggregate_items); |
| 171 | const len = ty.arrayLen(); |
| 172 | const max_len = std.math.min(len, max_aggregate_items); |
| 168 | 173 | |
| 169 | 174 | var i: u32 = 0; |
| 170 | 175 | while (i < max_len) : (i += 1) { |
| ... | ... | @@ -174,6 +179,9 @@ pub fn print( |
| 174 | 179 | .val = vals[i], |
| 175 | 180 | }, writer, level - 1, mod); |
| 176 | 181 | } |
| 182 | if (len > max_aggregate_items) { |
| 183 | try writer.writeAll(", ..."); |
| 184 | } |
| 177 | 185 | return writer.writeAll(" }"); |
| 178 | 186 | } |
| 179 | 187 | }, |
| ... | ... | @@ -292,10 +300,15 @@ pub fn print( |
| 292 | 300 | .ty = ty.elemType2(), |
| 293 | 301 | .val = val.castTag(.repeated).?.data, |
| 294 | 302 | }; |
| 295 | | while (i < max_aggregate_items) : (i += 1) { |
| 303 | const len = ty.arrayLen(); |
| 304 | const max_len = std.math.min(len, max_aggregate_items); |
| 305 | while (i < max_len) : (i += 1) { |
| 296 | 306 | if (i != 0) try writer.writeAll(", "); |
| 297 | 307 | try print(elem_tv, writer, level - 1, mod); |
| 298 | 308 | } |
| 309 | if (len > max_aggregate_items) { |
| 310 | try writer.writeAll(", ..."); |
| 311 | } |
| 299 | 312 | return writer.writeAll(" }"); |
| 300 | 313 | }, |
| 301 | 314 | .empty_array_sentinel => { |
| ... | ... | @@ -309,7 +322,27 @@ pub fn print( |
| 309 | 322 | }, writer, level - 1, mod); |
| 310 | 323 | return writer.writeAll(" }"); |
| 311 | 324 | }, |
| 312 | | .slice => return writer.writeAll("(slice)"), |
| 325 | .slice => { |
| 326 | const payload = val.castTag(.slice).?.data; |
| 327 | try writer.writeAll(".{ "); |
| 328 | const elem_ty = ty.elemType2(); |
| 329 | const len = payload.len.toUnsignedInt(target); |
| 330 | const max_len = std.math.min(len, max_aggregate_items); |
| 331 | |
| 332 | var i: u32 = 0; |
| 333 | while (i < max_len) : (i += 1) { |
| 334 | if (i != 0) try writer.writeAll(", "); |
| 335 | var buf: Value.ElemValueBuffer = undefined; |
| 336 | try print(.{ |
| 337 | .ty = elem_ty, |
| 338 | .val = payload.ptr.elemValueBuffer(mod, i, &buf), |
| 339 | }, writer, level - 1, mod); |
| 340 | } |
| 341 | if (len > max_aggregate_items) { |
| 342 | try writer.writeAll(", ..."); |
| 343 | } |
| 344 | return writer.writeAll(" }"); |
| 345 | }, |
| 313 | 346 | .float_16 => return writer.print("{}", .{val.castTag(.float_16).?.data}), |
| 314 | 347 | .float_32 => return writer.print("{}", .{val.castTag(.float_32).?.data}), |
| 315 | 348 | .float_64 => return writer.print("{}", .{val.castTag(.float_64).?.data}), |