opt_bacc.c revision 1.11
11.11Srillig/* $NetBSD: opt_bacc.c,v 1.11 2023/05/11 18:13:55 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.10Srillig//indent input 171.1Srilligint a; 181.2Srillig#if 0 191.1Srilligint b; 201.2Srillig#endif 211.1Srilligint c; 221.10Srillig//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.10Srillig//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.10Srillig//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.10Srillig//indent run-equals-input -nbacc 431.1Srillig 441.1Srillig 451.2Srillig/* Example code containing blank lines. */ 461.10Srillig//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.10Srillig//indent end 571.1Srillig 581.11Srillig//indent run-equals-input -bacc 591.1Srillig 601.2Srillig/* The option '-nbacc' does not remove anything. */ 611.10Srillig//indent run-equals-input -nbacc 621.1Srillig 631.6Srillig 641.2Srillig/* 651.2Srillig * Preprocessing directives can also occur in function bodies. 661.2Srillig */ 671.10Srillig//indent input 681.1Srilligconst char * 691.1Srilligos_name(void) 701.1Srillig{ 711.1Srillig#if defined(__NetBSD__) || defined(__FreeBSD__) 721.1Srillig return "BSD"; 731.1Srillig#else 741.1Srillig return "unknown"; 751.1Srillig#endif 761.1Srillig} 771.10Srillig//indent end 781.1Srillig 791.10Srillig//indent run -bacc 801.5Srilligconst char * 811.2Srilligos_name(void) 821.2Srillig{ 831.2Srillig/* $ FIXME: expecting a blank line here. */ 841.2Srillig#if defined(__NetBSD__) || defined(__FreeBSD__) 851.2Srillig return "BSD"; 861.2Srillig#else 871.2Srillig return "unknown"; 881.1Srillig#endif 891.2Srillig/* $ FIXME: expecting a blank line here. */ 901.2Srillig} 911.10Srillig//indent end 921.1Srillig 931.10Srillig//indent run-equals-input -nbacc 941.6Srillig 951.6Srillig 961.6Srillig/* 971.6Srillig * Test nested preprocessor directives. 981.6Srillig */ 991.10Srillig//indent input 1001.6Srillig#if outer 1011.6Srillig#if inner 1021.6Srilligint decl; 1031.6Srillig#endif 1041.6Srillig#endif 1051.10Srillig//indent end 1061.6Srillig 1071.11Srillig//indent run-equals-input -di0 -bacc 1081.6Srillig 1091.10Srillig//indent run-equals-input -di0 -nbacc 1101.6Srillig 1111.6Srillig 1121.6Srillig/* 1131.6Srillig * Test nested preprocessor directives that are interleaved with declarations. 1141.6Srillig */ 1151.10Srillig//indent input 1161.6Srillig#ifdef outer 1171.6Srilligint outer_above; 1181.6Srillig#ifdef inner 1191.6Srilligint inner; 1201.6Srillig#endif 1211.6Srilligint outer_below; 1221.6Srillig#endif 1231.10Srillig//indent end 1241.6Srillig 1251.10Srillig//indent run-equals-input -di0 -bacc 1261.9Srillig 1271.10Srillig//indent run-equals-input -di0 -nbacc 128