| ... | @@ -1390,14 +1390,51 @@ fn renderBuiltinCall( | ... | @@ -1390,14 +1390,51 @@ fn renderBuiltinCall( |
| 1390 | ) Error!void { | 1390 | ) Error!void { |
| 1391 | const token_tags = tree.tokens.items(.tag); | 1391 | const token_tags = tree.tokens.items(.tag); |
| 1392 | | 1392 | |
| 1393 | // TODO remove before release of 0.11.0 | 1393 | // TODO remove before release of 0.12.0 |
| 1394 | const slice = tree.tokenSlice(builtin_token); | 1394 | const slice = tree.tokenSlice(builtin_token); |
| | 1395 | const rewrite_two_param_cast = params.len == 2 and for ([_][]const u8{ |
| | 1396 | "@bitCast", |
| | 1397 | "@errSetCast", |
| | 1398 | "@floatCast", |
| | 1399 | "@intCast", |
| | 1400 | "@ptrCast", |
| | 1401 | "@intFromFloat", |
| | 1402 | "@floatToInt", |
| | 1403 | "@enumFromInt", |
| | 1404 | "@intToEnum", |
| | 1405 | "@floatFromInt", |
| | 1406 | "@intToFloat", |
| | 1407 | "@ptrFromInt", |
| | 1408 | "@intToPtr", |
| | 1409 | "@truncate", |
| | 1410 | }) |name| { |
| | 1411 | if (mem.eql(u8, slice, name)) break true; |
| | 1412 | } else false; |
| | 1413 | |
| | 1414 | if (rewrite_two_param_cast) { |
| | 1415 | const after_last_param_token = tree.lastToken(params[1]) + 1; |
| | 1416 | if (token_tags[after_last_param_token] != .comma) { |
| | 1417 | // Render all on one line, no trailing comma. |
| | 1418 | try ais.writer().writeAll("@as"); |
| | 1419 | try renderToken(ais, tree, builtin_token + 1, .none); // ( |
| | 1420 | try renderExpression(gpa, ais, tree, params[0], .comma_space); |
| | 1421 | } else { |
| | 1422 | // Render one param per line. |
| | 1423 | try ais.writer().writeAll("@as"); |
| | 1424 | ais.pushIndent(); |
| | 1425 | try renderToken(ais, tree, builtin_token + 1, .newline); // ( |
| | 1426 | try renderExpression(gpa, ais, tree, params[0], .comma); |
| | 1427 | } |
| | 1428 | } |
| | 1429 | // Corresponding logic below builtin name rewrite below |
| | 1430 | |
| | 1431 | // TODO remove before release of 0.11.0 |
| 1395 | if (mem.eql(u8, slice, "@maximum")) { | 1432 | if (mem.eql(u8, slice, "@maximum")) { |
| 1396 | try ais.writer().writeAll("@max"); | 1433 | try ais.writer().writeAll("@max"); |
| 1397 | } else if (mem.eql(u8, slice, "@minimum")) { | 1434 | } else if (mem.eql(u8, slice, "@minimum")) { |
| 1398 | try ais.writer().writeAll("@min"); | 1435 | try ais.writer().writeAll("@min"); |
| 1399 | } | 1436 | } |
| 1400 | // | 1437 | // TODO remove before release of 0.12.0 |
| 1401 | else if (mem.eql(u8, slice, "@boolToInt")) { | 1438 | else if (mem.eql(u8, slice, "@boolToInt")) { |
| 1402 | try ais.writer().writeAll("@intFromBool"); | 1439 | try ais.writer().writeAll("@intFromBool"); |
| 1403 | } else if (mem.eql(u8, slice, "@enumToInt")) { | 1440 | } else if (mem.eql(u8, slice, "@enumToInt")) { |
| ... | @@ -1420,6 +1457,23 @@ fn renderBuiltinCall( | ... | @@ -1420,6 +1457,23 @@ fn renderBuiltinCall( |
| 1420 | try renderToken(ais, tree, builtin_token, .none); // @name | 1457 | try renderToken(ais, tree, builtin_token, .none); // @name |
| 1421 | } | 1458 | } |
| 1422 | | 1459 | |
| | 1460 | if (rewrite_two_param_cast) { |
| | 1461 | // Matches with corresponding logic above builtin name rewrite |
| | 1462 | const after_last_param_token = tree.lastToken(params[1]) + 1; |
| | 1463 | try ais.writer().writeAll("("); |
| | 1464 | try renderExpression(gpa, ais, tree, params[1], .none); |
| | 1465 | try ais.writer().writeAll(")"); |
| | 1466 | if (token_tags[after_last_param_token] != .comma) { |
| | 1467 | // Render all on one line, no trailing comma. |
| | 1468 | return renderToken(ais, tree, after_last_param_token, space); // ) |
| | 1469 | } else { |
| | 1470 | // Render one param per line. |
| | 1471 | ais.popIndent(); |
| | 1472 | try renderToken(ais, tree, after_last_param_token, .newline); // , |
| | 1473 | return renderToken(ais, tree, after_last_param_token + 1, space); // ) |
| | 1474 | } |
| | 1475 | } |
| | 1476 | |
| 1423 | if (params.len == 0) { | 1477 | if (params.len == 0) { |
| 1424 | try renderToken(ais, tree, builtin_token + 1, .none); // ( | 1478 | try renderToken(ais, tree, builtin_token + 1, .none); // ( |
| 1425 | return renderToken(ais, tree, builtin_token + 2, space); // ) | 1479 | return renderToken(ais, tree, builtin_token + 2, space); // ) |