Module Name: src Committed By: rillig Date: Sun Nov 28 15:26:22 UTC 2021
Modified Files: src/distrib/sets/lists/tests: mi src/tests/usr.bin/indent: Makefile lsym_comma.c Removed Files: src/tests/usr.bin/indent: token_comma.c Log Message: tests/indent: migrate token_comma to lsym_comma The section on initializer values is new. To generate a diff of this commit: cvs rdiff -u -r1.1170 -r1.1171 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.36 -r1.37 src/tests/usr.bin/indent/Makefile cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/indent/lsym_comma.c cvs rdiff -u -r1.2 -r0 src/tests/usr.bin/indent/token_comma.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.1170 src/distrib/sets/lists/tests/mi:1.1171 --- src/distrib/sets/lists/tests/mi:1.1170 Sun Nov 28 14:49:28 2021 +++ src/distrib/sets/lists/tests/mi Sun Nov 28 15:26:22 2021 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.1170 2021/11/28 14:49:28 rillig Exp $ +# $NetBSD: mi,v 1.1171 2021/11/28 15:26:22 rillig Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -5245,7 +5245,7 @@ ./usr/tests/usr.bin/indent/token_binary_op.c tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/indent/token_case_label.c tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/indent/token_colon.c tests-obsolete obsolete,atf -./usr/tests/usr.bin/indent/token_comma.c tests-usr.bin-tests compattestfile,atf +./usr/tests/usr.bin/indent/token_comma.c tests-obsolete obsolete,atf ./usr/tests/usr.bin/indent/token_comment.c tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/indent/token_decl.c tests-usr.bin-tests compattestfile,atf ./usr/tests/usr.bin/indent/token_do_stmt.c tests-usr.bin-tests compattestfile,atf Index: src/tests/usr.bin/indent/Makefile diff -u src/tests/usr.bin/indent/Makefile:1.36 src/tests/usr.bin/indent/Makefile:1.37 --- src/tests/usr.bin/indent/Makefile:1.36 Sun Nov 28 14:49:28 2021 +++ src/tests/usr.bin/indent/Makefile Sun Nov 28 15:26:22 2021 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.36 2021/11/28 14:49:28 rillig Exp $ +# $NetBSD: Makefile,v 1.37 2021/11/28 15:26:22 rillig Exp $ .include <bsd.own.mk> @@ -112,7 +112,6 @@ FILES+= psym_while_expr.c FILES+= t_options.awk FILES+= token_binary_op.c FILES+= token_case_label.c -FILES+= token_comma.c FILES+= token_comment.c FILES+= token_decl.c FILES+= token_do_stmt.c Index: src/tests/usr.bin/indent/lsym_comma.c diff -u src/tests/usr.bin/indent/lsym_comma.c:1.2 src/tests/usr.bin/indent/lsym_comma.c:1.3 --- src/tests/usr.bin/indent/lsym_comma.c:1.2 Sat Nov 20 16:54:17 2021 +++ src/tests/usr.bin/indent/lsym_comma.c Sun Nov 28 15:26:22 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: lsym_comma.c,v 1.2 2021/11/20 16:54:17 rillig Exp $ */ +/* $NetBSD: lsym_comma.c,v 1.3 2021/11/28 15:26:22 rillig Exp $ */ /* $FreeBSD$ */ /* @@ -22,10 +22,161 @@ * In a macro definition, a ',' separates the parameter names. * * In a macro invocation, a ',' separates the arguments. + * + * In an initializer list, a ',' separates the initializer expressions. */ +/* + * The ',' is a binary operator with very low precedence. + */ #indent input -// TODO: add input +int +comma_expression(void) +{ + return 1, 3; + return a = b, c = d; +} #indent end #indent run-equals-input + + +/* + * In a declaration, a ',' separates the declarators. + */ +#indent input +int decl, old_style(), prototype(const char *, double *); +int a, b, c; +#indent end + +#indent run-equals-input -di0 + + +/* + * In a parameter list of a function type, a ',' separates the parameter + * declarations. + */ +#indent input +double dbl_reduce(double init, const double *s, const double *e, double (*merge)(double, double)); +double dbl_reduce(double, const double *, const double *, double (*)(double, double)); +void debug_printf(const char *, ...); +#indent end + +#indent run-equals-input -di0 + + +/* + * In a traditional function definition, a ',' separates the parameter names. + */ +#indent input +double +trad_dbl_reduce(init, s, e, merge) + double init; + double *s, *e; + double (*merge)() +{ + double x = init; + while (s < e) + x = merge(x, *s++); + return x; +} +#indent end + +#indent run-equals-input -di0 + + +/* + * In a prototype function definition, a ',' separates the parameter + * declarations. + */ +#indent input +void +dbl_reduce(double init, const double *s, const double *e, double (*merge)(double, double)) +{ + double x = init; + while (s < e) + x = merge(x, *s++); + return x; +} +#indent end + +#indent run-equals-input -di0 + + +/* + * In a function call expression, a ',' separates the arguments. + */ +#indent input +void +function(void) +{ + function_call(arg1, arg2); + (*indirect_function_call)(arg1, arg2); +} +#indent end + +#indent run-equals-input -di0 + + +/* + * In a macro definition, a ',' separates the parameter names. + */ +#indent input +#define no_space(a,b) a ## b +#define normal_space(a, b) a ## b +#define wide_space(a , b) a ## b +#indent end + +/* + * Indent does not touch preprocessor directives, except for the spacing + * between the '#' and the directive. + */ +#indent run-equals-input + + +/* + * In a macro invocation, a ',' separates the arguments. + */ +#indent input +void +function(void) +{ + macro_invocation(arg1, arg2); + empty_arguments(,,,); +} +#indent end + +#indent run-equals-input -di0 + + +/* + * In an initializer list, a ',' separates the initializer expressions. + * + * If a ',' starts a line, indent doesn't put a space before it. + */ +#indent input +int arr[] = {1, 2, 3}; +int arr[] = { + 1, + 2, + 3, /* there may be a trailing comma */ +}; +#indent end + +#indent run-equals-input -di0 + + +/* + * If a ',' starts a line, indent doesn't put a space before it. This style is + * uncommon and looks unbalanced since the '1' is not aligned to the other + * numbers. + */ +#indent input +int arr[] = { + 1 + ,2 + ,3 +}; +#indent end + +#indent run-equals-input -di0