1*95820b53Srillig /* $NetBSD: lsym_semicolon.c,v 1.6 2023/06/16 23:19:01 rillig Exp $ */ 29ae26de1Srillig 39ae26de1Srillig /* 49ae26de1Srillig * Tests for the token lsym_semicolon, which represents ';' in these contexts: 59ae26de1Srillig * 69ae26de1Srillig * In a declaration, ';' finishes the declaration. 79ae26de1Srillig * 89ae26de1Srillig * In a statement, ';' finishes the statement. 99ae26de1Srillig * 109ae26de1Srillig * In a 'for' statement, ';' separates the 3 expressions in the head of the 119ae26de1Srillig * 'for' statement. 129ae26de1Srillig */ 139ae26de1Srillig 1447306038Srillig //indent input 15b60cb68fSrillig struct { 16b60cb68fSrillig int member; 17b60cb68fSrillig } global_var; 1847306038Srillig //indent end 199ae26de1Srillig 20b60cb68fSrillig //indent run-equals-input -di0 21b60cb68fSrillig 22b60cb68fSrillig 23b60cb68fSrillig //indent input 24b60cb68fSrillig void function(void)25b60cb68fSrilligfunction(void) 26b60cb68fSrillig { 27b60cb68fSrillig for ( ; ; ) 28b60cb68fSrillig stmt(); 29b60cb68fSrillig for (;;) 30b60cb68fSrillig stmt(); 31b60cb68fSrillig } 32b60cb68fSrillig //indent end 33b60cb68fSrillig 34b60cb68fSrillig //indent run 35b60cb68fSrillig void function(void)36b60cb68fSrilligfunction(void) 37b60cb68fSrillig { 38b60cb68fSrillig for (;;) 39b60cb68fSrillig stmt(); 40b60cb68fSrillig for (;;) 41b60cb68fSrillig stmt(); 42b60cb68fSrillig } 43b60cb68fSrillig //indent end 440982fd88Srillig 450982fd88Srillig 460982fd88Srillig //indent input 470982fd88Srillig { 480982fd88Srillig switch (expr) { 490982fd88Srillig // $ FIXME: Indent the 'case' at the 'switch'. 500982fd88Srillig case; 510982fd88Srillig stmt; 520982fd88Srillig case 2: 530982fd88Srillig stmt; 540982fd88Srillig } 550982fd88Srillig } 560982fd88Srillig //indent end 570982fd88Srillig 580982fd88Srillig //indent run-equals-input 590982fd88Srillig 600982fd88Srillig 610982fd88Srillig /* 620982fd88Srillig * A semicolon closes all possibly open '?:' expressions, so that the next ':' 630982fd88Srillig * is interpreted as a bit-field. 640982fd88Srillig */ 650982fd88Srillig //indent input 660982fd88Srillig struct s { 670982fd88Srillig int a[len ? ? ? 1]; 680982fd88Srillig int bit_field:1; 690982fd88Srillig }; 700982fd88Srillig //indent end 710982fd88Srillig 720982fd88Srillig //indent run-equals-input -di0 730982fd88Srillig 740982fd88Srillig 750982fd88Srillig /* 760982fd88Srillig * A semicolon does not magically close any initializer braces that may still 770982fd88Srillig * be open. 780982fd88Srillig */ 790982fd88Srillig //indent input 800982fd88Srillig int a = {{; 810982fd88Srillig int b = 3; 820982fd88Srillig //indent end 830982fd88Srillig 840982fd88Srillig //indent run -di0 850982fd88Srillig int a = {{; 860982fd88Srillig int b = 3; 87*95820b53Srillig // exit 1 88*95820b53Srillig // error: Standard Input:2: Stuff missing from end of file 890982fd88Srillig //indent end 900982fd88Srillig 910982fd88Srillig 920982fd88Srillig //indent input 930982fd88Srillig { 940982fd88Srillig int a = {{; 950982fd88Srillig int b = 3; 960982fd88Srillig } 970982fd88Srillig //indent end 980982fd88Srillig 990982fd88Srillig //indent run -di0 1000982fd88Srillig { 1010982fd88Srillig int a = {{; 1020982fd88Srillig int b = 3; 1030982fd88Srillig } 104*95820b53Srillig // exit 1 105*95820b53Srillig // error: Standard Input:4: Stuff missing from end of file 1060982fd88Srillig //indent end 107