opt_bacc.c revision 1.3
11.3Srillig/* $NetBSD: opt_bacc.c,v 1.3 2021/10/18 07:11:31 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.3Srillig#indent run-equals-input -nbacc
431.1Srillig
441.1Srillig
451.2Srillig/* Example code containing blank lines. */
461.2Srillig#indent input
471.1Srilligint		space_a;
481.1Srillig
491.2Srillig#if 0
501.2Srillig
511.2Srilligint		space_b;
521.2Srillig
531.1Srillig#endif
541.1Srillig
551.1Srilligint		space_c;
561.1Srillig#indent end
571.1Srillig
581.2Srillig#indent run -bacc
591.2Srilligint		space_a;
601.2Srillig/* $ FIXME: expecting a blank line here */
611.1Srillig#if 0
621.2Srillig
631.2Srillig/* $ FIXME: expecting NO blank line here */
641.2Srilligint		space_b;
651.1Srillig#endif
661.1Srillig
671.2Srilligint		space_c;
681.2Srillig#indent end
691.1Srillig
701.2Srillig/* The option '-nbacc' does not remove anything. */
711.3Srillig#indent run-equals-input -nbacc
721.1Srillig
731.2Srillig/*
741.2Srillig * Preprocessing directives can also occur in function bodies.
751.2Srillig */
761.2Srillig#indent input
771.1Srilligconst char *
781.1Srilligos_name(void)
791.1Srillig{
801.1Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
811.1Srillig	return "BSD";
821.1Srillig#else
831.1Srillig	return "unknown";
841.1Srillig#endif
851.1Srillig}
861.1Srillig#indent end
871.1Srillig
881.2Srillig#indent run -bacc
891.2Srillig/* $ XXX: The '*' should not be set apart from the rest of the return type. */
901.2Srilligconst char     *
911.2Srilligos_name(void)
921.2Srillig{
931.2Srillig/* $ FIXME: expecting a blank line here. */
941.2Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
951.2Srillig/* $ FIXME: expecting NO blank line here. */
961.1Srillig
971.2Srillig	return "BSD";
981.2Srillig#else
991.2Srillig/* $ FIXME: expecting NO blank line here. */
1001.1Srillig
1011.2Srillig	return "unknown";
1021.1Srillig#endif
1031.2Srillig/* $ FIXME: expecting a blank line here. */
1041.2Srillig}
1051.2Srillig#indent end
1061.1Srillig
1071.2Srillig#indent run -nbacc
1081.1Srilligconst char     *
1091.1Srilligos_name(void)
1101.1Srillig{
1111.1Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
1121.1Srillig	return "BSD";
1131.1Srillig#else
1141.1Srillig	return "unknown";
1151.1Srillig#endif
1161.1Srillig}
1171.1Srillig#indent end
118