Auto merge of #4364 - RalfJung:feat, r=alexcrichton
authorbors <bors@rust-lang.org>
Sun, 20 Aug 2017 12:57:50 +0000 (12:57 +0000)
committerbors <bors@rust-lang.org>
Sun, 20 Aug 2017 12:57:50 +0000 (12:57 +0000)
Required dependencies are not features

Also, while I was at it, I fixed an error message which complained about something not being an optional dependency, when really what mattered was that it was not a dependency at all.

I made a bunch of guesses about how things work. These guesses ended up as comments in the commit (so hopefully, the next reader of these files has to guess less). I am not totally certain these comments are all correct, so please yell if not. :)

In particular, for resolve_features, I observed that dependencies get compiled even when they are not returned from that function. But judging from how the function used to behave, it actually returns all dependencies, even those that have nothing to do with any features. (Making the name rather misleading, TBH...)

Fixes #4363


Trivial merge