Module Name: src Committed By: rillig Date: Sun Jul 11 20:37:21 UTC 2021
Modified Files: src/tests/usr.bin/xlint/lint1: c11_generic_expression.c c11_generic_expression.exp src/usr.bin/xlint/lint1: cgram.y Log Message: lint: make _Generic a primary-expression C11 says so, and unless the _Generic expression was wrapped in parentheses, it was not possible before to use it as a function call expression. To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 \ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c cvs rdiff -u -r1.6 -r1.7 \ src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp cvs rdiff -u -r1.316 -r1.317 src/usr.bin/xlint/lint1/cgram.y Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/tests/usr.bin/xlint/lint1/c11_generic_expression.c diff -u src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.7 src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.8 --- src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.7 Sun Jul 11 20:34:05 2021 +++ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c Sun Jul 11 20:37:21 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: c11_generic_expression.c,v 1.7 2021/07/11 20:34:05 rillig Exp $ */ +/* $NetBSD: c11_generic_expression.c,v 1.8 2021/07/11 20:37:21 rillig Exp $ */ # 3 "c11_generic_expression.c" /* @@ -92,7 +92,5 @@ assignment_expression(int first, int sec int primary_expression(void) { - /*FIXME*//* expect+1: syntax error '(' [249] */ return _Generic(0, int: assignment_expression)(0, 0); } -/* expect-1: falls off */ Index: src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp diff -u src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp:1.6 src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp:1.7 --- src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp:1.6 Sun Jul 11 20:34:05 2021 +++ src/tests/usr.bin/xlint/lint1/c11_generic_expression.exp Sun Jul 11 20:37:21 2021 @@ -4,5 +4,3 @@ c11_generic_expression.c(37): warning: a c11_generic_expression.c(53): warning: argument 'c' unused in function 'classify_char' [231] c11_generic_expression.c(72): error: syntax error 'second' [249] c11_generic_expression.c(77): warning: function comma_expression falls off bottom without returning value [217] -c11_generic_expression.c(96): error: syntax error '(' [249] -c11_generic_expression.c(97): warning: function primary_expression falls off bottom without returning value [217] Index: src/usr.bin/xlint/lint1/cgram.y diff -u src/usr.bin/xlint/lint1/cgram.y:1.316 src/usr.bin/xlint/lint1/cgram.y:1.317 --- src/usr.bin/xlint/lint1/cgram.y:1.316 Sun Jul 11 20:25:54 2021 +++ src/usr.bin/xlint/lint1/cgram.y Sun Jul 11 20:37:21 2021 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.316 2021/07/11 20:25:54 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.317 2021/07/11 20:37:21 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -35,7 +35,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: cgram.y,v 1.316 2021/07/11 20:25:54 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.317 2021/07/11 20:37:21 rillig Exp $"); #endif #include <limits.h> @@ -1722,7 +1722,6 @@ expr: /* C99 6.5 */ $$ = build(COMMA, $1, $3); } | cast_expression - | generic_selection /* TODO: move to primary_expression */ ; assignment_expression: /* C99 6.5.16 */ @@ -1747,6 +1746,7 @@ primary_expression: /* C99 6.5.1 */ $2->tn_parenthesized = true; $$ = $2; } + | generic_selection /* GCC primary-expression, see c_parser_postfix_expression */ | T_BUILTIN_OFFSETOF T_LPAREN type_name T_COMMA identifier T_RPAREN { symtyp = FMEMBER;