11.6Srillig/* $NetBSD: lsym_semicolon.c,v 1.6 2023/06/16 23:19:01 rillig Exp $ */ 21.1Srillig 31.1Srillig/* 41.1Srillig * Tests for the token lsym_semicolon, which represents ';' in these contexts: 51.1Srillig * 61.1Srillig * In a declaration, ';' finishes the declaration. 71.1Srillig * 81.1Srillig * In a statement, ';' finishes the statement. 91.1Srillig * 101.1Srillig * In a 'for' statement, ';' separates the 3 expressions in the head of the 111.1Srillig * 'for' statement. 121.1Srillig */ 131.1Srillig 141.3Srillig//indent input 151.4Srilligstruct { 161.4Srillig int member; 171.4Srillig} global_var; 181.3Srillig//indent end 191.1Srillig 201.4Srillig//indent run-equals-input -di0 211.4Srillig 221.4Srillig 231.4Srillig//indent input 241.4Srilligvoid 251.4Srilligfunction(void) 261.4Srillig{ 271.4Srillig for ( ; ; ) 281.4Srillig stmt(); 291.4Srillig for (;;) 301.4Srillig stmt(); 311.4Srillig} 321.4Srillig//indent end 331.4Srillig 341.4Srillig//indent run 351.4Srilligvoid 361.4Srilligfunction(void) 371.4Srillig{ 381.4Srillig for (;;) 391.4Srillig stmt(); 401.4Srillig for (;;) 411.4Srillig stmt(); 421.4Srillig} 431.4Srillig//indent end 441.5Srillig 451.5Srillig 461.5Srillig//indent input 471.5Srillig{ 481.5Srillig switch (expr) { 491.5Srillig// $ FIXME: Indent the 'case' at the 'switch'. 501.5Srillig case; 511.5Srillig stmt; 521.5Srillig case 2: 531.5Srillig stmt; 541.5Srillig } 551.5Srillig} 561.5Srillig//indent end 571.5Srillig 581.5Srillig//indent run-equals-input 591.5Srillig 601.5Srillig 611.5Srillig/* 621.5Srillig * A semicolon closes all possibly open '?:' expressions, so that the next ':' 631.5Srillig * is interpreted as a bit-field. 641.5Srillig */ 651.5Srillig//indent input 661.5Srilligstruct s { 671.5Srillig int a[len ? ? ? 1]; 681.5Srillig int bit_field:1; 691.5Srillig}; 701.5Srillig//indent end 711.5Srillig 721.5Srillig//indent run-equals-input -di0 731.5Srillig 741.5Srillig 751.5Srillig/* 761.5Srillig * A semicolon does not magically close any initializer braces that may still 771.5Srillig * be open. 781.5Srillig */ 791.5Srillig//indent input 801.5Srilligint a = {{; 811.5Srilligint b = 3; 821.5Srillig//indent end 831.5Srillig 841.5Srillig//indent run -di0 851.5Srilligint a = {{; 861.5Srillig int b = 3; 871.6Srillig// exit 1 881.6Srillig// error: Standard Input:2: Stuff missing from end of file 891.5Srillig//indent end 901.5Srillig 911.5Srillig 921.5Srillig//indent input 931.5Srillig{ 941.5Srillig int a = {{; 951.5Srillig int b = 3; 961.5Srillig} 971.5Srillig//indent end 981.5Srillig 991.5Srillig//indent run -di0 1001.5Srillig{ 1011.5Srillig int a = {{; 1021.5Srillig int b = 3; 1031.5Srillig } 1041.6Srillig// exit 1 1051.6Srillig// error: Standard Input:4: Stuff missing from end of file 1061.5Srillig//indent end 107