opt_bacc.c revision 1.9
11.9Srillig/* $NetBSD: opt_bacc.c,v 1.9 2022/04/24 08:52:44 rillig Exp $ */ 21.1Srillig 31.1Srillig/* 41.6Srillig * Tests for the options '-bacc' and '-nbacc' ("blank line around conditional 51.6Srillig * compilation"). 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.6Srillig * XXX: As of 2021-11-19, the option -bacc has no effect on declarations since 261.8Srillig * process_type resets out.blank_line_before 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.6Srillig 741.2Srillig/* 751.2Srillig * Preprocessing directives can also occur in function bodies. 761.2Srillig */ 771.2Srillig#indent input 781.1Srilligconst char * 791.1Srilligos_name(void) 801.1Srillig{ 811.1Srillig#if defined(__NetBSD__) || defined(__FreeBSD__) 821.1Srillig return "BSD"; 831.1Srillig#else 841.1Srillig return "unknown"; 851.1Srillig#endif 861.1Srillig} 871.1Srillig#indent end 881.1Srillig 891.2Srillig#indent run -bacc 901.5Srilligconst 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.5Srillig#indent run-equals-input -nbacc 1081.6Srillig 1091.6Srillig 1101.6Srillig/* 1111.6Srillig * Test nested preprocessor directives. 1121.6Srillig */ 1131.6Srillig#indent input 1141.6Srillig#if outer 1151.6Srillig#if inner 1161.6Srilligint decl; 1171.6Srillig#endif 1181.6Srillig#endif 1191.6Srillig#indent end 1201.6Srillig 1211.6Srillig#indent run -di0 -bacc 1221.6Srillig#if outer 1231.6Srillig 1241.6Srillig#if inner 1251.6Srilligint decl; 1261.6Srillig#endif 1271.6Srillig 1281.6Srillig#endif 1291.6Srillig#indent end 1301.6Srillig 1311.6Srillig#indent run-equals-input -di0 -nbacc 1321.6Srillig 1331.6Srillig 1341.6Srillig/* 1351.6Srillig * Test nested preprocessor directives that are interleaved with declarations. 1361.6Srillig */ 1371.6Srillig#indent input 1381.6Srillig#ifdef outer 1391.6Srilligint outer_above; 1401.6Srillig#ifdef inner 1411.6Srilligint inner; 1421.6Srillig#endif 1431.6Srilligint outer_below; 1441.6Srillig#endif 1451.6Srillig#indent end 1461.6Srillig 1471.6Srillig#indent run-equals-input -di0 -bacc 1481.9Srillig 1491.6Srillig#indent run-equals-input -di0 -nbacc 150