/* $NetBSD: opt_ci.c,v 1.11 2023/06/10 08:17:04 rillig Exp $ */ /* * Tests for the option '-ci', which controls the indentation of continuation * lines in statements and declarations, but only inside a function. */ /* * Top level expressions with and without parentheses. */ //indent input int top_level = 1 + 2; int top_level = (1 + 2 + ( 3)); //indent end //indent run -ci0 int top_level = 1 + 2; int top_level = (1 + 2 + ( 3)); //indent end //indent run-equals-prev-output -ci2 //indent run-equals-prev-output -ci4 //indent run-equals-prev-output -ci8 //indent run -ci0 -nlp int top_level = 1 + 2; int top_level = (1 + 2 + ( 3)); //indent end //indent run -ci2 -nlp int top_level = 1 + 2; int top_level = (1 + 2 + ( 3)); //indent end /* * Between 2019-04-04 and 2023-06-09, there was a special rule that prevented * indentation based on the number of open parentheses, in the case that the * continuation indentation is half an indentation level, maybe to prevent that * the continuation line has the same indentation as a follow-up statement, * such as in 'if' statements. To prevent such ambiguities, see '-eei'. */ //indent run -ci4 -nlp int top_level = 1 + 2; int top_level = (1 + 2 + ( 3)); //indent end /* * Declarations in functions without parentheses. */ //indent input int sum(int a, int b) { return a + b; return first + second; } //indent end //indent run -ci0 int sum(int a, int b) { return a + b; return first + second; } //indent end //indent run -ci2 int sum(int a, int b) { return a + b; return first + second; } //indent end //indent run -ci4 int sum(int a, int b) { return a + b; return first + second; } //indent end //indent run -ci8 int sum(int a, int b) { return a + b; return first + second; } //indent end /* * Continued statements with expressions in parentheses. */ //indent input int sum(int a, int b) { return (a + b); return (first + second + ( third)); } //indent end //indent run -ci0 int sum(int a, int b) { return (a + b); return (first + second + ( third)); } //indent end //indent run-equals-prev-output -ci2 //indent run-equals-prev-output -ci4 //indent run-equals-prev-output -ci8 //indent run -ci2 -nlp int sum(int a, int b) { return (a + b); return (first + second + ( third)); } //indent end //indent run -ci4 -nlp int sum(int a, int b) { return (a + b); return (first + second + ( third)); } //indent end //indent run -ci8 -nlp int sum(int a, int b) { return (a + b); return (first + second + ( third)); } //indent end /* * In the default configuration, the indentation level from '-i' is the same * as the continuation indentation from '-ci'. The difference between these * becomes visible for structural macros like 'forever' or 'foreach'. */ //indent input #define forever for (;;) void function(void) { forever stmt(); forever { stmt(); } } //indent end //indent run-equals-input /* * The difference between the block indentation and the continuation * indentation only becomes visible when these two differ. */ //indent run -i8 -ci4 #define forever for (;;) void function(void) { forever stmt(); forever { stmt(); } } //indent end //indent input { size_t last_word_len = com.len - (size_t)(last_blank + 1); } //indent end //indent run-equals-input -ldi0 -ci4