| ... | ... | @@ -604,6 +604,7 @@ const DocData = struct { |
| 604 | 604 | pubDecls: []usize = &.{}, // index into decls |
| 605 | 605 | field_types: []Expr = &.{}, // (use src->fields to find names) |
| 606 | 606 | field_defaults: []?Expr = &.{}, // default values is specified |
| 607 | backing_int: ?Expr = null, // backing integer if specified |
| 607 | 608 | is_tuple: bool, |
| 608 | 609 | line_number: usize, |
| 609 | 610 | parent_container: ?usize, // index into `types` |
| ... | ... | @@ -2854,13 +2855,21 @@ fn walkInstruction( |
| 2854 | 2855 | break :blk fields_len; |
| 2855 | 2856 | } else 0; |
| 2856 | 2857 | |
| 2857 | | // TODO: Expose explicit backing integer types in some way. |
| 2858 | var backing_int: ?DocData.Expr = null; |
| 2858 | 2859 | if (small.has_backing_int) { |
| 2859 | 2860 | const backing_int_body_len = file.zir.extra[extra_index]; |
| 2860 | 2861 | extra_index += 1; // backing_int_body_len |
| 2861 | 2862 | if (backing_int_body_len == 0) { |
| 2863 | const backing_int_ref = @intToEnum(Ref, file.zir.extra[extra_index]); |
| 2864 | const backing_int_res = try self.walkRef(file, &scope, src_info, backing_int_ref, true); |
| 2865 | backing_int = backing_int_res.expr; |
| 2862 | 2866 | extra_index += 1; // backing_int_ref |
| 2863 | 2867 | } else { |
| 2868 | const backing_int_body = file.zir.extra[extra_index..][0..backing_int_body_len]; |
| 2869 | const break_inst = backing_int_body[backing_int_body.len - 1]; |
| 2870 | const operand = data[break_inst].@"break".operand; |
| 2871 | const backing_int_res = try self.walkRef(file, &scope, src_info, operand, true); |
| 2872 | backing_int = backing_int_res.expr; |
| 2864 | 2873 | extra_index += backing_int_body_len; // backing_int_body_inst |
| 2865 | 2874 | } |
| 2866 | 2875 | } |
| ... | ... | @@ -2903,6 +2912,7 @@ fn walkInstruction( |
| 2903 | 2912 | .field_types = field_type_refs.items, |
| 2904 | 2913 | .field_defaults = field_default_refs.items, |
| 2905 | 2914 | .is_tuple = small.is_tuple, |
| 2915 | .backing_int = backing_int, |
| 2906 | 2916 | .line_number = self.ast_nodes.items[self_ast_node_index].line, |
| 2907 | 2917 | .parent_container = parent_scope.enclosing_type, |
| 2908 | 2918 | }, |