mirror of
https://github.com/ziglang/zig.git
synced 2026-02-21 16:54:52 +00:00
zig fmt: Respect line breaks in struct default value decls
Bring this in line with how variable declarations are handled. Open a new indentation level for the initialization expression to handle nested expressions like blocks. Closes #7618
This commit is contained in:
parent
f16f25047c
commit
5ecf8bddae
@ -4,6 +4,31 @@
|
|||||||
// The MIT license requires this copyright notice to be included in all copies
|
// The MIT license requires this copyright notice to be included in all copies
|
||||||
// and substantial portions of the software.
|
// and substantial portions of the software.
|
||||||
|
|
||||||
|
test "zig fmt: respect line breaks in struct field value declaration" {
|
||||||
|
try testCanonical(
|
||||||
|
\\const Foo = struct {
|
||||||
|
\\ bar: u32 =
|
||||||
|
\\ 42,
|
||||||
|
\\ bar: u32 =
|
||||||
|
\\ // a comment
|
||||||
|
\\ 42,
|
||||||
|
\\ bar: u32 =
|
||||||
|
\\ 42,
|
||||||
|
\\ // a comment
|
||||||
|
\\ bar: []const u8 =
|
||||||
|
\\ \\ foo
|
||||||
|
\\ \\ bar
|
||||||
|
\\ \\ baz
|
||||||
|
\\ ,
|
||||||
|
\\ bar: u32 =
|
||||||
|
\\ blk: {
|
||||||
|
\\ break :blk 42;
|
||||||
|
\\ },
|
||||||
|
\\};
|
||||||
|
\\
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// TODO Remove this after zig 0.9.0 is released.
|
// TODO Remove this after zig 0.9.0 is released.
|
||||||
test "zig fmt: rewrite inline functions as callconv(.Inline)" {
|
test "zig fmt: rewrite inline functions as callconv(.Inline)" {
|
||||||
try testTransform(
|
try testTransform(
|
||||||
|
|||||||
@ -1159,8 +1159,29 @@ fn renderContainerField(
|
|||||||
try renderToken(ais, tree, rparen_token, .space); // )
|
try renderToken(ais, tree, rparen_token, .space); // )
|
||||||
}
|
}
|
||||||
const eq_token = tree.firstToken(field.ast.value_expr) - 1;
|
const eq_token = tree.firstToken(field.ast.value_expr) - 1;
|
||||||
try renderToken(ais, tree, eq_token, .space); // =
|
const eq_space: Space = if (tree.tokensOnSameLine(eq_token, eq_token + 1)) .space else .newline;
|
||||||
return renderExpressionComma(gpa, ais, tree, field.ast.value_expr, space); // value
|
{
|
||||||
|
ais.pushIndent();
|
||||||
|
try renderToken(ais, tree, eq_token, eq_space); // =
|
||||||
|
ais.popIndent();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eq_space == .space)
|
||||||
|
return renderExpressionComma(gpa, ais, tree, field.ast.value_expr, space); // value
|
||||||
|
|
||||||
|
const token_tags = tree.tokens.items(.tag);
|
||||||
|
const maybe_comma = tree.lastToken(field.ast.value_expr) + 1;
|
||||||
|
|
||||||
|
if (token_tags[maybe_comma] == .comma) {
|
||||||
|
ais.pushIndent();
|
||||||
|
try renderExpression(gpa, ais, tree, field.ast.value_expr, .none); // value
|
||||||
|
ais.popIndent();
|
||||||
|
try renderToken(ais, tree, maybe_comma, space);
|
||||||
|
} else {
|
||||||
|
ais.pushIndent();
|
||||||
|
try renderExpression(gpa, ais, tree, field.ast.value_expr, space); // value
|
||||||
|
ais.popIndent();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn renderBuiltinCall(
|
fn renderBuiltinCall(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user