@@ -163,24 +163,38 @@ pub fn check(path: &Path, bad: &mut bool) {
163
163
}
164
164
} ) ;
165
165
166
+ // FIXME get this whitelist empty.
167
+ let whitelist = vec ! [
168
+ "abi_ptx" , "simd" , "safe_suggestion" , "macro_reexport" ,
169
+ "more_struct_aliases" , "static_recursion" , "reflect" ,
170
+ "quote" , "cfg_target_has_atomic" , "custom_attribute" ,
171
+ "default_type_parameter_fallback" , "pushpop_unsafe" ,
172
+ "use_extern_macros" , "staged_api" , "const_indexing" ,
173
+ "unboxed_closures" , "stmt_expr_attributes" ,
174
+ "cfg_target_thread_local" , "unwind_attributes" ,
175
+ "inclusive_range_syntax"
176
+ ] ;
177
+
166
178
// Only check the number of lang features.
167
179
// Obligatory testing for library features is dumb.
168
180
let gate_untested = features. iter ( )
169
181
. filter ( |& ( _, f) | f. level == Status :: Unstable )
170
182
. filter ( |& ( _, f) | !f. has_gate_test )
171
- . count ( ) ;
183
+ . filter ( |& ( n, _) | !whitelist. contains ( & n. as_str ( ) ) )
184
+ . collect :: < Vec < _ > > ( ) ;
172
185
173
- // FIXME get this number down to zero.
174
- let gate_untested_expected = 94 ;
186
+ for & ( name, _) in gate_untested. iter ( ) {
187
+ println ! ( "Expected a gate test for the feature '{}'." , name) ;
188
+ println ! ( "Hint: create a file named 'feature-gate-{}.rs' in the compile-fail\
189
+ \n test suite, with its failures due to missing usage of\
190
+ \n #![feature({})].", name, name) ;
191
+ println ! ( "Hint: If you already have such a test and don't want to rename it,\
192
+ \n you can also add a // gate-test-{} line to the test file.",
193
+ name) ;
194
+ }
175
195
176
- if gate_untested != gate_untested_expected {
177
- print ! ( "Expected {} gate untested features, but found {}. " ,
178
- gate_untested_expected, gate_untested) ;
179
- if gate_untested < gate_untested_expected {
180
- println ! ( "Did you forget to reduce the expected number?" ) ;
181
- } else {
182
- println ! ( "Did you forget to add a gate test for your new feature?" ) ;
183
- }
196
+ if gate_untested. len ( ) > 0 {
197
+ println ! ( "Found {} features without a gate test." , gate_untested. len( ) ) ;
184
198
* bad = true ;
185
199
}
186
200
@@ -189,7 +203,7 @@ pub fn check(path: &Path, bad: &mut bool) {
189
203
}
190
204
191
205
let mut lines = Vec :: new ( ) ;
192
- for ( name, feature) in features {
206
+ for ( name, feature) in features. iter ( ) {
193
207
lines. push ( format ! ( "{:<32} {:<8} {:<12} {:<8}" ,
194
208
name,
195
209
"lang" ,
0 commit comments