Home | History | Annotate | Line # | Download | only in indent
psym_switch_expr.c revision 1.3
      1  1.3  rillig /* $NetBSD: psym_switch_expr.c,v 1.3 2022/04/22 21:21:20 rillig Exp $ */
      2  1.1  rillig 
      3  1.1  rillig /*
      4  1.1  rillig  * Tests for the parser symbol psym_switch_expr, which represents the keyword
      5  1.1  rillig  * 'switch' followed by the controlling expression, now waiting for a
      6  1.1  rillig  * statement (usually a block) containing the 'case' labels.
      7  1.1  rillig  */
      8  1.1  rillig 
      9  1.1  rillig #indent input
     10  1.1  rillig // TODO: add input
     11  1.1  rillig #indent end
     12  1.1  rillig 
     13  1.1  rillig #indent run-equals-input
     14  1.2  rillig 
     15  1.2  rillig 
     16  1.2  rillig /*
     17  1.2  rillig  * In all practical cases, a 'switch (expr)' is followed by a block, but the
     18  1.2  rillig  * C syntax allows an arbitrary statement.  Unless such a statement has a
     19  1.2  rillig  * label, it is unreachable.
     20  1.2  rillig  */
     21  1.2  rillig #indent input
     22  1.2  rillig void
     23  1.2  rillig function(void)
     24  1.2  rillig {
     25  1.2  rillig 	switch (expr)
     26  1.2  rillig 	if (cond) {
     27  1.2  rillig 	case 1: return;
     28  1.2  rillig 	case 2: break;
     29  1.2  rillig 	}
     30  1.2  rillig }
     31  1.2  rillig #indent end
     32  1.2  rillig 
     33  1.2  rillig #indent run
     34  1.2  rillig void
     35  1.2  rillig function(void)
     36  1.2  rillig {
     37  1.2  rillig 	switch (expr)
     38  1.2  rillig 		if (cond) {
     39  1.2  rillig 	case 1:
     40  1.2  rillig 			return;
     41  1.2  rillig 	case 2:
     42  1.2  rillig 			break;
     43  1.2  rillig 		}
     44  1.2  rillig }
     45  1.2  rillig #indent end
     46