Author: pstef
Date: Fri Jun  1 09:41:15 2018
New Revision: 334478
URL: https://svnweb.freebsd.org/changeset/base/334478

Log:
  indent(1): don't indent typedef declarations as object declarations

Modified:
  head/usr.bin/indent/indent.c
  head/usr.bin/indent/indent_codes.h
  head/usr.bin/indent/lexi.c
  head/usr.bin/indent/tests/declarations.0
  head/usr.bin/indent/tests/declarations.0.stdout

Modified: head/usr.bin/indent/indent.c
==============================================================================
--- head/usr.bin/indent/indent.c        Fri Jun  1 09:32:42 2018        
(r334477)
+++ head/usr.bin/indent/indent.c        Fri Jun  1 09:41:15 2018        
(r334478)
@@ -937,6 +937,7 @@ check_type:
            }
            goto copy_id;       /* move the token into line */
 
+       case type_def:
        case storage:
            prefix_blankline_requested = 0;
            goto copy_id;
@@ -955,7 +956,7 @@ check_type:
            }
            ps.in_or_st = true; /* this might be a structure or initialization
                                 * declaration */
-           ps.in_decl = ps.decl_on_line = true;
+           ps.in_decl = ps.decl_on_line = ps.last_token != type_def;
            if ( /* !ps.in_or_st && */ ps.dec_nest <= 0)
                ps.just_saw_decl = 2;
            prefix_blankline_requested = 0;

Modified: head/usr.bin/indent/indent_codes.h
==============================================================================
--- head/usr.bin/indent/indent_codes.h  Fri Jun  1 09:32:42 2018        
(r334477)
+++ head/usr.bin/indent/indent_codes.h  Fri Jun  1 09:41:15 2018        
(r334478)
@@ -73,3 +73,5 @@
 #define strpfx         33
 #define storage                34
 #define funcname       35
+#define type_def       36
+

Modified: head/usr.bin/indent/lexi.c
==============================================================================
--- head/usr.bin/indent/lexi.c  Fri Jun  1 09:32:42 2018        (r334477)
+++ head/usr.bin/indent/lexi.c  Fri Jun  1 09:41:15 2018        (r334478)
@@ -100,7 +100,7 @@ struct templ specials[] =
     {"static", 10},
     {"struct", 3},
     {"switch", 7},
-    {"typedef", 10},
+    {"typedef", 11},
     {"union", 3},
     {"unsigned", 4},
     {"void", 4},
@@ -349,6 +349,9 @@ lexi(void)
 
            case 10:            /* storage class specifier */
                return (storage);
+
+           case 11:            /* typedef */
+               return (type_def);
 
            default:            /* all others are treated like any other
                                 * identifier */

Modified: head/usr.bin/indent/tests/declarations.0
==============================================================================
--- head/usr.bin/indent/tests/declarations.0    Fri Jun  1 09:32:42 2018        
(r334477)
+++ head/usr.bin/indent/tests/declarations.0    Fri Jun  1 09:41:15 2018        
(r334478)
@@ -1,6 +1,8 @@
 /* $FreeBSD$ */
 /* See r303570 */
 
+typedef void   (*voidptr) (int *);
+
 static const struct
 {
        double          x;

Modified: head/usr.bin/indent/tests/declarations.0.stdout
==============================================================================
--- head/usr.bin/indent/tests/declarations.0.stdout     Fri Jun  1 09:32:42 
2018        (r334477)
+++ head/usr.bin/indent/tests/declarations.0.stdout     Fri Jun  1 09:41:15 
2018        (r334478)
@@ -1,6 +1,8 @@
 /* $FreeBSD$ */
 /* See r303570 */
 
+typedef void (*voidptr) (int *);
+
 static const struct {
        double          x;
        double          y, z;
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to