forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use more appropriate return type for
resolve_associated_item
Previously, the types looked like this: - None means this is not an associated item (but may be a variant field) - Some(Err) means this is known to be an error. I think the only way that can happen is if it resolved and but you had your own anchor. - Some(Ok(_, None)) was impossible. Now, this returns a nested Option and does the error handling and fiddling with the side channel in the caller. As a side-effect, it also removes duplicate error handling. This has one small change in behavior, which is that `resolve_primitive_associated_item` now goes through `variant_field` if it fails to resolve something. This is not ideal, but since it will be quickly rejected anyway, I think the performance hit is worth the cleanup. This also fixes a bug where struct fields would forget to set the side channel, adds a test for the bug, and ignores `private_intra_doc_links` in rustc_resolve (since it's always documented with --document-private-items).
- Loading branch information
Showing
6 changed files
with
103 additions
and
98 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 |
---|---|---|
@@ -1,19 +1,27 @@ | ||
warning: public documentation for `DocMe` links to private item `DontDocMe` | ||
--> $DIR/private.rs:5:11 | ||
--> $DIR/private.rs:7:11 | ||
| | ||
LL | /// docs [DontDocMe] [DontDocMe::f] | ||
LL | /// docs [DontDocMe] [DontDocMe::f] [DontDocMe::x] | ||
| ^^^^^^^^^ this item is private | ||
| | ||
= note: `#[warn(rustdoc::private_intra_doc_links)]` on by default | ||
= note: this link resolves only because you passed `--document-private-items`, but will break without | ||
|
||
warning: public documentation for `DocMe` links to private item `DontDocMe::f` | ||
--> $DIR/private.rs:5:23 | ||
--> $DIR/private.rs:7:23 | ||
| | ||
LL | /// docs [DontDocMe] [DontDocMe::f] | ||
LL | /// docs [DontDocMe] [DontDocMe::f] [DontDocMe::x] | ||
| ^^^^^^^^^^^^ this item is private | ||
| | ||
= note: this link resolves only because you passed `--document-private-items`, but will break without | ||
|
||
warning: 2 warnings emitted | ||
warning: public documentation for `DocMe` links to private item `DontDocMe::x` | ||
--> $DIR/private.rs:7:38 | ||
| | ||
LL | /// docs [DontDocMe] [DontDocMe::f] [DontDocMe::x] | ||
| ^^^^^^^^^^^^ this item is private | ||
| | ||
= note: this link resolves only because you passed `--document-private-items`, but will break without | ||
|
||
warning: 3 warnings emitted | ||
|
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 |
---|---|---|
@@ -1,19 +1,27 @@ | ||
warning: public documentation for `DocMe` links to private item `DontDocMe` | ||
--> $DIR/private.rs:5:11 | ||
--> $DIR/private.rs:7:11 | ||
| | ||
LL | /// docs [DontDocMe] [DontDocMe::f] | ||
LL | /// docs [DontDocMe] [DontDocMe::f] [DontDocMe::x] | ||
| ^^^^^^^^^ this item is private | ||
| | ||
= note: `#[warn(rustdoc::private_intra_doc_links)]` on by default | ||
= note: this link will resolve properly if you pass `--document-private-items` | ||
|
||
warning: public documentation for `DocMe` links to private item `DontDocMe::f` | ||
--> $DIR/private.rs:5:23 | ||
--> $DIR/private.rs:7:23 | ||
| | ||
LL | /// docs [DontDocMe] [DontDocMe::f] | ||
LL | /// docs [DontDocMe] [DontDocMe::f] [DontDocMe::x] | ||
| ^^^^^^^^^^^^ this item is private | ||
| | ||
= note: this link will resolve properly if you pass `--document-private-items` | ||
|
||
warning: 2 warnings emitted | ||
warning: public documentation for `DocMe` links to private item `DontDocMe::x` | ||
--> $DIR/private.rs:7:38 | ||
| | ||
LL | /// docs [DontDocMe] [DontDocMe::f] [DontDocMe::x] | ||
| ^^^^^^^^^^^^ this item is private | ||
| | ||
= note: this link will resolve properly if you pass `--document-private-items` | ||
|
||
warning: 3 warnings emitted | ||
|
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 |
---|---|---|
@@ -1,6 +1,17 @@ | ||
#![crate_name = "private"] | ||
// compile-flags: --document-private-items | ||
/// docs [DontDocMe] | ||
|
||
// make sure to update `rustdoc-ui/intra-doc/private.rs` if you update this file | ||
|
||
/// docs [DontDocMe] [DontDocMe::f] [DontDocMe::x] | ||
// @has private/struct.DocMe.html '//*a[@href="../private/struct.DontDocMe.html"]' 'DontDocMe' | ||
// @has private/struct.DocMe.html '//*a[@href="../private/struct.DontDocMe.html#method.f"]' 'DontDocMe::f' | ||
// @has private/struct.DocMe.html '//*a[@href="../private/struct.DontDocMe.html#structfield.x"]' 'DontDocMe::x' | ||
pub struct DocMe; | ||
struct DontDocMe; | ||
struct DontDocMe { | ||
x: usize, | ||
} | ||
|
||
impl DontDocMe { | ||
fn f() {} | ||
} |