| Age | Commit message (Collapse) | Author | Lines |
|
[rustdoc] Calculate span information on demand instead of storing it ahead of time
This brings `size_of<clean::types::Span>()` down from over 100 bytes (!!) to only 12, the same as rustc. It brings `Item` down even more, from `784` to `680`.
~~TODO: I need to figure out how to do this for the JSON backend too. That uses `From` impls everywhere, which don't allow passing in the `Session` as an argument. `@P1n3appl3,` `@tmandry,` maybe one of you have ideas?~~ Figured it out, fortunately only two functions needed to be changed. I like the `convert_x()` format better than `From` everywhere but I'm open to feedback.
Helps with #79103
|
|
This should *vastly* reduce memory usage.
|
|
|
|
|
|
|
|
|
|
Make search results tab and help button focusable with keyboard
Fixes https://github.com/rust-lang/rust/issues/79859.
I replaced the element with `button` tag, which allows to focus them (and "click" on them using "enter") using only the keyboard.
cc ``@sersorrel``
r? ``@Manishearth``
|
|
Dogfood `str_split_once()`
Part of https://github.com/rust-lang/rust/issues/74773.
Beyond increased clarity, this fixes some instances of a common confusion with how `splitn(2)` behaves: the first element will always be `Some()`, regardless of the delimiter, and even if the value is empty.
Given this code:
```rust
fn main() {
let val = "...";
let mut iter = val.splitn(2, '=');
println!("Input: {:?}, first: {:?}, second: {:?}", val, iter.next(), iter.next());
}
```
We get:
```
Input: "no_delimiter", first: Some("no_delimiter"), second: None
Input: "k=v", first: Some("k"), second: Some("v")
Input: "=", first: Some(""), second: Some("")
```
Using `str_split_once()` makes more clear what happens when the delimiter is not found.
|
|
|
|
Remove tab-lock and replace it with ctrl+up/down arrows to switch between search result tabs
Fixes https://github.com/rust-lang/rust/issues/65212
What took the longest time was to update the help popup in the end.
r? `@Manishearth`
|
|
search result tabs
|
|
|
|
|
|
|
|
I added `summary_opts()` before I cut the branch for #77686 (2 months
ago!), so this "slipped through the cracks".
|
|
|
|
|
|
@GuillaumeGomez was concerned about browser compatibility.
|
|
Previously Markdown documentation was not rendered to HTML for search results,
which led to the output not being very readable, particularly for inline code.
This PR fixes that by rendering Markdown to HTML with the help of pulldown-cmark
(the library rustdoc uses to parse Markdown for the main text of documentation).
However, the text for the title attribute (the text shown when you hover over an
element) still uses the plain-text rendering since it is displayed in browsers
as plain-text.
Only these styles will be rendered; everything else is stripped away:
* *italics*
* **bold**
* `inline code`
|
|
Rollup of 11 pull requests
Successful merges:
- #79038 (Change ui test that are run-pass and that do not test the compiler to library tests)
- #79184 (Stop adding '*' at the end of slice and str typenames for MSVC case)
- #79227 (Remove const_fn_feature_flags test)
- #79444 (Move const ip in ui test to unit test)
- #79522 (Validate lint docs separately.)
- #79525 (Add -Z normalize-docs and enable it for compiler docs)
- #79527 (Move intra-doc link tests into a subdirectory)
- #79548 (Show since when a function is const in stdlib)
- #79568 (update Miri)
- #79573 (Update with status for various NetBSD ports.)
- #79583 (Update books)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
Make keyboard interactions in the settings menu more pleasant
#78868 improved the keyboard interactions with the settings page. This PR goes a bit further by allowing more than just "space" to toggle the checkboxes.
r? `@jyn514`
|
|
|
|
Rename "stability" CSS class to "item-info" and combine `document_stability` with `document_short`
Follow-up of #79300
The point of this PR is to make the CSS class more accurate since it's not only about stability anymore.
r? ``@jyn514``
|
|
We have a similar function `opts()` that is for rendering the main body
of the documentation, but until now we just constructed the options for
rendering summaries on the fly. This is a problem if/when we change the
enabled options since the different places can get out-of-sync.
|
|
|
|
|
|
|
|
Make `fold_item_recur` non-nullable
This gets rid of a bunch of `unwrap()`s and makes it a little more clear
what's going on.
Originally I wanted to make `fold_item` non-nullable too, which would
have been a lot nicer to work with, but unfortunately `stripper` does
actually return `None` in some places. I might make a follow-up moving
stripper to be special and not a pass so that passes can be
non-nullable.
Found while working on https://github.com/rust-lang/rust/issues/76998.
|
|
This gets rid of a bunch of `unwrap()`s and makes it a little more clear
what's going on.
Originally I wanted to make `fold_item` non-nullable too, which would
have been a lot nicer to work with, but unfortunately `stripper` does
actually return `None` in some places. I might make a follow-up moving
stripper to be special and not a pass so that passes can be
non-nullable.
|
|
|
|
|
|
|
|
- Add `Item::from_hir_id_and_kind` convenience wrapper
- Make name parameter mandatory
`tcx.opt_item_name` doesn't handle renames, so this is necessary
for any item that could be renamed, which is almost all of them.
- Override visibilities to be `Inherited` for enum variants
`tcx.visibility` returns the effective visibility, not the visibility
that was written in the source code. `pub enum E { A, B }` always has
public variants `A` and `B`, so there's no sense printing `pub` again.
- Don't duplicate handling of `Visibility::Crate`
Instead, represent it as just another `Restricted` path.
|
|
Visibility needs much less information than a full path, since modules
can never have generics. This allows constructing a Visibility from only
a DefId.
Note that this means that paths are now normalized to their DefPath.
In other words, `pub(self)` or `pub(super)` now always shows `pub(in
path)` instead of preserving the original text.
|
|
Remove duplicate `Trait::auto` field
It was exactly the same as `is_auto`.
I found this while working on #78082, but it's not required for that PR.
r? `@GuillaumeGomez`
|
|
Get rid of clean::{Method, TyMethod}
They're redundant and almost the same as `clean::Function`.
I needed this for https://github.com/rust-lang/rust/pull/78082, although I forget why.
r? `@GuillaumeGomez`
|
|
Get rid of `highlight::Class::None`
This is mostly me learning the codebase for https://github.com/rust-lang/rust/pull/77939, so feel free to close the PR.
It does have the small benefit that we statically know rustdoc isn't generating useless `span`s, though.
r? `@GuillaumeGomez`
cc `@matklad`
|
|
r=jyn514
Rustdoc test compiler output color
Fixes #72915
We just need to be sure it doesn't break rustdoc doctests' compilation checks. Maybe some other unforeseen consequences too?
r? `@ehuss`
cc `@rust-lang/rustdoc`
|
|
|
|
Ensure that the source code display is working with DOS backline
Fixes #76361.
cc ````@lzutao````
r? ````@jyn514````
|
|
It was exactly the same as `is_auto`.
|
|
Replace it instead with `(clean::Function, Option<hir::Defaultness>)`.
|
|
It's the same as clean::Function.
|
|
Make all rustdoc functions and structs crate-private
This gives warnings when code is no longer used, which will be helpful when https://github.com/rust-lang/rust/pull/77820 and https://github.com/rust-lang/rust/pull/78082 land.
AFAIK no one is using this API.
r? ``@GuillaumeGomez``
cc ``@rust-lang/rustdoc``
|
|
Add tests and improve rendering of cfgs on traits
Shows the additional features required to get the trait implementation, suppressing any already shown on the current page. One interesting effect from this is if you have a cfg-ed type, implementing a cfg-ed trait (so the implementation depends on both cfgs), you will get the inverted pair of cfgs shown on each page:


The hidden items on the trait implementation also now get the correct cfgs displayed on them.
Tests are blocked on #78673.
fixes #68100
cc #43781
|
|
in source rendering
|
|
|
|
|
|
This gives warnings about dead code.
|
|
|