/* $NetBSD: opt_bc.c,v 1.13 2023/06/17 22:09:24 rillig Exp $ */ /* * Tests for the options '-bc' and '-nbc'. * * The option '-bc' forces a newline after each comma in a declaration. * * The option '-nbc' removes line breaks between declarators. In most other * places, indent preserves line breaks. */ //indent input int a,b,c; void function_declaration(int a,int b,int c); int m1, m2, m3; char plain, *pointer; //indent end //indent run -bc int a, b, c; void function_declaration(int a, int b, int c); int m1, m2, m3; char plain, *pointer; //indent end //indent run -nbc int a, b, c; void function_declaration(int a, int b, int c); int m1, m2, m3; char plain, *pointer; //indent end //indent input old_style_definition(a, b, c) double a,b,c; { return a+b+c; } //indent end //indent run -bc old_style_definition(a, b, c) double a, b, c; { return a + b + c; } //indent end //indent run -nbc old_style_definition(a, b, c) double a, b, c; { return a + b + c; } //indent end /* * Before indent.c 1.311 from 2023-06-02, indent formatted the two '#if' * branches differently and merged the 'b, c' with the preceding preprocessing * line. */ //indent input int a, #if 0 b, c; int d; #else b, c; int d; #endif //indent end //indent run -bc int a, #if 0 b, c; int d; #else b, c; int d; #endif //indent end //indent run -nbc int a, #if 0 b, c; int d; #else b, c; int d; #endif //indent end /* * Before 2023-06-10, a '(' at the top level started a function definition, * leaving variable declaration mode. */ //indent input int a = 1, b = 2; int a = (1), b = 2; //indent end //indent run -bc int a = 1, b = 2; int a = (1), b = 2; //indent end //indent input int a, b, c; //indent end //indent run -nbc -di0 int a, b, c; //indent end /* * When declarations are too long to fit in a single line, they should not be * joined. */ //indent input { const struct paren_level *prev = state.prev_ps.paren.item, *curr = ps.paren.item; } //indent end //indent run // $ FIXME: The line becomes too long. { const struct paren_level *prev = state.prev_ps.paren.item, *curr = ps.paren.item; } //indent end /* * In struct or union declarations, the declarators are split onto separate * lines, just like in ordinary declarations. * * In enum declarations and in initializers, no line breaks are added or * removed. */ //indent input struct triple_struct { int a, b, c; }; union triple_union { int a, b, c; }; enum triple_enum { triple_a, triple_b, triple_c, }; //indent end //indent run -bc struct triple_struct { int a, b, c; }; union triple_union { int a, b, c; }; enum triple_enum { triple_a, triple_b, triple_c, }; //indent end //indent run -nbc struct triple_struct { int a, b, c; }; union triple_union { int a, b, c; }; enum triple_enum { triple_a, triple_b, triple_c, }; //indent end