-
Notifications
You must be signed in to change notification settings - Fork 12.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rollup of 17 pull requests #74407
Rollup of 17 pull requests #74407
Conversation
This would partially resolve fortanix/rust-sgx#31
Currently dependency crates of the standard library can sometimes leak into error messages such as when traits to import are suggested. Additionally they can leak into documentation such as in the list of "all traits implemented by `u32`". The dependencies of the standard library, however, are intended to be private. The dependencies of the standard library can't actually be stabl-y imported nor is the documentation that relevant since you can't import them on stable either. This commit updates both the compiler and rustdoc to ignore unstable traits in these two scenarios. Specifically the suggestion for traits to import ignore unstable traits, and similarly the list of traits implemented by a type excludes unstable traits. This commit is extracted from rust-lang#73441 where the addition of some new dependencies to the standard library was showed to leak into various error messages and documentation. The intention here is to go ahead and land these changes ahead of that since it will likely take some time to land.
…rch64 Copyright (c) 2020, Arm Limited.
Fixes rust-lang#72684. This commit also modifies the signature of `Classifier::new` to avoid copying the source being highlighted.
to avoid surprising listed in API guidelines.
Instead, ignore resolution errors that occur in item bodies. The reason this can't ignore item bodies altogether is because `const fn` could be used in generic types, for example `[T; f()]`
- Explicitly check for missing docs - Don't run any lints except those we explicitly specified
- Remove unnecessary `should_loop` variable - Report errors for trait implementations These should give resolution errors because they are visible outside the current scope. Without these errors, rustdoc will give ICEs: ``` thread 'rustc' panicked at 'attempted .def_id() on invalid res: Err', /home/joshua/src/rust/src/libstd/macros.rs:16:9 15: rustc_hir::def::Res<Id>::def_id at /home/joshua/src/rust/src/librustc_hir/def.rs:382 16: rustdoc::clean::utils::register_res at src/librustdoc/clean/utils.rs:627 17: rustdoc::clean::utils::resolve_type at src/librustdoc/clean/utils.rs:587 ``` - Add much more extensive tests + fn -> impl -> fn + fn -> impl -> fn -> macro + errors in function parameters + errors in trait bounds + errors in the type implementing the trait + unknown bounds for the type + unknown types in function bodies + errors generated by macros - Use explicit state instead of trying to reconstruct it from random info - Use an enum instead of a boolean - Add example of ignored error
Instead, report the error. This emits the errors on-demand, without special-casing `impl Trait`, so it should catch all ICEs of this kind, including ones that haven't been found yet. Since the error is emitted during type-checking there is less info about the error; see comments in the code for details. - Add test case for -> impl Trait - Add test for impl trait with alias - Move EmitIgnoredResolutionErrors to rustdoc This makes `fn typeck_item_bodies` public, which is not desired behavior. That change should be removed once rust-lang#74070 is merged. - Don't visit nested closures twice
Previously, rustdoc would issue a delay_span_bug ICE on the following code: ```rust pub fn a() -> impl Fn() -> u32 { || content::doesnt::matter() } ``` This wasn't picked up earlier because having `type Alias = impl Trait;` in the same module caused _all closures_ to be typechecked, even if they wouldn't normally. Additionally, if _any_ error was emitted, no delay_span_bug would be emitted. So as part of this commit all of the tests were separated out into different files.
Just use a boolean instead.
Previously two different parts of the context had to be passed separately; there were two sources of truth.
TyCtxt is a reference type and so can be passed by value.
Don't panic if the lhs of a div by zero is not statically known Fixes rust-lang#73993 for real this time r? @wesleywiser
…debar, r=kinnison Focus on the current file in the source file sidebar Fixes rust-lang#73360. r? @kinnison cc @rust-lang/rustdoc
…eGomez rustdoc: Rename internal API fns to `into_string` to avoid surprising listed in API guidelines.
…meGomez Reintroduce spotlight / "important traits" feature (Reopened version of rust-lang#74111 because Github is broken, see discussion there) Fixes rust-lang#73785 This PR reintroduces the "spotlight" ("important traits") feature. A couple changes have been made: As there were concerns about its visibility, it has been moved to be next to the return type, as opposed to being on the side. It also no longer produces a modal, it shows the traits on hover, and it can be clicked on to pin the hover bubble. ![image](https://user-images.githubusercontent.com/1617736/86674555-a82d2600-bfad-11ea-9a4a-a1a9ffd66ae5.png) ![image](https://user-images.githubusercontent.com/1617736/86674533-a1061800-bfad-11ea-9e8a-c62ad86ed0d7.png) It also works fine on mobile: ![image](https://user-images.githubusercontent.com/1617736/86674638-bda25000-bfad-11ea-8d8d-1798b608923e.png)
Fix typo in std::mem::transmute documentation `u32::from_ge_bytes` function does not exist; replace with `u32::from_be_bytes`. It is clear that `u32::from_le_bytes` is not meant from the context; the latter is used correctly while `from_be_bytes` is misspelled.
…lacrum BtreeMap: superficially refactor root access Remove or comment every unwrap in BTreeMap's main code and more. r? @Mark-Simulacrum
…roalbini Bump version to 1.47 This also bumps to a more recent rustfmt version, just to keep us relatively up to date (though almost nothing has changed in rustfmt we use beyond bumps to the parser infra). No formatting changes as a result of this. r? @pietroalbini
…r=Mark-Simulacrum Set shell for github actions CI r? @pietroalbini but because this seems at worst harmless and CI is broken self approving
📌 Commit c7e85bb has been approved by |
🌲 The tree is currently closed for pull requests below priority 5, this pull request will be tested once the tree is reopened |
⌛ Testing commit c7e85bb with merge 15fe6f0a26db42aca6e062a03326f9519fc8d4c8... |
💔 Test failed - checks-azure |
@bors retry missing libz, but it happened during prepare so it might be intermittent |
⌛ Testing commit c7e85bb with merge e1c565330a28b05009fb6b0b3e68fb91bedc9024... |
💔 Test failed - checks-actions |
I bet it's the 1.27 one |
Successful merges:
everybody_loops
for rustdoc; instead ignore resolution errors #73566 (Don't runeverybody_loops
for rustdoc; instead ignore resolution errors)ignore-stage1
annotations. #73981 (Remove someignore-stage1
annotations.)into_string
#74359 (rustdoc: Rename internal API fns tointo_string
)Failed merges:
r? @ghost