adlint 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,183 @@
1
+ Feature: W0697
2
+
3
+ W0697 detects that some execution paths terminate implicitly without explicit
4
+ `return' statements in the non-void function.
5
+
6
+ Scenario: no `return' statement in non-void function
7
+ Given a target source named "W0697.c" with:
8
+ """
9
+ extern int func(void) /* W0697 */
10
+ {
11
+ }
12
+ """
13
+ When I successfully run `adlint W0697.c` on noarch
14
+ Then the output should exactly match with:
15
+ | mesg | line | column |
16
+ | W0117 | 1 | 12 |
17
+ | W0697 | 1 | 12 |
18
+ | W0628 | 1 | 12 |
19
+
20
+ Scenario: a `return' statement is only in a `if' statement
21
+ Given a target source named "W0697.c" with:
22
+ """
23
+ extern int func(int value) /* W0697 */
24
+ {
25
+ if (value == 0) {
26
+ return 0;
27
+ }
28
+ }
29
+ """
30
+ When I successfully run `adlint W0697.c` on noarch
31
+ Then the output should exactly match with:
32
+ | mesg | line | column |
33
+ | W0117 | 1 | 12 |
34
+ | W0697 | 1 | 12 |
35
+ | W0104 | 1 | 21 |
36
+ | W0628 | 1 | 12 |
37
+
38
+ Scenario: `return' statements are only in a `if-else-if' statements chain
39
+ Given a target source named "W0697.c" with:
40
+ """
41
+ extern int func(int value) /* W0697 */
42
+ {
43
+ if (value == 0) {
44
+ return 0;
45
+ } else if (value == 1) {
46
+ return 1;
47
+ }
48
+ }
49
+ """
50
+ When I successfully run `adlint W0697.c` on noarch
51
+ Then the output should exactly match with:
52
+ | mesg | line | column |
53
+ | W0117 | 1 | 12 |
54
+ | W0697 | 1 | 12 |
55
+ | W0104 | 1 | 21 |
56
+ | W1069 | 3 | 5 |
57
+ | W0628 | 1 | 12 |
58
+
59
+ Scenario: `return' statements are in all `case' clauses but not in the
60
+ `default` clause
61
+ Given a target source named "W0697.c" with:
62
+ """
63
+ extern int func(int value) /* W0697 */
64
+ {
65
+ switch (value) {
66
+ case 1:
67
+ return 0;
68
+ case 2:
69
+ return 1;
70
+ case 3:
71
+ return 2;
72
+ default:
73
+ break;
74
+ }
75
+ }
76
+ """
77
+ When I successfully run `adlint W0697.c` on noarch
78
+ Then the output should exactly match with:
79
+ | mesg | line | column |
80
+ | W0117 | 1 | 12 |
81
+ | W0697 | 1 | 12 |
82
+ | W0104 | 1 | 21 |
83
+ | W0628 | 1 | 12 |
84
+
85
+ Scenario: a `return' statement in non-void function
86
+ Given a target source named "W0697.c" with:
87
+ """
88
+ extern int func(void) /* OK */
89
+ {
90
+ return 1;
91
+ }
92
+ """
93
+ When I successfully run `adlint W0697.c` on noarch
94
+ Then the output should exactly match with:
95
+ | mesg | line | column |
96
+ | W0117 | 1 | 12 |
97
+ | W0628 | 1 | 12 |
98
+
99
+ Scenario: no implicit termination in all execution paths
100
+ Given a target source named "W0697.c" with:
101
+ """
102
+ extern int func(int value) /* OK */
103
+ {
104
+ if (value == 0) {
105
+ return 0;
106
+ }
107
+ return 1;
108
+ }
109
+ """
110
+ When I successfully run `adlint W0697.c` on noarch
111
+ Then the output should exactly match with:
112
+ | mesg | line | column |
113
+ | W0117 | 1 | 12 |
114
+ | W0104 | 1 | 21 |
115
+ | W0628 | 1 | 12 |
116
+
117
+ Scenario: no implicit termination in `if-else-if' statements chain
118
+ Given a target source named "W0697.c" with:
119
+ """
120
+ extern int func(int value) /* OK */
121
+ {
122
+ if (value == 0) {
123
+ return 0;
124
+ } else if (value == 1) {
125
+ return 1;
126
+ } else {
127
+ return 2;
128
+ }
129
+ }
130
+ """
131
+ When I successfully run `adlint W0697.c` on noarch
132
+ Then the output should exactly match with:
133
+ | mesg | line | column |
134
+ | W0117 | 1 | 12 |
135
+ | W0104 | 1 | 21 |
136
+ | W0628 | 1 | 12 |
137
+
138
+ Scenario: no implicit termination with `switch' statement
139
+ Given a target source named "W0697.c" with:
140
+ """
141
+ extern int func(int value) /* OK */
142
+ {
143
+ switch (value) {
144
+ case 1:
145
+ return 0;
146
+ case 2:
147
+ return 1;
148
+ case 3:
149
+ return 2;
150
+ default:
151
+ break;
152
+ }
153
+ return 10;
154
+ }
155
+ """
156
+ When I successfully run `adlint W0697.c` on noarch
157
+ Then the output should exactly match with:
158
+ | mesg | line | column |
159
+ | W0117 | 1 | 12 |
160
+ | W0104 | 1 | 21 |
161
+ | W0628 | 1 | 12 |
162
+
163
+ Scenario: no implicit termination with `goto' statement
164
+ Given a target source named "W0697.c" with:
165
+ """
166
+ extern int func(int value) /* OK */
167
+ {
168
+ if (value == 10) {
169
+ goto A;
170
+ }
171
+ A:
172
+ return 1;
173
+ }
174
+ """
175
+ When I successfully run `adlint W0697.c` on noarch
176
+ Then the output should exactly match with:
177
+ | mesg | line | column |
178
+ | W0117 | 1 | 12 |
179
+ | W0104 | 1 | 21 |
180
+ | W1072 | 4 | 9 |
181
+ | W0628 | 1 | 12 |
182
+
183
+ # vim:ts=2:sw=2:sts=2:et:
@@ -14,6 +14,7 @@ Feature: W0699
14
14
  Then the output should exactly match with:
15
15
  | mesg | line | column |
16
16
  | W0117 | 1 | 8 |
17
+ | W0700 | 1 | 8 |
17
18
  | W0457 | 1 | 8 |
18
19
  | W0699 | 3 | 5 |
19
20
  | W0628 | 1 | 8 |
@@ -0,0 +1,56 @@
1
+ Feature: W0700
2
+
3
+ W0700 detects that no `return' statements with expression is in the function
4
+ which is implicitly declared to return `int' value.
5
+
6
+ Scenario: no `return' statement in the implicitly typed function
7
+ Given a target source named "W0700.c" with:
8
+ """
9
+ extern func(void) /* W0700 */
10
+ {
11
+ }
12
+ """
13
+ When I successfully run `adlint W0700.c` on noarch
14
+ Then the output should exactly match with:
15
+ | mesg | line | column |
16
+ | W0117 | 1 | 8 |
17
+ | W0697 | 1 | 8 |
18
+ | W0700 | 1 | 8 |
19
+ | W0457 | 1 | 8 |
20
+ | W0628 | 1 | 8 |
21
+
22
+ Scenario: a `return' statement without expression in the implicitly typed
23
+ function
24
+ Given a target source named "W0700.c" with:
25
+ """
26
+ extern func(void) /* W0700 */
27
+ {
28
+ return;
29
+ }
30
+ """
31
+ When I successfully run `adlint W0700.c` on noarch
32
+ Then the output should exactly match with:
33
+ | mesg | line | column |
34
+ | W0117 | 1 | 8 |
35
+ | W0700 | 1 | 8 |
36
+ | W0457 | 1 | 8 |
37
+ | W0699 | 3 | 5 |
38
+ | W0628 | 1 | 8 |
39
+
40
+ Scenario: a `return' statement with expression in the implicitly typed
41
+ function
42
+ Given a target source named "W0700.c" with:
43
+ """
44
+ extern func(void) /* OK */
45
+ {
46
+ return 0;
47
+ }
48
+ """
49
+ When I successfully run `adlint W0700.c` on noarch
50
+ Then the output should exactly match with:
51
+ | mesg | line | column |
52
+ | W0117 | 1 | 8 |
53
+ | W0457 | 1 | 8 |
54
+ | W0628 | 1 | 8 |
55
+
56
+ # vim:ts=2:sw=2:sts=2:et:
@@ -4,7 +4,7 @@ Feature: W1031
4
4
  storage-class-specifiers.
5
5
 
6
6
  Scenario: function declaration with `static' and function definition without
7
- storage-class-specifier.
7
+ storage-class-specifier
8
8
  Given a target source named "W1031.c" with:
9
9
  """
10
10
  static int foo(long);
@@ -22,7 +22,7 @@ Feature: W1031
22
22
  | W0628 | 3 | 5 |
23
23
 
24
24
  Scenario: function declaration with `extern' and function definition without
25
- storage-class-specifier.
25
+ storage-class-specifier
26
26
  Given a target source named "W1031.c" with:
27
27
  """
28
28
  extern int foo(long);
@@ -40,7 +40,7 @@ Feature: W1031
40
40
  | W0628 | 3 | 5 |
41
41
 
42
42
  Scenario: function declaration without storage-class-specifier and function
43
- definition without storage-class-specifier.
43
+ definition without storage-class-specifier
44
44
  Given a target source named "W1031.c" with:
45
45
  """
46
46
  int foo(long);
@@ -58,7 +58,7 @@ Feature: W1031
58
58
  | W0628 | 3 | 5 |
59
59
 
60
60
  Scenario: function declaration without storage-class-specifier and function
61
- definition with `static'.
61
+ definition with `static'
62
62
  Given a target source named "W1031.c" with:
63
63
  """
64
64
  int foo(long);
@@ -76,7 +76,7 @@ Feature: W1031
76
76
  | W0628 | 3 | 12 |
77
77
 
78
78
  Scenario: function declaration without storage-class-specifier and function
79
- definition with `extern'.
79
+ definition with `extern'
80
80
  Given a target source named "W1031.c" with:
81
81
  """
82
82
  int foo(long);
@@ -94,7 +94,7 @@ Feature: W1031
94
94
  | W0628 | 3 | 12 |
95
95
 
96
96
  Scenario: function declaration with `static' and function definition with
97
- `extern'.
97
+ `extern'
98
98
  Given a target source named "W1031.c" with:
99
99
  """
100
100
  static int foo(long);
@@ -113,7 +113,7 @@ Feature: W1031
113
113
  | W0628 | 3 | 12 |
114
114
 
115
115
  Scenario: function declaration with `extern' and function definition with
116
- `static'.
116
+ `static'
117
117
  Given a target source named "W1031.c" with:
118
118
  """
119
119
  extern int foo(long);
@@ -132,7 +132,7 @@ Feature: W1031
132
132
  | W0628 | 3 | 12 |
133
133
 
134
134
  Scenario: variable declaration with `extern' and variable definition without
135
- storage-class-specifier.
135
+ storage-class-specifier
136
136
  Given a target source named "W1031.c" with:
137
137
  """
138
138
  extern int i;
@@ -145,7 +145,7 @@ Feature: W1031
145
145
  | W0118 | 1 | 12 |
146
146
 
147
147
  Scenario: variable definition without storage-class-specifier and variable
148
- declaration with `extern'.
148
+ declaration with `extern'
149
149
  Given a target source named "W1031.c" with:
150
150
  """
151
151
  int i;
@@ -159,7 +159,7 @@ Feature: W1031
159
159
  | W0118 | 2 | 12 |
160
160
 
161
161
  Scenario: function declaration with `static' and function definition with
162
- `extern'.
162
+ `extern'
163
163
  Given a target source named "W1031.c" with:
164
164
  """
165
165
  static int i;
@@ -172,7 +172,7 @@ Feature: W1031
172
172
  | W1031 | 2 | 12 |
173
173
 
174
174
  Scenario: variable declaration with `extern' and variable definition with
175
- `static'.
175
+ `static'
176
176
  Given a target source named "W1031.c" with:
177
177
  """
178
178
  extern int i;
@@ -186,7 +186,7 @@ Feature: W1031
186
186
  | W1031 | 2 | 12 |
187
187
 
188
188
  Scenario: function definition with `static' and function declaration without
189
- storage-class-specifier.
189
+ storage-class-specifier
190
190
  Given a target source named "W1031.c" with:
191
191
  """
192
192
  static int foo(long l) {
@@ -205,7 +205,7 @@ Feature: W1031
205
205
  | W0628 | 1 | 12 |
206
206
 
207
207
  Scenario: function definition with `extern' and function declaration without
208
- storage-class-specifier.
208
+ storage-class-specifier
209
209
  Given a target source named "W1031.c" with:
210
210
  """
211
211
  extern int foo(long l) {
@@ -225,7 +225,7 @@ Feature: W1031
225
225
  | W0628 | 1 | 12 |
226
226
 
227
227
  Scenario: function definition without storage-class-specifier and function
228
- declaration without storage-class-specifier.
228
+ declaration without storage-class-specifier
229
229
  Given a target source named "W1031.c" with:
230
230
  """
231
231
  int foo(long l) {
@@ -245,7 +245,7 @@ Feature: W1031
245
245
  | W0628 | 1 | 5 |
246
246
 
247
247
  Scenario: function definition without storage-class-specifier and function
248
- declaration with `static'.
248
+ declaration with `static'
249
249
  Given a target source named "W1031.c" with:
250
250
  """
251
251
  int foo(long l) {
@@ -266,7 +266,7 @@ Feature: W1031
266
266
  | W0628 | 1 | 5 |
267
267
 
268
268
  Scenario: function definition without storage-class-specifier and function
269
- declaration with `extern'.
269
+ declaration with `extern'
270
270
  Given a target source named "W1031.c" with:
271
271
  """
272
272
  int foo(long l) {
@@ -286,7 +286,7 @@ Feature: W1031
286
286
  | W0628 | 1 | 5 |
287
287
 
288
288
  Scenario: function definition with `static' and function declaration with
289
- `extern'.
289
+ `extern'
290
290
  Given a target source named "W1031.c" with:
291
291
  """
292
292
  static int foo(long l) {
@@ -305,7 +305,7 @@ Feature: W1031
305
305
  | W0628 | 1 | 12 |
306
306
 
307
307
  Scenario: function definition with `extern' and function declaration with
308
- `static'.
308
+ `static'
309
309
  Given a target source named "W1031.c" with:
310
310
  """
311
311
  extern int foo(long l) {
@@ -0,0 +1,88 @@
1
+ Feature: W1066
2
+
3
+ W1066 detects that a value of the `float' typed compound expression is
4
+ explicitly converted into a `double' value.
5
+
6
+ Scenario: explicit conversion from `float' to `double' when the source value
7
+ is derived from `+', `-', `*' or `/' expressions
8
+ Given a target source named "W1066.c" with:
9
+ """
10
+ static void func(float a, float b)
11
+ {
12
+ double c;
13
+ c = (double) (a + b); /* W1066 */
14
+ c = (double) (a - b); /* W1066 */
15
+ c = (double) (a * b); /* W1066 */
16
+ c = (double) (a / b); /* W1066 */
17
+ }
18
+ """
19
+ When I successfully run `adlint W1066.c` on noarch
20
+ Then the output should exactly match with:
21
+ | mesg | line | column |
22
+ | W0723 | 4 | 21 |
23
+ | W1066 | 4 | 21 |
24
+ | W0723 | 5 | 21 |
25
+ | W1066 | 5 | 21 |
26
+ | W0723 | 6 | 21 |
27
+ | W1066 | 6 | 21 |
28
+ | W0093 | 7 | 21 |
29
+ | W1066 | 7 | 21 |
30
+ | W0104 | 1 | 24 |
31
+ | W0104 | 1 | 33 |
32
+ | W0629 | 1 | 13 |
33
+ | W0628 | 1 | 13 |
34
+
35
+ Scenario: explicit conversion from `float' to `double' when the source value
36
+ is not derived from `+', `-', `*' or `/' expressions
37
+ Given a target source named "W1066.c" with:
38
+ """
39
+ static void func(float a, float b)
40
+ {
41
+ double c;
42
+ c = (double) (a % b); /* OK */
43
+ c = (double) (a < b); /* OK */
44
+ c = (double) (a << b); /* OK */
45
+ c = (double) (a ^ b); /* OK */
46
+ }
47
+ """
48
+ When I successfully run `adlint W1066.c` on noarch
49
+ Then the output should exactly match with:
50
+ | mesg | line | column |
51
+ | W0093 | 4 | 21 |
52
+ | W0570 | 6 | 21 |
53
+ | W0572 | 6 | 21 |
54
+ | W0572 | 7 | 21 |
55
+ | W0104 | 1 | 24 |
56
+ | W0104 | 1 | 33 |
57
+ | W0629 | 1 | 13 |
58
+ | W0628 | 1 | 13 |
59
+
60
+ Scenario: implicit conversion from `float' to `double'
61
+ Given a target source named "W1066.c" with:
62
+ """
63
+ static void func(float a, float b)
64
+ {
65
+ double c;
66
+ c = a + b; /* W0777 */
67
+ c = a - b; /* W0777 */
68
+ c = a * b; /* W0777 */
69
+ c = a / b; /* W0777 */
70
+ }
71
+ """
72
+ When I successfully run `adlint W1066.c` on noarch
73
+ Then the output should exactly match with:
74
+ | mesg | line | column |
75
+ | W0723 | 4 | 11 |
76
+ | W0777 | 4 | 11 |
77
+ | W0723 | 5 | 11 |
78
+ | W0777 | 5 | 11 |
79
+ | W0723 | 6 | 11 |
80
+ | W0777 | 6 | 11 |
81
+ | W0093 | 7 | 11 |
82
+ | W0777 | 7 | 11 |
83
+ | W0104 | 1 | 24 |
84
+ | W0104 | 1 | 33 |
85
+ | W0629 | 1 | 13 |
86
+ | W0628 | 1 | 13 |
87
+
88
+ # vim:ts=2:sw=2:sts=2:et:
@@ -0,0 +1,88 @@
1
+ Feature: W1067
2
+
3
+ W1067 detects that a value of the `float' typed compound expression is
4
+ explicitly converted into a `long double' value.
5
+
6
+ Scenario: explicit conversion from `float' to `double' when the source value
7
+ is derived from `+', `-', `*' or `/' expressions
8
+ Given a target source named "W1067.c" with:
9
+ """
10
+ static void func(float a, float b)
11
+ {
12
+ long double c;
13
+ c = (long double) (a + b); /* W1067 */
14
+ c = (long double) (a - b); /* W1067 */
15
+ c = (long double) (a * b); /* W1067 */
16
+ c = (long double) (a / b); /* W1067 */
17
+ }
18
+ """
19
+ When I successfully run `adlint W1067.c` on noarch
20
+ Then the output should exactly match with:
21
+ | mesg | line | column |
22
+ | W0723 | 4 | 26 |
23
+ | W1067 | 4 | 26 |
24
+ | W0723 | 5 | 26 |
25
+ | W1067 | 5 | 26 |
26
+ | W0723 | 6 | 26 |
27
+ | W1067 | 6 | 26 |
28
+ | W0093 | 7 | 26 |
29
+ | W1067 | 7 | 26 |
30
+ | W0104 | 1 | 24 |
31
+ | W0104 | 1 | 33 |
32
+ | W0629 | 1 | 13 |
33
+ | W0628 | 1 | 13 |
34
+
35
+ Scenario: explicit conversion from `float' to `double' when the source value
36
+ is not derived from `+', `-', `*' or `/' expressions
37
+ Given a target source named "W1067.c" with:
38
+ """
39
+ static void func(float a, float b)
40
+ {
41
+ long double c;
42
+ c = (long double) (a % b); /* OK */
43
+ c = (long double) (a < b); /* OK */
44
+ c = (long double) (a << b); /* OK */
45
+ c = (long double) (a ^ b); /* OK */
46
+ }
47
+ """
48
+ When I successfully run `adlint W1067.c` on noarch
49
+ Then the output should exactly match with:
50
+ | mesg | line | column |
51
+ | W0093 | 4 | 26 |
52
+ | W0570 | 6 | 26 |
53
+ | W0572 | 6 | 26 |
54
+ | W0572 | 7 | 26 |
55
+ | W0104 | 1 | 24 |
56
+ | W0104 | 1 | 33 |
57
+ | W0629 | 1 | 13 |
58
+ | W0628 | 1 | 13 |
59
+
60
+ Scenario: implicit conversion from `float' to `long double'
61
+ Given a target source named "W1067.c" with:
62
+ """
63
+ static void func(float a, float b)
64
+ {
65
+ long double c;
66
+ c = a + b; /* W0778 */
67
+ c = a - b; /* W0778 */
68
+ c = a * b; /* W0778 */
69
+ c = a / b; /* W0778 */
70
+ }
71
+ """
72
+ When I successfully run `adlint W1067.c` on noarch
73
+ Then the output should exactly match with:
74
+ | mesg | line | column |
75
+ | W0723 | 4 | 11 |
76
+ | W0778 | 4 | 11 |
77
+ | W0723 | 5 | 11 |
78
+ | W0778 | 5 | 11 |
79
+ | W0723 | 6 | 11 |
80
+ | W0778 | 6 | 11 |
81
+ | W0093 | 7 | 11 |
82
+ | W0778 | 7 | 11 |
83
+ | W0104 | 1 | 24 |
84
+ | W0104 | 1 | 33 |
85
+ | W0629 | 1 | 13 |
86
+ | W0628 | 1 | 13 |
87
+
88
+ # vim:ts=2:sw=2:sts=2:et:
@@ -0,0 +1,88 @@
1
+ Feature: W1068
2
+
3
+ W1068 detects that a value of the `double' typed compound expression is
4
+ explicitly converted into a `long double' value.
5
+
6
+ Scenario: explicit conversion from `double' to `long double' when the source
7
+ value is derived from `+', `-', `*' or `/' expressions
8
+ Given a target source named "W1068.c" with:
9
+ """
10
+ static void func(double a, double b)
11
+ {
12
+ long double c;
13
+ c = (long double) (a + b); /* W1068 */
14
+ c = (long double) (a - b); /* W1068 */
15
+ c = (long double) (a * b); /* W1068 */
16
+ c = (long double) (a / b); /* W1068 */
17
+ }
18
+ """
19
+ When I successfully run `adlint W1068.c` on noarch
20
+ Then the output should exactly match with:
21
+ | mesg | line | column |
22
+ | W0723 | 4 | 26 |
23
+ | W1068 | 4 | 26 |
24
+ | W0723 | 5 | 26 |
25
+ | W1068 | 5 | 26 |
26
+ | W0723 | 6 | 26 |
27
+ | W1068 | 6 | 26 |
28
+ | W0093 | 7 | 26 |
29
+ | W1068 | 7 | 26 |
30
+ | W0104 | 1 | 25 |
31
+ | W0104 | 1 | 35 |
32
+ | W0629 | 1 | 13 |
33
+ | W0628 | 1 | 13 |
34
+
35
+ Scenario: explicit conversion from `double' to `long double' when the source
36
+ value is not derived from `+', `-', `*' or `/' expressions
37
+ Given a target source named "W1068.c" with:
38
+ """
39
+ static void func(double a, double b)
40
+ {
41
+ long double c;
42
+ c = (long double) (a % b); /* OK */
43
+ c = (long double) (a < b); /* OK */
44
+ c = (long double) (a << b); /* OK */
45
+ c = (long double) (a ^ b); /* OK */
46
+ }
47
+ """
48
+ When I successfully run `adlint W1068.c` on noarch
49
+ Then the output should exactly match with:
50
+ | mesg | line | column |
51
+ | W0093 | 4 | 26 |
52
+ | W0570 | 6 | 26 |
53
+ | W0572 | 6 | 26 |
54
+ | W0572 | 7 | 26 |
55
+ | W0104 | 1 | 25 |
56
+ | W0104 | 1 | 35 |
57
+ | W0629 | 1 | 13 |
58
+ | W0628 | 1 | 13 |
59
+
60
+ Scenario: implicit conversion from `double' to `long double'
61
+ Given a target source named "W1068.c" with:
62
+ """
63
+ static void func(double a, double b)
64
+ {
65
+ long double c;
66
+ c = a + b; /* W0779 */
67
+ c = a - b; /* W0779 */
68
+ c = a * b; /* W0779 */
69
+ c = a / b; /* W0779 */
70
+ }
71
+ """
72
+ When I successfully run `adlint W1068.c` on noarch
73
+ Then the output should exactly match with:
74
+ | mesg | line | column |
75
+ | W0723 | 4 | 11 |
76
+ | W0779 | 4 | 11 |
77
+ | W0723 | 5 | 11 |
78
+ | W0779 | 5 | 11 |
79
+ | W0723 | 6 | 11 |
80
+ | W0779 | 6 | 11 |
81
+ | W0093 | 7 | 11 |
82
+ | W0779 | 7 | 11 |
83
+ | W0104 | 1 | 25 |
84
+ | W0104 | 1 | 35 |
85
+ | W0629 | 1 | 13 |
86
+ | W0628 | 1 | 13 |
87
+
88
+ # vim:ts=2:sw=2:sts=2:et: