document why rustdoc cannot look at function bodies
This commit is contained in:
parent
8392ed6950
commit
b9f639a01a
|
|
@ -116,6 +116,28 @@ Certain browser features that require secure origins, like `localStorage` and
|
||||||
Service Workers, don't work reliably. We can still use such features but we
|
Service Workers, don't work reliably. We can still use such features but we
|
||||||
should make sure pages are still usable without them.
|
should make sure pages are still usable without them.
|
||||||
|
|
||||||
|
Rustdoc [does not type-check function bodies][platform-specific docs].
|
||||||
|
This works by [overriding the built-in queries for typeck][override queries],
|
||||||
|
by [silencing name resolution errors], and by [not resolving opaque types].
|
||||||
|
This comes with several caveats: in particular, rustdoc *cannot* run any parts of the compiler that
|
||||||
|
require type-checking bodies; for example it cannot generate `.rlib` files or run most lints.
|
||||||
|
We want to move away from this model eventually, but we need some alternative for
|
||||||
|
[the people using it][async-std]; see [various][zulip stop accepting broken code]
|
||||||
|
[previous][rustdoc meeting 2024-07-08] [zulip][compiler meeting 2023-01-26] [discussion][notriddle rfc].
|
||||||
|
For examples of code that breaks if this hack is removed, see
|
||||||
|
[`tests/rustdoc-ui/error-in-impl-trait`].
|
||||||
|
|
||||||
|
[platform-specific docs]: https://doc.rust-lang.org/rustdoc/advanced-features.html#interactions-between-platform-specific-docs
|
||||||
|
[override queries]: https://github.com/rust-lang/rust/blob/52bf0cf795dfecc8b929ebb1c1e2545c3f41d4c9/src/librustdoc/core.rs#L299-L323
|
||||||
|
[silencing name resolution errors]: https://github.com/rust-lang/rust/blob/52bf0cf795dfecc8b929ebb1c1e2545c3f41d4c9/compiler/rustc_resolve/src/late.rs#L4517
|
||||||
|
[not resolving opaque types]: https://github.com/rust-lang/rust/blob/52bf0cf795dfecc8b929ebb1c1e2545c3f41d4c9/compiler/rustc_hir_analysis/src/check/check.rs#L188-L194
|
||||||
|
[async-std]: https://github.com/rust-lang/rust/issues/75100
|
||||||
|
[rustdoc meeting 2024-07-08]: https://rust-lang.zulipchat.com/#narrow/channel/393423-t-rustdoc.2Fmeetings/topic/meeting.202024-07-08/near/449969836
|
||||||
|
[compiler meeting 2023-01-26]: https://rust-lang.zulipchat.com/#narrow/channel/238009-t-compiler.2Fmeetings/topic/.5Bweekly.5D.202023-01-26/near/323755789
|
||||||
|
[zulip stop accepting broken code]: https://rust-lang.zulipchat.com/#narrow/stream/266220-rustdoc/topic/stop.20accepting.20broken.20code
|
||||||
|
[notriddle rfc]: https://rust-lang.zulipchat.com/#narrow/channel/266220-t-rustdoc/topic/Pre-RFC.3A.20stop.20accepting.20broken.20code
|
||||||
|
[`tests/rustdoc-ui/error-in-impl-trait`]: https://github.com/rust-lang/rust/tree/163cb4ea3f0ae3bc7921cc259a08a7bf92e73ee6/tests/rustdoc-ui/error-in-impl-trait
|
||||||
|
|
||||||
## Multiple runs, same output directory
|
## Multiple runs, same output directory
|
||||||
|
|
||||||
Rustdoc can be run multiple times for varying inputs, with its output set to the
|
Rustdoc can be run multiple times for varying inputs, with its output set to the
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue