Commit graph

1024 commits

Author SHA1 Message Date
Matthias Krüger
549b3a13a1
Rollup merge of #110983 - GuillaumeGomez:foreign-repr, r=notriddle
rustdoc: Get `repr` information through `AdtDef` for foreign items

As suggested by `@notriddle,` this approach works too. The only downside is that the display of the original attribute isn't kept, but I think it's an acceptable downside.

r? `@notriddle`
2023-04-30 01:14:59 +02:00
Guillaume Gomez
b778688f91 Unify attributes retrieval for JSON and HTML rendering 2023-04-29 23:36:48 +02:00
Guillaume Gomez
89b0956a9a Fix display of attributes for enums 2023-04-29 22:53:10 +02:00
Guillaume Gomez
61b6f65884 Get repr information through AdtDef for foreign items 2023-04-29 22:53:10 +02:00
Michael Howell
2299ba1ca2 rustdoc: fix weird margins between Deref impl items
In the old setup, if the dereffed-to item has multiple impl blocks,
each one gets its own `div.impl-items` in the section, but there
are no headers separating them. Since the last method in a
`div.impl-items` has no bottom margin, and there are no margins
between these divs, there is no margin between the last method
of one impl and the first method of the following impl.

This patch fixes it by simplifying the HTML. Each Deref block gets
exactly one `div.impl-items`, no matter how many impl blocks it
actually has.
2023-04-28 13:16:10 -07:00
Yuki Okushi
684bdf87f4
Rollup merge of #109949 - notriddle:notriddle/type-layout, r=jsha
rustdoc: migrate `document_type_layout` to askama
2023-04-22 10:33:56 +09:00
Michael Howell
e6664c0681 rustdoc: remove unnecessary binding 2023-04-21 11:05:45 -07:00
Michael Howell
2b728c1f85 rustdoc: factor document_type_layout into its own module 2023-04-21 11:04:44 -07:00
Michael Howell
99e1cdb46f rustdoc: get rid of redundant, nested let lines 2023-04-21 09:00:33 -07:00
Michael Howell
3a16db1bb4 rustdoc: create variants list outside of template 2023-04-18 11:14:39 -07:00
Michael Howell
5f9746b947 rustdoc: use a separate template for type layout size 2023-04-18 10:21:04 -07:00
Josh Soref
bb2f23c34f Spelling librustdoc
* associated
* collected
* correspondence
* inlining
* into
* javascript
* multiline
* variadic

Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2023-04-16 21:44:12 -04:00
KaDiWa
ad2b34d0e3
remove some unneeded imports 2023-04-12 19:27:18 +02:00
DaniPopes
b410f3f7ae
Fix typos in librustdoc 2023-04-10 21:02:29 +02:00
Michael Howell
08f204e17f rustdoc: migrate document_type_layout to askama 2023-04-08 19:23:52 -07:00
Michael Howell
c325fda0bf rustdoc: migrate item_union to an Askama template 2023-04-05 07:49:30 -07:00
Michael Howell
19f9f658d6 rustdoc: migrate document functions to return a Display 2023-04-03 17:17:39 -07:00
Michael Howell
94faa5c739 rustdoc: convert render_attributes_in_pre to return a Display 2023-04-03 15:42:01 -07:00
Michael Howell
fc5de13d31 rustdoc: convert print_tuple_struct_fields to return a Display 2023-04-03 15:31:07 -07:00
Matthias Krüger
8ef3bf29fe a couple clippy::complexity fixes
map_identity
filter_next
option_as_ref_deref
unnecessary_find_map
redundant_slicing
unnecessary_unwrap
bool_comparison
derivable_impls
manual_flatten
needless_borrowed_reference
2023-04-01 23:16:33 +02:00
Ezra Shaw
e0ec9c0b9c
rustdoc: tweak some variants omitted
Don't display `// some variants omitted` if enum is marked
`#[non_exhaustive]`
2023-03-26 18:05:42 +13:00
bors
d012d2f96e Auto merge of #109399 - petrochenkov:rendersort, r=GuillaumeGomez
rustdoc: Optimize impl sorting during rendering

This should fix the perf regression on [bitmaps-3.1.0](https://github.com/rust-lang/rustc-perf/tree/master/collector/compile-benchmarks/bitmaps-3.1.0) from https://github.com/rust-lang/rust/pull/107765.

The bitmaps crate has a lot of impls:
```rust
impl Bits for BitsImpl<1> { ... }
impl Bits for BitsImpl<2> { ... }
// ...
impl Bits for BitsImpl<1023> { ... }
impl Bits for BitsImpl<1024> { ... }
```
and the logic in `fn print_item` sorts them in natural order.

Before https://github.com/rust-lang/rust/pull/107765 the impls came in source order, which happened to be already sorted in the necessary way.
So the comparison function was called fewer times.

After https://github.com/rust-lang/rust/pull/107765 the impls came in "stable" order (based on def path hash).
So the comparison function was called more times to sort them.

The comparison function was terribly inefficient, so it caused a large perf regression.
This PR attempts to make it more efficient by using cached keys during sorting.
2023-03-24 23:41:53 +00:00
Matthias Krüger
0392e2996e
Rollup merge of #108954 - notriddle:notriddle/notable-trait-generic, r=camelid
rustdoc: handle generics better when matching notable traits

This commit makes the `clean::Type::is_same` non-commutative (renaming it `is_doc_subtype_of`), so that a generic `impl` matches a concrete return, but a generic return does not match a concrete `impl`. It makes slice and vector Write for `u8` not match on every generic return value.

Fixes #100322

Fixes #55082

Preview:

* https://notriddle.com/rustdoc-demo-html-3/notable-trait-generic/std/vec/struct.Vec.html#method.new
* https://notriddle.com/rustdoc-demo-html-3/notable-trait-generic/std/vec/struct.Vec.html#method.from-12
* https://notriddle.com/rustdoc-demo-html-3/notable-trait-generic/std/iter/trait.Iterator.html#method.intersperse_with
* https://notriddle.com/rustdoc-demo-html-3/notable-trait-generic/std/string/struct.String.html#method.as_bytes
2023-03-22 22:44:39 +01:00
Vadim Petrochenkov
4d55affc12 rustdoc: Optimize impl sorting during rendering 2023-03-20 19:43:00 +04:00
klensy
433d243c6e extra_info_tags don't return string, use display_fn 2023-03-17 18:52:36 +03:00
klensy
1f01433607 clean up few alloc 2023-03-16 20:38:33 +03:00
Matthias Krüger
aa881f16ec
Rollup merge of #108875 - notriddle:notriddle/return-trait, r=GuillaumeGomez
rustdoc: fix type search for `Option` combinators
2023-03-16 08:57:05 +01:00
Michael Howell
86179c4549 rustdoc: rename Type::is_same to is_doc_subtype_of 2023-03-12 17:45:15 -07:00
Matthias Krüger
25794194fa
Rollup merge of #108784 - clubby789:askama-sidebar, r=jsha,GuillaumeGomez
rustdoc: Migrate sidebar rendering to Askama

cc #108757

Renders the sidebar for documentation using an Askama template
2023-03-11 12:55:43 +01:00
Matthias Krüger
949c553100
Rollup merge of #108757 - clubby789:askama-move, r=notriddle,jsha,GuillaumeGomez
rustdoc: Migrate `document_item_info` to Askama

https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/rustdoc.20allocations.20are.20slow

Hoping to piece-by-piece migrate things to template. Had a few failed attempts at more complex parts of the code, so this is just a start.
2023-03-11 12:55:42 +01:00
Matthias Krüger
8596751f3b
Rollup merge of #107629 - pitaj:rustdoc-search-deprecated, r=jsha
rustdoc: sort deprecated items lower in search

closes #98759

### Screenshots

`i32::MAX` show sup above `std::i32::MAX` and `core::i32::MAX`
![image](https://user-images.githubusercontent.com/803701/216725619-40afb7b0-e984-4a2e-ab5b-a95b24736b0e.png)
If just searching for `min`, the deprecated results show up far below other things:
![image](https://user-images.githubusercontent.com/803701/216725672-e4325d37-9bfe-47eb-a1fe-0e57092aa811.png)
one page later
![image](https://user-images.githubusercontent.com/803701/216725932-cd1c4a42-d527-44fb-a4ab-5a6d243659cc.png)

~~And, as you can see, the "Deprecation planned" message shows up in the search results. The same is true for fully-deprecated items like `mem::uninitialized`:
![image](https://user-images.githubusercontent.com/803701/216726268-1657e77a-563f-45a0-85a7-3a0cf4d66d6f.png)~~

Edit: the deprecation message change was removed from this PR. Only the sorting is changed.
2023-03-11 12:55:41 +01:00
clubby789
2f166d1a15 Render doc sidebar using Askama 2023-03-10 20:21:45 +00:00
clubby789
bb37b600b3 Migrate document_item_info to templates 2023-03-10 20:18:38 +00:00
Peter Jaszkowiak
d2e4b59e60 rustdoc: sort deprecated items lower in search
serialize `q` (`itemPaths`) sparsely
overall 4% reduction in search index size
2023-03-10 12:20:38 -07:00
Michael Howell
ee6b228b6a rustdoc: handle generics better when matching notable traits
This commit makes the `clean::Type::is_same` non-commutative, so
that a generic `impl` matches a concrete return, but a generic return
does not match a concrete `impl`. It makes slice and vector Write
for `u8` not match on every generic return value.
2023-03-09 14:18:12 -07:00
Matthias Krüger
5b3f84d8af
Rollup merge of #108929 - eltociear:patch-20, r=GuillaumeGomez
Fix typo in span_map.rs

correspondance -> correspondence
2023-03-09 12:11:55 +01:00
Matthias Krüger
83791f9de7
Rollup merge of #106915 - notriddle:notriddle/load-only-one-theme, r=GuillaumeGomez,jsha
Only load one CSS theme by default

This is a tweaked version of #103971 that uses `document.write` to create the stylesheet link at startup, avoiding a FOUC during page navigation. It also rebases the PR, making it work with the new hashed filenames.

Fixes #82614

Preview: http://notriddle.com/notriddle-rustdoc-demos/load-only-one-theme-v2/std/index.html
2023-03-09 12:11:52 +01:00
Ikko Eltociear Ashimine
18667722e2
Fix typo in span_map.rs
correspondance -> correspondence
2023-03-09 14:47:42 +09:00
Matthias Krüger
6c91ce27c3
Rollup merge of #108686 - notriddle:notriddle/jank-all, r=jsha
rustdoc: include link on all.html location header

This avoids a subtle layout shift when switching from the crate page to all items.

## Before

| index.html | all.html |
|------------|----------|
| ![image](https://user-images.githubusercontent.com/1593513/222607866-4eac3f55-314c-4273-9664-503f2a79ad0a.png) | ![image](https://user-images.githubusercontent.com/1593513/222607895-2d6bac3b-f66a-47d4-b234-360f6f8e1ee3.png) |

## After

| index.html | all.html |
|------------|----------|
| ![image](https://user-images.githubusercontent.com/1593513/222607866-4eac3f55-314c-4273-9664-503f2a79ad0a.png) | ![image](https://user-images.githubusercontent.com/1593513/222607997-e72c48a0-02c7-42a7-80c2-cd6bed48bd15.png) |
2023-03-08 21:24:50 +01:00
Michael Howell
f916681d8d Only load one CSS theme by default
To avoid generating a FOUC at startup, this commit uses `document.write` to
load the stylesheet initially.

Co-Authored-By: Guillaume Gomez <guillaume1.gomez@gmail.com>
2023-03-08 12:49:34 -07:00
Michael Howell
44813e038c rustdoc: fix type search when more than one where clause applies 2023-03-07 11:37:04 -07:00
Michael Howell
a6446c53fe rustdoc: fix type search index for fn<T>() -> &T where T: Trait 2023-03-07 11:20:49 -07:00
Matthias Krüger
99fad38b19
Rollup merge of #108734 - clubby789:rustdoc-layout-uninhabited, r=GuillaumeGomez
rustdoc: Note in a type's layout/size if it is uninhabited

Closes #87008

![image](https://user-images.githubusercontent.com/13556931/222900244-8e326d51-8d3b-4700-a935-96830179e2e9.png)
2023-03-04 20:48:19 +01:00
Michael Howell
af664be423 rustdoc: include link on all.html location header
This avoids a subtle layout shift when switching from the crate page
to all items.
2023-03-04 11:54:28 -07:00
Michael Howell
9d27028391 rustdoc: function signature search with traits in where clause 2023-03-04 09:05:57 -07:00
clubby789
7520155e4e rustdoc: Note in a type's layout/size if it is uninhabited 2023-03-04 12:07:29 +00:00
Dylan DPC
4165de40f8
Rollup merge of #107783 - notriddle:notriddle/item-table-ul, r=GuillaumeGomez
rustdoc: simplify DOM for `.item-table`

This switches from using `<div>` to the more semantic `<ul>`, and using class names that rhyme with the classes the search results table uses.
2023-02-19 13:03:41 +05:30
Kyle Matsuda
c183110cc2 remove bound_type_of query; make type_of return EarlyBinder; change type_of in metadata 2023-02-16 17:05:56 -07:00
Kyle Matsuda
d822b97a27 change usages of type_of to bound_type_of 2023-02-16 17:01:52 -07:00
Matthias Krüger
09ab35b574
Rollup merge of #108076 - GuillaumeGomez:more-let-chain, r=notriddle
rustdoc: Use more let chain

Got the idea after yesterday's review.

r? `@notriddle`
2023-02-15 21:30:59 +01:00