Module Name: src Committed By: rillig Date: Sun Nov 7 08:03:15 UTC 2021
Modified Files: src/tests/usr.bin/indent: opt_eei.c Log Message: tests/indent: demonstrate buggy combination of '-eei' and '-nlp' Seen in indent.c. To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/indent/opt_eei.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/indent/opt_eei.c diff -u src/tests/usr.bin/indent/opt_eei.c:1.4 src/tests/usr.bin/indent/opt_eei.c:1.5 --- src/tests/usr.bin/indent/opt_eei.c:1.4 Mon Oct 18 07:11:31 2021 +++ src/tests/usr.bin/indent/opt_eei.c Sun Nov 7 08:03:15 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: opt_eei.c,v 1.4 2021/10/18 07:11:31 rillig Exp $ */ +/* $NetBSD: opt_eei.c,v 1.5 2021/11/07 08:03:15 rillig Exp $ */ /* $FreeBSD$ */ /* @@ -79,3 +79,78 @@ less(int a, int b) return true; } #indent end + +/* + * With an indentation size of 4, the width of the code 'if (' is exactly one + * indentation level. With the option '-nlp', the option '-eei' has no effect. + * + * XXX: This is unexpected since this creates the exact ambiguity that the + * option '-eei' is supposed to prevent. + */ +#indent run -eei -i4 -nlp +bool +less(int a, int b) +{ + if (a < + b) + return true; + if (a + < + b) + return true; +} +#indent end + + +/* + * The option '-eei' applies no matter whether the continued expression starts + * with a word or an operator like '&&'. The latter cannot start a statement, + * so there would be no ambiguity. + */ +#indent input +{ + if (a +&& b) + stmt(); +} +#indent end + +/* + * XXX: The extra indentation is unnecessary since there is no possible + * confusion: the standard indentation is 8, the indentation of the continued + * condition could have stayed at 4. + */ +#indent run -eei +{ + if (a + && b) + stmt(); +} +#indent end + +/* + * The extra indentation is necessary here since otherwise the '&&' and the + * 'stmt()' would start at the same indentation. + */ +#indent run -eei -i4 +{ + if (a + && b) + stmt(); +} +#indent end + +/* + * With an indentation size of 4, the width of the code 'if (' is exactly one + * indentation level. With the option '-nlp', the option '-eei' has no effect. + * + * XXX: This is unexpected since this creates the exact ambiguity that the + * option '-eei' is supposed to prevent. + */ +#indent run -eei -i4 -nlp +{ + if (a + && b) + stmt(); +} +#indent end