opt_bacc.c revision 1.6
11.6Srillig/* $NetBSD: opt_bacc.c,v 1.6 2021/11/19 22:24:29 rillig Exp $ */
21.1Srillig/* $FreeBSD$ */
31.1Srillig
41.1Srillig/*
51.6Srillig * Tests for the options '-bacc' and '-nbacc' ("blank line around conditional
61.6Srillig * compilation").
71.2Srillig *
81.2Srillig * The option '-bacc' forces a blank line around every conditional compilation
91.2Srillig * block.  For example, in front of every #ifdef and after every #endif.
101.2Srillig * Other blank lines surrounding such blocks are swallowed.
111.1Srillig *
121.2Srillig * The option '-nbacc' TODO.
131.1Srillig */
141.1Srillig
151.2Srillig
161.2Srillig/* Example code without surrounding blank lines. */
171.2Srillig#indent input
181.1Srilligint		a;
191.2Srillig#if 0
201.1Srilligint		b;
211.2Srillig#endif
221.1Srilligint		c;
231.1Srillig#indent end
241.1Srillig
251.1Srillig/*
261.6Srillig * XXX: As of 2021-11-19, the option -bacc has no effect on declarations since
271.6Srillig * process_type resets blank_line_before unconditionally.
281.1Srillig */
291.2Srillig#indent run -bacc
301.2Srilligint		a;
311.2Srillig/* $ FIXME: expecting a blank line here */
321.2Srillig#if 0
331.2Srilligint		b;
341.2Srillig#endif
351.2Srillig/* $ FIXME: expecting a blank line here */
361.2Srilligint		c;
371.2Srillig#indent end
381.1Srillig
391.2Srillig/*
401.2Srillig * With '-nbacc' the code is unchanged since there are no blank lines to
411.2Srillig * remove.
421.2Srillig */
431.3Srillig#indent run-equals-input -nbacc
441.1Srillig
451.1Srillig
461.2Srillig/* Example code containing blank lines. */
471.2Srillig#indent input
481.1Srilligint		space_a;
491.1Srillig
501.2Srillig#if 0
511.2Srillig
521.2Srilligint		space_b;
531.2Srillig
541.1Srillig#endif
551.1Srillig
561.1Srilligint		space_c;
571.1Srillig#indent end
581.1Srillig
591.2Srillig#indent run -bacc
601.2Srilligint		space_a;
611.2Srillig/* $ FIXME: expecting a blank line here */
621.1Srillig#if 0
631.2Srillig
641.2Srillig/* $ FIXME: expecting NO blank line here */
651.2Srilligint		space_b;
661.1Srillig#endif
671.1Srillig
681.2Srilligint		space_c;
691.2Srillig#indent end
701.1Srillig
711.2Srillig/* The option '-nbacc' does not remove anything. */
721.3Srillig#indent run-equals-input -nbacc
731.1Srillig
741.6Srillig
751.2Srillig/*
761.2Srillig * Preprocessing directives can also occur in function bodies.
771.2Srillig */
781.2Srillig#indent input
791.1Srilligconst char *
801.1Srilligos_name(void)
811.1Srillig{
821.1Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
831.1Srillig	return "BSD";
841.1Srillig#else
851.1Srillig	return "unknown";
861.1Srillig#endif
871.1Srillig}
881.1Srillig#indent end
891.1Srillig
901.2Srillig#indent run -bacc
911.5Srilligconst char *
921.2Srilligos_name(void)
931.2Srillig{
941.2Srillig/* $ FIXME: expecting a blank line here. */
951.2Srillig#if defined(__NetBSD__) || defined(__FreeBSD__)
961.2Srillig/* $ FIXME: expecting NO blank line here. */
971.1Srillig
981.2Srillig	return "BSD";
991.2Srillig#else
1001.2Srillig/* $ FIXME: expecting NO blank line here. */
1011.1Srillig
1021.2Srillig	return "unknown";
1031.1Srillig#endif
1041.2Srillig/* $ FIXME: expecting a blank line here. */
1051.2Srillig}
1061.2Srillig#indent end
1071.1Srillig
1081.5Srillig#indent run-equals-input -nbacc
1091.6Srillig
1101.6Srillig
1111.6Srillig/*
1121.6Srillig * Test nested preprocessor directives.
1131.6Srillig */
1141.6Srillig#indent input
1151.6Srillig#if outer
1161.6Srillig#if inner
1171.6Srilligint decl;
1181.6Srillig#endif
1191.6Srillig#endif
1201.6Srillig#indent end
1211.6Srillig
1221.6Srillig#indent run -di0 -bacc
1231.6Srillig#if outer
1241.6Srillig
1251.6Srillig#if inner
1261.6Srilligint decl;
1271.6Srillig#endif
1281.6Srillig
1291.6Srillig#endif
1301.6Srillig#indent end
1311.6Srillig
1321.6Srillig#indent run-equals-input -di0 -nbacc
1331.6Srillig
1341.6Srillig
1351.6Srillig/*
1361.6Srillig * Test nested preprocessor directives that are interleaved with declarations.
1371.6Srillig */
1381.6Srillig#indent input
1391.6Srillig#ifdef outer
1401.6Srilligint outer_above;
1411.6Srillig#ifdef inner
1421.6Srilligint inner;
1431.6Srillig#endif
1441.6Srilligint outer_below;
1451.6Srillig#endif
1461.6Srillig#indent end
1471.6Srillig
1481.6Srillig#indent run-equals-input -di0 -bacc
1491.6Srillig#indent run-equals-input -di0 -nbacc
150