Commit graph

12790 commits

Author SHA1 Message Date
bors
bb029a1d3f Auto merge of #137511 - jhpratt:rollup-07whsax, r=jhpratt
Rollup of 10 pull requests

Successful merges:

 - #136610 (Allow `IndexSlice` to be indexed by ranges.)
 - #136991 ([rustdoc] Add new setting to wrap source code lines when too long)
 - #137061 (Unstable `gen_future` Feature Tracking  )
 - #137393 (Stabilize `unbounded_shifts`)
 - #137482 (Windows: use existing wrappers in `File::open_native`)
 - #137484 (Fix documentation for unstable sort on slice)
 - #137491 (Tighten `str-to-string-128690.rs``CHECK{,-NOT}`s to make it less likely to incorrectly fail with symbol name mangling)
 - #137495 (Added into_value function to ControlFlow<T, T>)
 - #137501 (Move `impl` blocks out of `rustc_middle/src/mir/syntax.rs`)
 - #137505 (Add a span to `CompilerBuiltinsCannotCall`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-02-24 10:27:53 +00:00
Jacob Pratt
8133652562
Rollup merge of #136991 - GuillaumeGomez:code-wrapping, r=notriddle
[rustdoc] Add new setting to wrap source code lines when too long

Fixes https://github.com/rust-lang/rust/issues/127334.

Wrapped lines look like this:

![image](https://github.com/user-attachments/assets/92006a27-ed1e-4beb-91f2-f453b72c5e1a)

It works in both source code pages and doc pages.

You can test it [here](https://rustdoc.crud.net/imperio/code-wrapping/bar/index.html).

r? ``@notriddle``
2025-02-24 02:11:32 -05:00
bors
f43e549b88 Auto merge of #137285 - yotamofek:pr/rustdoc/pulldown-escaping, r=GuillaumeGomez
librustdoc: Use `pulldown-cmark-escape` for HTML escaping

Implementation of `@notriddle` 's [suggestion](https://github.com/rust-lang/rust/pull/137274#issuecomment-2669001585).
Somewhat related to #137274 , but the two PRs should be complementary.

Local perf results look like a nice improvement! (so would love a perf run on the CI)
2025-02-24 07:11:04 +00:00
Guillaume Gomez
a1471f3aa6 Rename feature into Word wrap source code 2025-02-22 15:44:14 +01:00
Michael Goulet
2a6daaf89a Make asm a named field 2025-02-22 00:05:09 +00:00
Matthias Krüger
cfc2d111ed
Rollup merge of #137392 - klensy:unused, r=compiler-errors
remove few unused fields

Remove unused field and convert hashmap to hashset in second commit.
2025-02-21 19:01:18 +01:00
Matthias Krüger
a24eb0bae9
Rollup merge of #137350 - nnethercote:remove-Map-3, r=Zalathar
Move methods from Map to TyCtxt, part 3.

A follow-up to #137162.

r? `@Zalathar`
2025-02-21 19:01:15 +01:00
klensy
8d2de634ec convert all_macro_rules from hashmap to hashset 2025-02-21 15:29:17 +03:00
Nicholas Nethercote
806be25fc9 Move methods from Map to TyCtxt, part 3.
Continuing the work from #137162.

Every method gains a `hir_` prefix.
2025-02-21 14:31:09 +11:00
riverbl
5112ecb8ca Stabilise os_str_display 2025-02-20 19:12:06 +00:00
Matthias Krüger
8ccfd06e46
Rollup merge of #137106 - chenyukang:yukang-fix-sidebar-sort, r=notriddle
Add customized compare for Link in rustdoc

Maybe some other types in sidebar need to be sorted in this way, maybe add this crate `natord` is ok?

r?  clubby789

Fixes #137098
2025-02-20 00:55:12 +01:00
Yotam Ofek
489f5c19d4 librustdoc: Use pulldown-cmark-escape for HTML escaping 2025-02-19 18:42:02 +00:00
yukang
a467ecacd4 Add custom sort for link in rustdoc 2025-02-19 08:35:51 +08:00
Matthias Krüger
d0c1e1c0e8
Rollup merge of #137177 - GuillaumeGomez:update-minifier, r=notriddle
Update `minifier-rs` version to `0.3.5`

Encountered a bug around handling of `*` which blocked me for something I'm working on.

Also includes multiple fixes from ```@notriddle.```

r? ```@notriddle```
2025-02-19 01:30:11 +01:00
Matthias Krüger
58a622b019
Rollup merge of #136599 - yotamofek:pr/rustdoc-more-joined, r=GuillaumeGomez
librustdoc: more usages of `Joined::joined`

Some missed opportunities from #136244
r? ```@GuillaumeGomez``` since you reviewed the last one (feel free to re-assign, of course 😊)
First two commits are just drive-by cleanups
2025-02-18 18:40:50 +01:00
Nicholas Nethercote
fd7b4bf4e1 Move methods from Map to TyCtxt, part 2.
Continuing the work started in #136466.

Every method gains a `hir_` prefix, though for the ones that already
have a `par_` or `try_par_` prefix I added the `hir_` after that.
2025-02-18 10:17:44 +11:00
Yotam Ofek
c0b1c6eed5 librustdoc: more usages of Joined::joined 2025-02-17 22:53:52 +00:00
Yotam Ofek
4a76615054 coalesce match patterns with identical bodies 2025-02-17 18:38:13 +00:00
Yotam Ofek
a7a43cd373 use Iterator::zip instead of enumerating+indexing 2025-02-17 18:38:13 +00:00
Guillaume Gomez
30c7956aed Update minifier-rs version to 0.3.5 2025-02-17 17:10:07 +01:00
Nicholas Nethercote
f666361caa Remove TyCtxt::hir_krate.
It's a trivial wrapper around the `hir_crate` query with a small number
of uses.
2025-02-17 13:24:40 +11:00
Nicholas Nethercote
661f99ba03 Overhaul the intravisit::Map trait.
First of all, note that `Map` has three different relevant meanings.
- The `intravisit::Map` trait.
- The `map::Map` struct.
- The `NestedFilter::Map` associated type.

The `intravisit::Map` trait is impl'd twice.
- For `!`, where the methods are all unreachable.
- For `map::Map`, which gets HIR stuff from the `TyCtxt`.

As part of getting rid of `map::Map`, this commit changes `impl
intravisit::Map for map::Map` to `impl intravisit::Map for TyCtxt`. It's
fairly straightforward except various things are renamed, because the
existing names would no longer have made sense.

- `trait intravisit::Map` becomes `trait intravisit::HirTyCtxt`, so named
  because it gets some HIR stuff from a `TyCtxt`.
- `NestedFilter::Map` assoc type becomes `NestedFilter::MaybeTyCtxt`,
  because it's always `!` or `TyCtxt`.
- `Visitor::nested_visit_map` becomes `Visitor::maybe_tcx`.

I deliberately made the new trait and associated type names different to
avoid the old `type Map: Map` situation, which I found confusing. We now
have `type MaybeTyCtxt: HirTyCtxt`.
2025-02-17 13:21:35 +11:00
Nicholas Nethercote
f86f7ad5f2 Move some Map methods onto TyCtxt.
The end goal is to eliminate `Map` altogether.

I added a `hir_` prefix to all of them, that seemed simplest. The
exceptions are `module_items` which became `hir_module_free_items` because
there was already a `hir_module_items`, and `items` which became
`hir_free_items` for consistency with `hir_module_free_items`.
2025-02-17 13:21:02 +11:00
bors
23032f31c9 Auto merge of #136363 - notriddle:notriddle/unresolved-link-unused-refdef, r=GuillaumeGomez
rustdoc: improve refdef handling in the unresolved link lint

This commit takes advantage of a feature in pulldown-cmark that makes the list of link definitions available to the consuming application. It produces unresolved link warnings for refdefs that aren't used, and can now produce exact spans for the dest even when it has escapes.

Closes #133150 since this lint would have caught the mistake in that issue, and, along with https://github.com/rust-lang/rust-clippy/pull/13707, most mistakes in this class should produce a warning from one of them.
2025-02-16 10:59:42 +00:00
Michael Howell
61a97448e5 rustdoc: improve refdef handling in the unresolved link lint
This commit takes advantage of a feature in pulldown-cmark that
makes the list of link definitions available to the consuming
application. It produces unresolved link warnings for refdefs
that aren't used, and can now produce exact spans for the dest
even when it has escapes.
2025-02-15 12:21:35 -07:00
Matthias Krüger
29e2caf7c3
Rollup merge of #137068 - tapanprakasht:fix-copy-item-path, r=aDotInTheVoid
fix(rustdoc): Fixed `Copy Item Path` in rust doc

This PR aims to address the issue reported by https://github.com/rust-lang/rust/issues/137048
Issue caused by previous changes for removing `@ts-expect-error` by this change 2ea95f8670
2025-02-15 20:15:00 +01:00
Matthias Krüger
df7002fac0
Rollup merge of #137055 - fmease:rustdoc-js-fix-input-placeholder-logic, r=notriddle
rustdoc: Properly restore search input placeholder

Fix the search input placeholder literally getting set to the string *undefined* on blur/defocus.
This was caused by us trying to access an undefined property in the event listener.
To prevent this from regressing again, stop typescript from ignoring the relevant site.

Steps to reproduce the bug fixed in this PR:

1. Focus the search input field by clicking on it and clear the input if necessary
2. Blur/defocus it by clicking somewhere outside of it

---

First bug that would've been caught by TSC if we had had it earlier! Type (quasi-)safety, ahoy! :)
2025-02-15 20:15:00 +01:00
Tapan Prakash
02f1f346c2 fix(rustdoc): Fixed Copy Item Path in rust doc 2025-02-15 15:34:27 +05:30
León Orell Valerian Liehr
351cc1f5b7
rustdoc: Properly restore search input placeholder 2025-02-15 03:39:28 +01:00
Yotam Ofek
5cc64e8da8 librustdoc: lazily format "read more" link in document_short 2025-02-14 14:50:05 +00:00
Yotam Ofek
ea15f6d792 librustdoc: lazily format some paths 2025-02-14 14:50:05 +00:00
Yotam Ofek
5c5763a6cf librustdoc: lazily format list of aliases in render_impl_summary 2025-02-14 14:50:05 +00:00
Yotam Ofek
bc061858d2 librustdoc: make item_path formatting lazy 2025-02-14 14:50:04 +00:00
Yotam Ofek
cf097d5d7f librustdoc: make notable_traits_button formatting lazy 2025-02-14 14:50:04 +00:00
Yotam Ofek
fb33cd20d3 librustdoc: make assoc_href_attr formatting lazy 2025-02-14 14:50:04 +00:00
Yotam Ofek
9436b4a75b librustdoc: make bounds formatting lazy 2025-02-14 14:50:04 +00:00
Yotam Ofek
e4636e2613 librustdoc: create MaybeDisplay helper for Option<T: Display> types 2025-02-14 14:49:59 +00:00
Guillaume Gomez
599f88d771 Add new setting to wrap source code lines when too long 2025-02-14 11:41:28 +01:00
Jubilee
82110ca740
Rollup merge of #136950 - notriddle:notriddle/svg-example-buttons, r=GuillaumeGomez
rustdoc: use better, consistent SVG icons for scraped examples

## Screenshots

![](https://github.com/user-attachments/assets/f305fb20-5ded-428a-b0d0-04e8b7762769)

![](https://github.com/user-attachments/assets/5b9bee5e-74b9-447b-a19a-49f32b6bf218)

![image](https://github.com/user-attachments/assets/d855a8c8-dc24-44f9-a067-1e0f0654c28a)

![image](https://github.com/user-attachments/assets/71bca54a-0562-480a-8989-938acc351307)

## Description

This continues two ongoing projects

- Replacing ascii art with real icons that don't look like syntax, are understandable to people who're familiar with desktop computers and smart devices, and aren't ugly.
- Using labels and tooltips to clarify these icons, when the limits of popular iconography hit us. In this case, I've added tooltips, because, unfortunately, there's not room for always-visible labels.

r? ``@GuillaumeGomez``
2025-02-13 17:46:10 -08:00
Jacob Pratt
9fe0d25fcb
Rollup merge of #136927 - GuillaumeGomez:add-missing-hashtag-escape, r=notriddle
Correctly escape hashtags when running `invalid_rust_codeblocks` lint

Fixes #136899.

We forgot to use `map_line` when we wrote this lint.

r? ``@notriddle``
2025-02-12 20:10:01 -05:00
Michael Howell
2c4922cf29 rustdoc: use better, consistent SVG icons for scraped examples
This continues two ongoing projects:

- Replacing ascii art with real icons that don't look like
  syntax, are understandable to people who're familiar with
  desktop computers and smart devices, and aren't ugly.
- Using labels and tooltips to clarify these icons, when the
  limits of popular iconography hit us. In this case, I've added
  tooltips, because, unfortunately, there's not room for
  always-visible labels.
2025-02-12 16:07:11 -07:00
Guillaume Gomez
54f59c6dda Correctly escape hashtags when running invalid_rust_codeblocks lint 2025-02-12 19:46:07 +01:00
Yotam Ofek
d99d8c249d Nuke Buffer abstraction from librustdoc 💣 2025-02-12 15:50:06 +00:00
Guillaume Gomez
ba32d8bdee
Rollup merge of #136829 - GuillaumeGomez:move-line-numbers-into-code, r=notriddle
[rustdoc] Move line numbers into the `<code>` directly

Fixes #84242.

This is the first for adding support for https://github.com/rust-lang/rust/issues/127334 and also for another feature I'm working on.

A side-effect of this change is that it also fixes source code pages display in lynx since they're not directly in the source code.

To allow having code wrapping, the grid approach doesn't work as the line numbers are in their own container, so we need to move them into the code. Now with this, it becomes much simpler to do what we want (with CSS mostly). One downside: the highlighting became more complex and slow as we need to generate some extra HTML tags directly into the highlighting process. However that also allows to not have a huge HTML size increase.

You can test the result [here](https://rustdoc.crud.net/imperio/move-line-numbers-into-code/scrape_examples/fn.test_many.html) and [here](https://rustdoc.crud.net/imperio/move-line-numbers-into-code/src/scrape_examples/lib.rs.html#10).

The appearance should have close to no changes.

r? ``@notriddle``
2025-02-12 10:46:39 +01:00
Guillaume Gomez
b594b9f4f5 Remove quotes around href in code line numbers 2025-02-11 18:17:46 +01:00
Matthias Krüger
d719afdbd9
Rollup merge of #135285 - tbu-:pr_fix_typo4, r=GuillaumeGomez
it-self → itself, build-system → build system, type-alias → type alias
2025-02-11 18:04:22 +01:00
Guillaume Gomez
9222b05d9f Correctly handle user-select: none 2025-02-11 14:29:58 +01:00
Guillaume Gomez
673fd23dff Update rustdoc tests 2025-02-11 14:29:58 +01:00
Guillaume Gomez
0395fc2242 Move line numbers into the <code> directly 2025-02-10 18:50:05 +01:00
Matthias Krüger
370c8afa10
Rollup merge of #136694 - GuillaumeGomez:update-minifier, r=notriddle
Update minifier version to `0.3.4`

It fixes a bug where a whitespace would get removed in `a [attribute]` (you're not forced to add a tag before an attribute selector).

r? ````@notriddle````
2025-02-09 19:44:51 +01:00