opt_di.c revision 1.8 1 1.8 rillig /* $NetBSD: opt_di.c,v 1.8 2022/04/24 09:04:12 rillig Exp $ */
2 1.1 rillig
3 1.2 rillig /*
4 1.6 rillig * Test the option '-di', which specifies the indentation of the first
5 1.6 rillig * variable name in a declaration.
6 1.2 rillig */
7 1.2 rillig
8 1.8 rillig //indent input
9 1.1 rillig int space;
10 1.1 rillig int tab;
11 1.1 rillig int tab16;
12 1.1 rillig
13 1.1 rillig struct long_name long_name;
14 1.8 rillig //indent end
15 1.1 rillig
16 1.8 rillig //indent run -di8
17 1.1 rillig int space;
18 1.1 rillig int tab;
19 1.1 rillig int tab16;
20 1.1 rillig
21 1.1 rillig struct long_name long_name;
22 1.8 rillig //indent end
23 1.2 rillig
24 1.2 rillig
25 1.2 rillig /*
26 1.2 rillig * The declarator can be a simple variable name. It can also be prefixed by
27 1.2 rillig * asterisks, for pointer variables. These asterisks are placed to the left of
28 1.2 rillig * the indentation line, so that the variable names are aligned.
29 1.2 rillig *
30 1.2 rillig * There can be multiple declarators in a single declaration, separated by
31 1.2 rillig * commas. Only the first of them is aligned to the indentation given by
32 1.2 rillig * '-di', the others are separated with a single space.
33 1.2 rillig */
34 1.8 rillig //indent input
35 1.2 rillig int var;
36 1.2 rillig int *ptr, *****ptr;
37 1.8 rillig //indent end
38 1.2 rillig
39 1.8 rillig //indent run -di12
40 1.2 rillig int var;
41 1.2 rillig int *ptr, *****ptr;
42 1.8 rillig //indent end
43 1.2 rillig
44 1.2 rillig
45 1.2 rillig /*
46 1.2 rillig * Test the various values for indenting.
47 1.2 rillig */
48 1.8 rillig //indent input
49 1.2 rillig int decl ;
50 1.8 rillig //indent end
51 1.2 rillig
52 1.2 rillig /*
53 1.2 rillig * An indentation of 0 columns uses a single space between the declaration
54 1.2 rillig * specifiers (in this case 'int') and the declarator.
55 1.2 rillig */
56 1.8 rillig //indent run -di0
57 1.2 rillig int decl;
58 1.8 rillig //indent end
59 1.2 rillig
60 1.2 rillig /*
61 1.2 rillig * An indentation of 7 columns uses spaces for indentation since in the
62 1.2 rillig * default configuration, the next tab stop would be at indentation 8.
63 1.2 rillig */
64 1.8 rillig //indent run -di7
65 1.2 rillig int decl;
66 1.8 rillig //indent end
67 1.2 rillig
68 1.2 rillig /* The indentation consists of a single tab. */
69 1.8 rillig //indent run -di8
70 1.2 rillig int decl;
71 1.8 rillig //indent end
72 1.2 rillig
73 1.2 rillig /* The indentation consists of a tab and a space. */
74 1.8 rillig //indent run -di9
75 1.2 rillig int decl;
76 1.8 rillig //indent end
77 1.2 rillig
78 1.8 rillig //indent run -di16
79 1.2 rillig int decl;
80 1.8 rillig //indent end
81 1.2 rillig
82 1.2 rillig
83 1.2 rillig /*
84 1.2 rillig * Ensure that all whitespace is normalized to be indented by 8 columns,
85 1.2 rillig * which in the default configuration amounts to a single tab.
86 1.2 rillig */
87 1.8 rillig //indent input
88 1.2 rillig int space;
89 1.2 rillig int tab;
90 1.2 rillig int tab16;
91 1.2 rillig struct long_name long_name;
92 1.8 rillig //indent end
93 1.2 rillig
94 1.8 rillig //indent run -di8
95 1.2 rillig int space;
96 1.2 rillig int tab;
97 1.2 rillig int tab16;
98 1.2 rillig struct long_name long_name;
99 1.8 rillig //indent end
100 1.3 rillig
101 1.3 rillig
102 1.4 rillig /*
103 1.4 rillig * A variable that has an ad-hoc struct/union/enum type does not need to be
104 1.4 rillig * indented to the right of the keyword 'struct', it only needs a single space
105 1.4 rillig * of indentation.
106 1.4 rillig *
107 1.4 rillig * Before NetBSD indent.c 1.151 from 2021-10-24, the indentation depended on
108 1.4 rillig * the length of the keyword 'struct', 'union' or 'enum', together with type
109 1.4 rillig * qualifiers like 'const' or the storage class like 'static'.
110 1.4 rillig */
111 1.8 rillig //indent input
112 1.3 rillig struct {
113 1.3 rillig int member;
114 1.3 rillig } var = {
115 1.3 rillig 3,
116 1.3 rillig };
117 1.8 rillig //indent end
118 1.3 rillig
119 1.8 rillig //indent run-equals-input -di0
120 1.3 rillig
121 1.8 rillig //indent run
122 1.3 rillig struct {
123 1.3 rillig int member;
124 1.3 rillig } var = {
125 1.3 rillig 3,
126 1.3 rillig };
127 1.8 rillig //indent end
128