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