When implementing #52644, where we emit errors when using unknown features, I had to special case two features: libc and test, because they weren't being picked up (and there were time constraints).
The special-casing is here:
|
// `stdbuild` has special handling for `libc`, so we need to |
|
// recognise the feature when building std. |
|
// Likewise, libtest is handled specially, so `test` isn't |
|
// available as we'd like it to be. |
|
// FIXME: only remove `libc` when `stdbuild` is active. |
|
// FIXME: remove special casing for `test`. |
|
remaining_lib_features.remove(&Symbol::intern("libc")); |
|
remaining_lib_features.remove(&Symbol::intern("test")); |
Ideally these should both not be special-cased. The relevant code for feature collection is in src/librustc/middle/lib_features.rs, so that's a good place to start looking.
When implementing #52644, where we emit errors when using unknown features, I had to special case two features:
libcandtest, because they weren't being picked up (and there were time constraints).The special-casing is here:
rust/src/librustc/middle/stability.rs
Lines 840 to 847 in 0aa8d03
libcis declared unlike any other feature:https://github.com/rust-lang/libc/blob/6bdbf5dc937459bd10e6bc4dc52b0adbd8cf4358/src/lib.rs#L92-L94
so it's not entirely surprising that the detection overlooks it, but I didn't find the root cause.
testspecial.Ideally these should both not be special-cased. The relevant code for feature collection is in
src/librustc/middle/lib_features.rs, so that's a good place to start looking.