Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/xlint/lint1 Add attribute fallthrough



details:   https://anonhg.NetBSD.org/src/rev/200f9ec53b9d
branches:  trunk
changeset: 378418:200f9ec53b9d
user:      christos <christos%NetBSD.org@localhost>
date:      Mon Apr 12 15:55:26 2021 +0000

description:
Add attribute fallthrough

diffstat:

 usr.bin/xlint/lint1/cgram.y |  12 +++++++++---
 usr.bin/xlint/lint1/lex.c   |   5 +++--
 2 files changed, 12 insertions(+), 5 deletions(-)

diffs (81 lines):

diff -r ab9fae04b3a5 -r 200f9ec53b9d usr.bin/xlint/lint1/cgram.y
--- a/usr.bin/xlint/lint1/cgram.y       Mon Apr 12 15:54:55 2021 +0000
+++ b/usr.bin/xlint/lint1/cgram.y       Mon Apr 12 15:55:26 2021 +0000
@@ -1,5 +1,5 @@
 %{
-/* $NetBSD: cgram.y,v 1.211 2021/04/02 12:16:50 rillig Exp $ */
+/* $NetBSD: cgram.y,v 1.212 2021/04/12 15:55:26 christos 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.211 2021/04/02 12:16:50 rillig Exp $");
+__RCSID("$NetBSD: cgram.y,v 1.212 2021/04/12 15:55:26 christos Exp $");
 #endif
 
 #include <limits.h>
@@ -218,6 +218,7 @@ anonymize(sym_t *s)
 %token <y_type>                T_AT_CONSTRUCTOR
 %token <y_type>                T_AT_DEPRECATED
 %token <y_type>                T_AT_DESTRUCTOR
+%token <y_type>                T_AT_FALLTHROUGH
 %token <y_type>                T_AT_FORMAT
 %token <y_type>                T_AT_FORMAT_ARG
 %token <y_type>                T_AT_FORMAT_GNU_PRINTF
@@ -595,6 +596,9 @@ type_attribute_spec:
        | T_AT_WARN_UNUSED_RESULT
        | T_AT_WEAK
        | T_AT_VISIBILITY T_LPAREN constant_expr T_RPAREN
+       | T_AT_FALLTHROUGH {
+               fallthru(1);
+       }
        | T_QUAL {
                if ($1 != CONST)
                        yyerror("Bad attribute");
@@ -1490,7 +1494,8 @@ direct_abstract_decl:
        ;
 
 non_expr_statement:
-         labeled_statement
+         type_attribute T_SEMI
+       | labeled_statement
        | compound_statement
        | selection_statement
        | iteration_statement
@@ -1498,6 +1503,7 @@ non_expr_statement:
                seen_fallthrough = false;
          }
        | asm_statement
+       ;
 
 statement:                     /* C99 6.8 */
          expr_statement
diff -r ab9fae04b3a5 -r 200f9ec53b9d usr.bin/xlint/lint1/lex.c
--- a/usr.bin/xlint/lint1/lex.c Mon Apr 12 15:54:55 2021 +0000
+++ b/usr.bin/xlint/lint1/lex.c Mon Apr 12 15:55:26 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lex.c,v 1.26 2021/04/09 15:58:43 rillig Exp $ */
+/* $NetBSD: lex.c,v 1.27 2021/04/12 15:55:26 christos Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -38,7 +38,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: lex.c,v 1.26 2021/04/09 15:58:43 rillig Exp $");
+__RCSID("$NetBSD: lex.c,v 1.27 2021/04/12 15:55:26 christos Exp $");
 #endif
 
 #include <ctype.h>
@@ -169,6 +169,7 @@ static      struct  kwtab {
        kwdef_token(    "enum",         T_ENUM,                 0,0,0,0,1),
        kwdef_token(    "extension",    T_EXTENSION,            0,0,1,0,4),
        kwdef_sclass(   "extern",       EXTERN,                 0,0,0,0,1),
+       kwdef_token(    "fallthrough",  T_AT_FALLTHROUGH,       0,0,1,1,5),
        kwdef_type(     "float",        FLOAT,                  0,0,0,0,1),
        kwdef_token(    "for",          T_FOR,                  0,0,0,0,1),
        kwdef_token(    "format",       T_AT_FORMAT,            0,0,1,1,5),



Home | Main Index | Thread Index | Old Index