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