David Wood
2874f09534
lint: LintDiagnosticBuilder into rustc_errors
...
Signed-off-by: David Wood <david.wood@huawei.com >
2022-07-05 16:00:20 +01:00
Matthias Krüger
f351f347b8
Rollup merge of #98165 - WaffleLapkin:once_things_renamings, r=m-ou-se
...
once cell renamings
This PR does the renamings proposed in https://github.com/rust-lang/rust/issues/74465#issuecomment-1153703128
- Move/rename `lazy::{OnceCell, Lazy}` to `cell::{OnceCell, LazyCell}`
- Move/rename `lazy::{SyncOnceCell, SyncLazy}` to `sync::{OnceLock, LazyLock}`
(I used `Lazy...` instead of `...Lazy` as it seems to be more consistent, easier to pronounce, etc)
```@rustbot``` label +T-libs-api -T-libs
2022-06-19 00:17:13 +02:00
Maybe Waffle
c1a2db3372
Move/rename lazy::Sync{OnceCell,Lazy} to sync::{Once,Lazy}Lock
2022-06-16 19:54:42 +04:00
Camille GILLOT
603746a35e
Make ResolverAstLowering a struct.
2022-06-14 22:44:27 +02:00
Takayuki Maeda
77d6176e69
remove unnecessary to_string and String::new
2022-06-13 15:48:40 +09:00
Matthias Krüger
77f0209fde
Rollup merge of #90905 - GuillaumeGomez:empty-impl-blocks, r=jsha
...
Add empty impl blocks if they have documentation
Fixes https://github.com/rust-lang/rust/issues/90866 .
The update for the test script is needed to count the number of impl blocks we have with only the struct. To be noted that with https://github.com/rust-lang/rust/pull/89676 merged, it wouldn't be needed (I don't know what is the status of it btw. cc ```@Mark-Simulacrum).```
It looks like this:

cc ```@jyn514```
r? ```@camelid```
2022-06-06 08:36:59 +02:00
Yuki Okushi
9fc3fc3a0c
Rollup merge of #97130 - notriddle:notriddle/collect-trait-impls-dup, r=GuillaumeGomez
...
rustdoc: avoid including impl blocks with filled-in generics
Fixes #94937
# Before

# After

2022-06-02 06:44:26 +09:00
Michael Howell
57450c637c
Update src/librustdoc/passes/collect_trait_impls.rs
...
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com >
2022-06-01 09:55:33 -07:00
Guillaume Gomez
5881fd5c95
Display empty impl blocks if they have documentations
2022-05-31 14:02:34 +02:00
Michael Goulet
8eb4fc6057
Rollup merge of #97066 - petrochenkov:nofragkind, r=camelid
...
rustdoc: Remove `ItemFragment(Kind)`
And stop using `write!` when rendering URL fragments to avoid impossible errors.
2022-05-26 20:15:08 -07:00
klensy
678059f7d0
fix simple clippy lints
2022-05-24 12:24:41 -04:00
Guillaume Gomez
8323b053b2
Greatly extend explanations on strip_hidden items
...
Co-authored-by: Michael Howell <michael@notriddle.com >
2022-05-23 14:02:10 +02:00
Vadim Petrochenkov
3f21c31bf4
rustdoc: Some link resolution caching cleanup
2022-05-21 15:38:23 +03:00
Vadim Petrochenkov
c5449f57c1
rustdoc: Stop using write! in UrlFragment::render
2022-05-21 15:21:53 +03:00
Vadim Petrochenkov
f7521db243
rustdoc: Remove ItemFragment(Kind)
2022-05-21 15:08:55 +03:00
Guillaume Gomez
6092cbb17c
Remove fields_stripped fields (and equivalents)
2022-05-21 13:21:12 +02:00
Jacob Pratt
6970246886
Remove crate visibility modifier in libs, tests
2022-05-21 00:32:47 -04:00
Michael Howell
f5ac93b94b
rustdoc: avoid including impl blocks with filled-in generics
...
Fixes #94937
2022-05-17 17:27:14 -07:00
Vadim Petrochenkov
159b56f288
rustdoc: Resolve some more doc links early
2022-05-16 19:26:01 +03:00
Vadim Petrochenkov
b4019ded77
rustdoc: Remove doc link resolution fallback to all macro_rules in the crate
2022-05-15 21:08:32 +03:00
Vadim Petrochenkov
9ba5281c76
resolve: Move collection of all macro_rules in the crate to rustdoc
2022-05-13 21:43:36 +03:00
Vadim Petrochenkov
6c5c7f503e
Fix rebase
2022-05-13 20:42:53 +03:00
Vadim Petrochenkov
a9c14dc440
rustdoc: Use Visibility::is_public more
2022-05-13 20:42:53 +03:00
Vadim Petrochenkov
7689857884
rustdoc: Do not resolve associated item paths unnecessarily
2022-05-13 20:42:53 +03:00
Vadim Petrochenkov
7c2283d3ca
rustdoc: Do not create UrlFragments until they are necessary
...
This simplifies error types and allows to remove `fn resolve_inner` and `fn check_full_res`
`visited_links` caching is not touched for now
2022-05-13 20:42:53 +03:00
Vadim Petrochenkov
7256c6f93e
rustdoc: Remove fn resolve_macro
...
and otherwise unify resolution in macro namespace and other namespaces
2022-05-13 20:42:53 +03:00
Vadim Petrochenkov
95fb05d4d8
rustdoc: Remove ResolutionFailure::Dummy
...
The variant resolution check didn't make sense, and derive trait collision could be processed in a different way
2022-05-13 20:42:52 +03:00
Vadim Petrochenkov
c979ef5d8c
rustdoc: Remove ResolutionFailure::MalformedGenerics
...
in favor of `PreprocessingError::MalformedGenerics`
2022-05-13 20:42:52 +03:00
Vadim Petrochenkov
51eda747b1
rustdoc: Remove ResolutionFailure::NoParentItem
...
It's a bug and not an error
2022-05-13 20:42:52 +03:00
lcnr
bae84a484c
update rustdoc
2022-05-10 12:07:35 +02:00
bors
21d613b111
Auto merge of #96447 - petrochenkov:docregr, r=GuillaumeGomez
...
rustdoc: Resolve doc links on fields during early resolution
Another subset of https://github.com/rust-lang/rust/pull/94857 which fixes https://github.com/rust-lang/rust/issues/96429 .
This case regressed in https://github.com/rust-lang/rust/pull/96135 when `may_have_doc_links`-based filtering was introduced.
Before that filtering structs could collect traits in scope for their fields, but after the filtering structs won't collect anything if they don't have doc comments on them, so we have to visit fields too.
2022-05-04 05:01:47 +00:00
bors
879fb42596
Auto merge of #96431 - petrochenkov:parent, r=cjgillot
...
rustc: Panic by default in `DefIdTree::parent`
Only crate root def-ids don't have a parent, and in majority of cases the argument of `DefIdTree::parent` cannot be a crate root.
So we now panic by default in `parent` and introduce a new non-panicing function `opt_parent` for cases where the argument can be a crate root.
Same applies to `local_parent`/`opt_local_parent`.
2022-05-02 14:03:20 +00:00
Vadim Petrochenkov
5b5964f569
rustc: Panic by default in DefIdTree::parent
...
Only crate root def-ids don't have a parent, and in majority of cases the argument of `DefIdTree::parent` cannot be a crate root.
So we now panic by default in `parent` and introduce a new non-panicing function `opt_parent` for cases where the argument can be a crate root.
Same applies to `local_parent`/`opt_local_parent`.
2022-05-02 01:56:50 +03:00
Vadim Petrochenkov
8b21421873
rustdoc: Track macro_rules scopes during early doc link resolution
...
This way links referring to `macro_rules` items are resolved correctly
2022-05-01 00:02:15 +03:00
Vadim Petrochenkov
044e45c595
rustdoc: Keep full ParentScope during early doc link resolution
2022-04-30 23:06:48 +03:00
Vadim Petrochenkov
921f63fb1f
rustdoc: Early-resolve doc links in all requested namespaces
2022-04-30 23:06:48 +03:00
Michael Howell
8743ce8523
rustdoc: prevent B -> C -> B -> C loops from stack overflowing
2022-04-29 09:06:50 -07:00
Michael Howell
346065f621
rustdoc: fix missing method list for primitive deref target
...
This change makes it so that local impls count when listing primitives that
need retained.
2022-04-28 16:45:05 -07:00
Vadim Petrochenkov
6d590ba942
rustdoc: Resolve doc links on fields during early resolution
2022-04-26 21:36:46 +03:00
bors
5ffebc2cb3
Auto merge of #96301 - notriddle:notriddle/synthetic-impl-prim, r=GuillaumeGomez
...
rustdoc: make primitive synthetic impls for correct doc module
This improves the accuracy of libcore primitive docs, which was missing the blanket and auto impls for most primitive types. To test this, compare nightly [libcore::str] docs, which lack auto traits like Send, with [std::str] docs, which show them.
[libcore::str]: https://doc.rust-lang.org/nightly/core/primitive.str.html
[libstd::str]: https://doc.rust-lang.org/nightly/std/primitive.str.html
It also avoids getting synthetic impls for primitive types on crates that do not actually show them.
<details>
<summary>Before and After trace logs</summary>
## Before
[notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +nightly test.rs 2>&1 | grep -E 'get_blanket_impls\('
TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(isize)
TRACE rustdoc::clean::blanket_impl get_blanket_impls([T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8])
TRACE rustdoc::clean::blanket_impl get_blanket_impls(char)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u128)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u16)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i128)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i16)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(str)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(str)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u8)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i8)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const T)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut T)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const [T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut [T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([T; N])
TRACE rustdoc::clean::blanket_impl get_blanket_impls(bool)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u32)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(usize)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i32)
## After
[notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +dev test.rs 2>&1 | grep -E 'get_blanket_impls\('
TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever)
</details>
2022-04-22 16:47:13 +00:00
bors
8b2393086f
Auto merge of #96282 - petrochenkov:unindent, r=GuillaumeGomez
...
rustdoc: Unindent doc fragments on `Attributes` construction
`Attributes` can be constructed at arbitrary points, even after the `unindent_comments` pass.
`Attributes` that are constructed too late end up unindented.
All doc fragments need to be eventually indented before use, so there are no reasons to not do this immediately during their construction.
Fixes https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/.60unindent_comments.60.20cannot.20work.20as.20a.20separate.20pass .
I'm not sure how to make a minimized reproduction, but unindenting the fragments during their construction should fix the issue.. by construction, and I also verified that all doc strings now hit the `resolver_caches.markdown_links` cache in https://github.com/rust-lang/rust/pull/94857 .
2022-04-22 02:30:27 +00:00
Michael Howell
2e7b5abbfd
rustdoc: make primitive synthetic impls for correct doc module
...
This improves the accuracy of libcore primitive docs, which was missing the
blanket and auto impls for most primitive types. To test this, compare nightly
[libcore::str] docs, which lack auto traits like Send, with [std::str] docs,
which show them.
[libcore::str]: https://doc.rust-lang.org/nightly/core/primitive.str.html
[libstd::str]: https://doc.rust-lang.org/nightly/std/primitive.str.html
It also avoids getting synthetic impls for primitive types on crates that
do not actually show them.
<details>
<summary>Before and After trace logs</summary>
Before:
[notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +nightly test.rs 2>&1 | grep -E 'get_blanket_impls\('
TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(isize)
TRACE rustdoc::clean::blanket_impl get_blanket_impls([T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([u8])
TRACE rustdoc::clean::blanket_impl get_blanket_impls(char)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u128)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u16)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i128)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i16)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(str)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(str)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u8)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i64)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i8)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const T)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut T)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*const [T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls(*mut [T])
TRACE rustdoc::clean::blanket_impl get_blanket_impls([T; N])
TRACE rustdoc::clean::blanket_impl get_blanket_impls(bool)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(f32)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(u32)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(usize)
TRACE rustdoc::clean::blanket_impl get_blanket_impls(i32)
After:
[notriddle@deep-thought test-dingus]$ RUSTDOC_LOG=rustdoc=trace rustdoc +dev test.rs 2>&1 | grep -E 'get_blanket_impls\('
TRACE rustdoc::clean::blanket_impl get_blanket_impls(Whatever)
</details>
2022-04-21 17:06:33 -07:00
Vadim Petrochenkov
7803a41151
rustdoc: Unindent doc fragments on Attributes construction
2022-04-21 16:13:02 +03:00
Vadim Petrochenkov
e0b71fff2a
[WIP] rustdoc: Resolve some more doc links early
2022-04-21 01:18:02 +03:00
Vadim Petrochenkov
5cce8cb4ec
rustdoc: Sligthly optimize Attributes construction and processing before doc link resolution
2022-04-19 22:53:50 +03:00
Vadim Petrochenkov
de287df862
rustdoc: Cache preprocessed markdown links
2022-04-19 22:53:50 +03:00
Vadim Petrochenkov
72ed101428
rustdoc: Optimize and refactor doc link resolution
...
- Cache doc link resolutions obtained early
- Cache markdown links retrieved from doc strings early
- Rename and restructure the code in early doc link resolution to be closer to #94857
2022-04-19 22:53:50 +03:00
Dylan DPC
10e0db5666
Rollup merge of #96118 - GuillaumeGomez:cleanup-def-id-item-id, r=notriddle
...
rustdoc: Rename `def_id` into `item_id` when the type is `ItemId` for readability
As `@notriddle` mentioned in https://github.com/rust-lang/rust/pull/96091 , the field name is inaccurate. This PR fixes it by renaming it accordingly to its real type.
r? `@notriddle`
2022-04-16 19:42:07 +02:00
Guillaume Gomez
b1e6211c5c
Rename def_id into item_id when the type is ItemId for readability
2022-04-16 14:28:09 +02:00
Dylan DPC
91847c43cc
Rollup merge of #96023 - matthiaskrgr:clippyper1304, r=lcnr
...
couple of clippy::perf fixes
2022-04-16 14:25:56 +02:00