Home | History | Annotate | Line # | Download | only in lint1
expr_precedence.c revision 1.2
      1  1.2  rillig /*	$NetBSD: expr_precedence.c,v 1.2 2021/07/15 17:20:58 rillig Exp $	*/
      2  1.1  rillig # 3 "expr_precedence.c"
      3  1.1  rillig 
      4  1.1  rillig /*
      5  1.1  rillig  * Tests for the precedence among operators.
      6  1.1  rillig  */
      7  1.1  rillig 
      8  1.1  rillig int var;
      9  1.1  rillig 
     10  1.1  rillig /*
     11  1.1  rillig  * An initializer needs an assignment-expression; the comma must be
     12  1.1  rillig  * interpreted as a separator, not an operator.
     13  1.1  rillig  */
     14  1.1  rillig /* expect+1: error: syntax error '4' [249] */
     15  1.1  rillig int init_error = 3, 4;
     16  1.1  rillig 
     17  1.1  rillig /* expect+1: error: non-constant initializer [177] */
     18  1.1  rillig int init_syntactically_ok = var = 1 ? 2 : 3;
     19  1.1  rillig 
     20  1.1  rillig /*
     21  1.1  rillig  * The arguments of __attribute__ must be constant-expression, as assignments
     22  1.1  rillig  * don't make sense at that point.
     23  1.1  rillig  */
     24  1.1  rillig void __attribute__((format(printf,
     25  1.1  rillig     /* expect+2: error: 'var' undefined [99] */ /* XXX: why? */
     26  1.2  rillig     /* expect+1: syntax error '=' [249] */
     27  1.1  rillig     var = 1,
     28  1.1  rillig     /* Syntactically ok, must be a constant expression though. */
     29  1.1  rillig     var > 0 ? 2 : 1)))
     30  1.1  rillig my_printf(const char *, ...);
     31