Module Name: src Committed By: rillig Date: Mon Jun 28 07:55:05 UTC 2021
Modified Files: src/tests/usr.bin/xlint/lint1: c11_generic_expression.c src/usr.bin/xlint/lint1: cgram.y Log Message: lint: only accept assignment-expression in _Generic That's what C11 says. To generate a diff of this commit: cvs rdiff -u -r1.5 -r1.6 \ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c cvs rdiff -u -r1.241 -r1.242 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.5 src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.6 --- src/tests/usr.bin/xlint/lint1/c11_generic_expression.c:1.5 Sun Jun 27 21:30:46 2021 +++ src/tests/usr.bin/xlint/lint1/c11_generic_expression.c Mon Jun 28 07:55:05 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: c11_generic_expression.c,v 1.5 2021/06/27 21:30:46 rillig Exp $ */ +/* $NetBSD: c11_generic_expression.c,v 1.6 2021/06/28 07:55:05 rillig Exp $ */ # 3 "c11_generic_expression.c" /* @@ -75,3 +75,16 @@ comma_expression(char first, double seco ); /* expect+1: without returning value [217] */ } + +/* + * Ensure that assignment-expressions are accepted by the grammar, as + * opposed to comma-expressions. + */ +/* ARGSUSED */ +int +assignment_expression(int first, int second) +{ + return _Generic(first = second, + int: second = first + ); +} Index: src/usr.bin/xlint/lint1/cgram.y diff -u src/usr.bin/xlint/lint1/cgram.y:1.241 src/usr.bin/xlint/lint1/cgram.y:1.242 --- src/usr.bin/xlint/lint1/cgram.y:1.241 Sun Jun 27 21:52:18 2021 +++ src/usr.bin/xlint/lint1/cgram.y Mon Jun 28 07:55:05 2021 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: cgram.y,v 1.241 2021/06/27 21:52:18 rillig Exp $ */ +/* $NetBSD: cgram.y,v 1.242 2021/06/28 07:55:05 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.241 2021/06/27 21:52:18 rillig Exp $"); +__RCSID("$NetBSD: cgram.y,v 1.242 2021/06/28 07:55:05 rillig Exp $"); #endif #include <limits.h> @@ -1659,12 +1659,12 @@ generic_assoc_list: /* C11 6.5.1.1 */ ; generic_association: /* C11 6.5.1.1 */ - type_name T_COLON expr { + type_name T_COLON assignment_expression { $$ = getblk(sizeof(*$$)); $$->gat_arg = $1; $$->gat_result = $3; } - | T_DEFAULT T_COLON expr { + | T_DEFAULT T_COLON assignment_expression { $$ = getblk(sizeof(*$$)); $$->gat_arg = NULL; $$->gat_result = $3;