opt_bacc.c revision 1.2
11.2Srillig/* $NetBSD: opt_bacc.c,v 1.2 2021/10/16 06:02:18 rillig Exp $ */
21.1Srillig/* $FreeBSD$ */
31.1Srillig
41.1Srillig/*
51.2Srillig * Test the options '-bacc' and '-nbacc'.
61.2Srillig *
71.2Srillig * The option '-bacc' forces a blank line around every conditional compilation
81.2Srillig * block.  For example, in front of every #ifdef and after every #endif.
91.2Srillig * Other blank lines surrounding such blocks are swallowed.
101.1Srillig *
111.2Srillig * The option '-nbacc' TODO.
121.1Srillig */
131.1Srillig
141.2Srillig
151.2Srillig/* Example code without surrounding blank lines. */
161.2Srillig#indent input
171.1Srilligint		a;
181.2Srillig#if 0
191.1Srilligint		b;
201.2Srillig#endif
211.1Srilligint		c;
221.1Srillig#indent end
231.1Srillig
241.1Srillig/*
251.1Srillig * XXX: As of 2021-10-05, the option -bacc has no effect on declarations since
261.1Srillig * process_decl resets prefix_blankline_requested unconditionally.
271.1Srillig */
281.2Srillig#indent run -bacc
291.2Srilligint		a;
301.2Srillig/* $ FIXME: expecting a blank line here */
311.2Srillig#if 0
321.2Srilligint		b;
331.2Srillig#endif
341.2Srillig/* $ FIXME: expecting a blank line here */
351.2Srilligint		c;
361.2Srillig#indent end
371.1Srillig
381.2Srillig/*
391.2Srillig * With '-nbacc' the code is unchanged since there are no blank lines to
401.2Srillig * remove.
411.2Srillig */
421.2Srillig#indent run -nbacc
431.1Srilligint		a;
441.2Srillig#if 0
451.1Srilligint		b;
461.2Srillig#endif
471.1Srilligint		c;
481.2Srillig#indent end
491.1Srillig
501.1Srillig
511.2Srillig/* Example code containing blank lines. */
521.2Srillig#indent input
531.1Srilligint		space_a;
541.1Srillig
551.2Srillig#if 0
561.2Srillig
571.2Srilligint		space_b;
581.2Srillig
591.1Srillig#endif
601.1Srillig
611.1Srilligint		space_c;
621.1Srillig#indent end
631.1Srillig
641.2Srillig#indent run -bacc
651.2Srilligint		space_a;
661.2Srillig/* $ FIXME: expecting a blank line here */
671.1Srillig#if 0
681.2Srillig
691.2Srillig/* $ FIXME: expecting NO blank line here */
701.2Srilligint		space_b;
711.1Srillig#endif
721.1Srillig
731.2Srilligint		space_c;
741.2Srillig#indent end
751.1Srillig
761.2Srillig/* The option '-nbacc' does not remove anything. */
771.2Srillig#indent run -nbacc
781.1Srilligint		space_a;
791.1Srillig
801.1Srillig#if 0
811.1Srillig
821.1Srilligint		space_b;
831.1Srillig
841.1Srillig#endif
851.1Srillig
861.1Srilligint		space_c;
871.2Srillig#indent end
881.1Srillig
891.2Srillig/*
901.2Srillig * Preprocessing directives can also occur in function bodies.
911.2Srillig */
921.2Srillig#indent input
931.1Srilligconst char *
941.1Srilligos_name(void)
951.1Srillig{
961.1Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
971.1Srillig	return "BSD";
981.1Srillig#else
991.1Srillig	return "unknown";
1001.1Srillig#endif
1011.1Srillig}
1021.1Srillig#indent end
1031.1Srillig
1041.2Srillig#indent run -bacc
1051.2Srillig/* $ XXX: The '*' should not be set apart from the rest of the return type. */
1061.2Srilligconst char     *
1071.2Srilligos_name(void)
1081.2Srillig{
1091.2Srillig/* $ FIXME: expecting a blank line here. */
1101.2Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
1111.2Srillig/* $ FIXME: expecting NO blank line here. */
1121.1Srillig
1131.2Srillig	return "BSD";
1141.2Srillig#else
1151.2Srillig/* $ FIXME: expecting NO blank line here. */
1161.1Srillig
1171.2Srillig	return "unknown";
1181.1Srillig#endif
1191.2Srillig/* $ FIXME: expecting a blank line here. */
1201.2Srillig}
1211.2Srillig#indent end
1221.1Srillig
1231.2Srillig#indent run -nbacc
1241.1Srilligconst char     *
1251.1Srilligos_name(void)
1261.1Srillig{
1271.1Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
1281.1Srillig	return "BSD";
1291.1Srillig#else
1301.1Srillig	return "unknown";
1311.1Srillig#endif
1321.1Srillig}
1331.1Srillig#indent end
134