mirror of
https://github.com/ziglang/zig.git
synced 2024-11-27 07:32:44 +00:00
fmt: add rewrite for cast builtin type parameters
This commit is contained in:
parent
be0c69957e
commit
283d650973
@ -1390,14 +1390,51 @@ fn renderBuiltinCall(
|
|||||||
) Error!void {
|
) Error!void {
|
||||||
const token_tags = tree.tokens.items(.tag);
|
const token_tags = tree.tokens.items(.tag);
|
||||||
|
|
||||||
// TODO remove before release of 0.11.0
|
// TODO remove before release of 0.12.0
|
||||||
const slice = tree.tokenSlice(builtin_token);
|
const slice = tree.tokenSlice(builtin_token);
|
||||||
|
const rewrite_two_param_cast = params.len == 2 and for ([_][]const u8{
|
||||||
|
"@bitCast",
|
||||||
|
"@errSetCast",
|
||||||
|
"@floatCast",
|
||||||
|
"@intCast",
|
||||||
|
"@ptrCast",
|
||||||
|
"@intFromFloat",
|
||||||
|
"@floatToInt",
|
||||||
|
"@enumFromInt",
|
||||||
|
"@intToEnum",
|
||||||
|
"@floatFromInt",
|
||||||
|
"@intToFloat",
|
||||||
|
"@ptrFromInt",
|
||||||
|
"@intToPtr",
|
||||||
|
"@truncate",
|
||||||
|
}) |name| {
|
||||||
|
if (mem.eql(u8, slice, name)) break true;
|
||||||
|
} else false;
|
||||||
|
|
||||||
|
if (rewrite_two_param_cast) {
|
||||||
|
const after_last_param_token = tree.lastToken(params[1]) + 1;
|
||||||
|
if (token_tags[after_last_param_token] != .comma) {
|
||||||
|
// Render all on one line, no trailing comma.
|
||||||
|
try ais.writer().writeAll("@as");
|
||||||
|
try renderToken(ais, tree, builtin_token + 1, .none); // (
|
||||||
|
try renderExpression(gpa, ais, tree, params[0], .comma_space);
|
||||||
|
} else {
|
||||||
|
// Render one param per line.
|
||||||
|
try ais.writer().writeAll("@as");
|
||||||
|
ais.pushIndent();
|
||||||
|
try renderToken(ais, tree, builtin_token + 1, .newline); // (
|
||||||
|
try renderExpression(gpa, ais, tree, params[0], .comma);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Corresponding logic below builtin name rewrite below
|
||||||
|
|
||||||
|
// TODO remove before release of 0.11.0
|
||||||
if (mem.eql(u8, slice, "@maximum")) {
|
if (mem.eql(u8, slice, "@maximum")) {
|
||||||
try ais.writer().writeAll("@max");
|
try ais.writer().writeAll("@max");
|
||||||
} else if (mem.eql(u8, slice, "@minimum")) {
|
} else if (mem.eql(u8, slice, "@minimum")) {
|
||||||
try ais.writer().writeAll("@min");
|
try ais.writer().writeAll("@min");
|
||||||
}
|
}
|
||||||
//
|
// TODO remove before release of 0.12.0
|
||||||
else if (mem.eql(u8, slice, "@boolToInt")) {
|
else if (mem.eql(u8, slice, "@boolToInt")) {
|
||||||
try ais.writer().writeAll("@intFromBool");
|
try ais.writer().writeAll("@intFromBool");
|
||||||
} else if (mem.eql(u8, slice, "@enumToInt")) {
|
} else if (mem.eql(u8, slice, "@enumToInt")) {
|
||||||
@ -1420,6 +1457,23 @@ fn renderBuiltinCall(
|
|||||||
try renderToken(ais, tree, builtin_token, .none); // @name
|
try renderToken(ais, tree, builtin_token, .none); // @name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (rewrite_two_param_cast) {
|
||||||
|
// Matches with corresponding logic above builtin name rewrite
|
||||||
|
const after_last_param_token = tree.lastToken(params[1]) + 1;
|
||||||
|
try ais.writer().writeAll("(");
|
||||||
|
try renderExpression(gpa, ais, tree, params[1], .none);
|
||||||
|
try ais.writer().writeAll(")");
|
||||||
|
if (token_tags[after_last_param_token] != .comma) {
|
||||||
|
// Render all on one line, no trailing comma.
|
||||||
|
return renderToken(ais, tree, after_last_param_token, space); // )
|
||||||
|
} else {
|
||||||
|
// Render one param per line.
|
||||||
|
ais.popIndent();
|
||||||
|
try renderToken(ais, tree, after_last_param_token, .newline); // ,
|
||||||
|
return renderToken(ais, tree, after_last_param_token + 1, space); // )
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (params.len == 0) {
|
if (params.len == 0) {
|
||||||
try renderToken(ais, tree, builtin_token + 1, .none); // (
|
try renderToken(ais, tree, builtin_token + 1, .none); // (
|
||||||
return renderToken(ais, tree, builtin_token + 2, space); // )
|
return renderToken(ais, tree, builtin_token + 2, space); // )
|
||||||
|
Loading…
Reference in New Issue
Block a user