forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Rollup merge of rust-lang#113091 - GuillaumeGomez:prevent-cfg-merge-reexport, r=rustdoc Don't merge cfg and doc(cfg) attributes for re-exports Fixes rust-lang#112881. ## Explanations When re-exporting things with different `cfg`s there are two things that can happen: * The re-export uses a subset of `cfg`s, this subset is sufficient so that the item will appear exactly with the subset * The re-export uses a non-subset of `cfg`s (e.g. like the example I posted just above where the re-export is ungated), if the non-subset `cfg`s are active (e.g. compiling that example on windows) then this will be a compile error as the item doesn't exist to re-export, if the subset `cfg`s are active it behaves like 1. ### Glob re-exports? **This only applies to non-glob inlined re-exports.** For glob re-exports the item may or may not exist to be re-exported (potentially the `cfg`s on the path up until the glob can be removed, and only `cfg`s on the globbed item itself matter), for non-inlined re-exports see rust-lang#85043. cc `@Nemo157` r? `@notriddle`
- Loading branch information
Showing
5 changed files
with
78 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// This test ensures that only the re-export `cfg` will be displayed and that it won't | ||
// include `cfg`s from the previous chained items. | ||
|
||
#![crate_name = "foo"] | ||
#![feature(doc_auto_cfg, doc_cfg)] | ||
|
||
mod foo { | ||
#[cfg(not(feature = "foo"))] | ||
pub struct Bar; | ||
|
||
#[doc(cfg(not(feature = "bar")))] | ||
pub struct Bar2; | ||
} | ||
|
||
// @has 'foo/index.html' | ||
// @has - '//*[@class="item-name"]' 'BabarNon-lie' | ||
#[cfg(not(feature = "lie"))] | ||
pub use crate::foo::Bar as Babar; | ||
|
||
// @has - '//*[@class="item-name"]' 'Babar2Non-cake' | ||
#[doc(cfg(not(feature = "cake")))] | ||
pub use crate::foo::Bar2 as Babar2; | ||
|
||
// @has - '//*[@class="item-table"]/li' 'pub use crate::Babar as Elephant;Non-robot' | ||
#[cfg(not(feature = "robot"))] | ||
pub use crate::Babar as Elephant; | ||
|
||
// @has - '//*[@class="item-table"]/li' 'pub use crate::Babar2 as Elephant2;Non-cat' | ||
#[doc(cfg(not(feature = "cat")))] | ||
pub use crate::Babar2 as Elephant2; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters