@@ -253,17 +253,30 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
253
253
switch (prefix_op_node .op ) {
254
254
ast .Node .PrefixOp .Op .AddrOf = > | addr_of_info | {
255
255
try renderToken (tree , stream , prefix_op_node .op_token , indent , Space .None ); // &
256
- if (addr_of_info .align_expr ) | align_expr | {
256
+ if (addr_of_info .align_info ) | align_info | {
257
257
const align_token = tree .nextToken (prefix_op_node .op_token );
258
258
try renderToken (tree , stream , align_token , indent , Space .None ); // align
259
259
260
- const lparen_token = tree .prevToken (align_expr .firstToken ());
260
+ const lparen_token = tree .prevToken (align_info . node .firstToken ());
261
261
try renderToken (tree , stream , lparen_token , indent , Space .None ); // (
262
262
263
- try renderExpression (allocator , stream , tree , indent , align_expr , Space .None );
263
+ try renderExpression (allocator , stream , tree , indent , align_info . node , Space .None );
264
264
265
- const rparen_token = tree .nextToken (align_expr .lastToken ());
266
- try renderToken (tree , stream , rparen_token , indent , Space .Space ); // )
265
+ if (align_info .bit_range ) | bit_range | {
266
+ const colon1 = tree .prevToken (bit_range .start .firstToken ());
267
+ const colon2 = tree .prevToken (bit_range .end .firstToken ());
268
+
269
+ try renderToken (tree , stream , colon1 , indent , Space .None ); // :
270
+ try renderExpression (allocator , stream , tree , indent , bit_range .start , Space .None );
271
+ try renderToken (tree , stream , colon2 , indent , Space .None ); // :
272
+ try renderExpression (allocator , stream , tree , indent , bit_range .end , Space .None );
273
+
274
+ const rparen_token = tree .nextToken (bit_range .end .lastToken ());
275
+ try renderToken (tree , stream , rparen_token , indent , Space .Space ); // )
276
+ } else {
277
+ const rparen_token = tree .nextToken (align_info .node .lastToken ());
278
+ try renderToken (tree , stream , rparen_token , indent , Space .Space ); // )
279
+ }
267
280
}
268
281
if (addr_of_info .const_token ) | const_token | {
269
282
try renderToken (tree , stream , const_token , indent , Space .Space ); // const
@@ -272,21 +285,35 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
272
285
try renderToken (tree , stream , volatile_token , indent , Space .Space ); // volatile
273
286
}
274
287
},
288
+
275
289
ast .Node .PrefixOp .Op .SliceType = > | addr_of_info | {
276
290
try renderToken (tree , stream , prefix_op_node .op_token , indent , Space .None ); // [
277
291
try renderToken (tree , stream , tree .nextToken (prefix_op_node .op_token ), indent , Space .None ); // ]
278
292
279
- if (addr_of_info .align_expr ) | align_expr | {
293
+ if (addr_of_info .align_info ) | align_info | {
280
294
const align_token = tree .nextToken (prefix_op_node .op_token );
281
295
try renderToken (tree , stream , align_token , indent , Space .None ); // align
282
296
283
- const lparen_token = tree .prevToken (align_expr .firstToken ());
297
+ const lparen_token = tree .prevToken (align_info . node .firstToken ());
284
298
try renderToken (tree , stream , lparen_token , indent , Space .None ); // (
285
299
286
- try renderExpression (allocator , stream , tree , indent , align_expr , Space .None );
300
+ try renderExpression (allocator , stream , tree , indent , align_info . node , Space .None );
287
301
288
- const rparen_token = tree .nextToken (align_expr .lastToken ());
289
- try renderToken (tree , stream , rparen_token , indent , Space .Space ); // )
302
+ if (align_info .bit_range ) | bit_range | {
303
+ const colon1 = tree .prevToken (bit_range .start .firstToken ());
304
+ const colon2 = tree .prevToken (bit_range .end .firstToken ());
305
+
306
+ try renderToken (tree , stream , colon1 , indent , Space .None ); // :
307
+ try renderExpression (allocator , stream , tree , indent , bit_range .start , Space .None );
308
+ try renderToken (tree , stream , colon2 , indent , Space .None ); // :
309
+ try renderExpression (allocator , stream , tree , indent , bit_range .end , Space .None );
310
+
311
+ const rparen_token = tree .nextToken (bit_range .end .lastToken ());
312
+ try renderToken (tree , stream , rparen_token , indent , Space .Space ); // )
313
+ } else {
314
+ const rparen_token = tree .nextToken (align_info .node .lastToken ());
315
+ try renderToken (tree , stream , rparen_token , indent , Space .Space ); // )
316
+ }
290
317
}
291
318
if (addr_of_info .const_token ) | const_token | {
292
319
try renderToken (tree , stream , const_token , indent , Space .Space );
@@ -295,6 +322,7 @@ fn renderExpression(allocator: &mem.Allocator, stream: var, tree: &ast.Tree, ind
295
322
try renderToken (tree , stream , volatile_token , indent , Space .Space );
296
323
}
297
324
},
325
+
298
326
ast .Node .PrefixOp .Op .ArrayType = > | array_index | {
299
327
try renderToken (tree , stream , prefix_op_node .op_token , indent , Space .None ); // [
300
328
try renderExpression (allocator , stream , tree , indent , array_index , Space .None );
0 commit comments