Commit Graph

1039 Commits

Author SHA1 Message Date
Joshua Nelson
cb7e527692 Fix broken handling of primitive items
- Fix broken handling of primitive associated items
- Remove fragment hack

  Fixes 83083

- more logging
- Update CrateNum hacks

  The CrateNum has no relation to where in the dependency tree the crate
  is, only when it's loaded. Explicitly special-case core instead of
  assuming it will be the first DefId.

- Update and add tests
- Cache calculation of primitive locations

  This could possibly be avoided by passing a Cache into
  collect_intra_doc_links; but that's a much larger change, and doesn't
  seem valuable other than for this.
2021-09-12 02:30:24 +00:00
Matthias Krüger
c1e96085d3 don't clone types that are Copy (clippy::clone_on_copy) 2021-09-11 10:18:56 +02:00
Manish Goregaokar
e0e3d85ec3 Rollup merge of #88720 - GuillaumeGomez:rustdoc-coverage-fields-count, r=Manishearth
Rustdoc coverage fields count

Follow-up of #88688.

Instead of requiring enum tuple variant fields and tuple struct fields to be documented, we count them if they are documented, otherwise we don't include them in the count.

r? `@Manishearth`
2021-09-10 08:23:22 -07:00
Guillaume Gomez
64344cce14 Don't require documentation for fields in an enum tuple variant or for tuple struct fields. 2021-09-10 10:49:42 +02:00
Hans Niklas Jacob
c86c63436a Allow missing code examples in trait impls. 2021-09-09 13:13:48 +02:00
Noah Lev
208a5fd322 Use summary_opts() for Markdown summaries
It was accidentally changed to use `opts()` in #86451.

I also renamed `opts()` to `main_body_opts()` to make this kind of
accidental change less likely.
2021-09-03 17:10:52 -07:00
Mara Bos
f4f5dd5186 Rollup merge of #88391 - GuillaumeGomez:fix-json-enum-variant, r=camelid,notriddle
Fix json tuple struct enum variant

Fixes #87887.

cc `@dsherret` `@camelid`

r? `@notriddle`
2021-08-31 17:54:54 +02:00
Guillaume Gomez
ed30993456 Use the correct type for Enum variant tuples 2021-08-29 16:00:48 +02:00
inquisitivecrystal
3ee6d0b6b6 Fix: don't document private macros by default 2021-08-29 00:31:15 -07:00
Joshua Nelson
c60a370dac Fix the bugs and add a regression test
- All attributes for an item need to be considered at once, they can't
  be considered a line at a time.
- The top-level crate was not being visited. This bug was caught by
  `extern-crate-used-only-in-link`, which I'm very glad I added.
- Make the loader private to the module, so that only one function is
  exposed.
2021-08-26 16:58:25 +00:00
Joshua Nelson
d933edd5c6 Revert "Revert "Don't load all extern crates unconditionally""
This reverts commit 5f0c54db4e.
2021-08-22 15:25:42 +00:00
Marcel Hellwig
0f081832b4 remove box_syntax uses from cranelift and tools 2021-08-18 09:31:51 +02:00
Esteban Kuber
34d19634f5 Use smaller spans for some structured suggestions
Use more accurate suggestion spans for

* argument parse error
* fully qualified path
* missing code block type
* numeric casts
* E0212
2021-08-12 09:52:38 +00:00
bors
bb744e1e9f Auto merge of #87568 - petrochenkov:localevel, r=cjgillot
rustc: Replace `HirId`s with `LocalDefId`s in `AccessLevels` tables

and passes using those tables - primarily privacy checking, stability checking and dead code checking.

All these passes work with definitions rather than with arbitrary HIR nodes.
r? `@cjgillot`
cc `@lambinoo` (#87487)
2021-08-04 02:04:04 +00:00
Matthias Krüger
02b7754f9e don't use .into() to convert types to identical types (clippy::useless_conversion)
Example:
let _x: String = String::from("hello world").into();
2021-08-03 10:17:57 +02:00
Vadim Petrochenkov
b08576b2ad rustc: Replace HirIds with LocalDefIds in AccessLevels tables
and passes using them - primarily privacy checking, stability checking and dead code checking.

WIP
2021-07-31 19:31:29 +03:00
Guillaume Gomez
a2f3e4a5da Change span for intra-doc links errors 2021-07-29 13:37:09 +02:00
Deadbeef
3dab2d210f suggest removing disambiguator if linking to field 2021-07-12 19:48:07 +08:00
Guillaume Gomez
a2654fb64c Rework SESSION_GLOBALS API to prevent overwriting it 2021-07-08 16:16:28 +02:00
Justus K
97c82d8731 Revert "rustdoc: Store DefId's in ItemId on heap for decreasing Item's size"
This reverts commit 41a345d4c46dad1a98c9993bc78513415994e8ba.
2021-07-05 19:51:54 +02:00
Justus K
45d3daece3 rustdoc: Store DefId's in ItemId on heap for decreasing Item's size 2021-07-05 19:51:51 +02:00
Justus K
acd4dc2d0c rustdoc: Rename expect_real to expect_def_id, remove Item::is_fake 2021-07-05 19:49:48 +02:00
Justus K
43e1cdbaf9 rustdoc: Replace FakeDefId with new ItemId type 2021-07-05 19:49:43 +02:00
Guillaume Gomez
b7654a3258 Rollup merge of #85749 - GuillaumeGomez:revert-smart-extern-crate-load, r=jyn514
Revert "Don't load all extern crates unconditionally"

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

This reverts https://github.com/rust-lang/rust/pull/83738.

For the "smart" load of external crates, we need to be able to access their items in order to check their doc comments, which seems, if not impossible, quite complicated using only the AST.

For some context, I first tried to extend the `IntraLinkCrateLoader` visitor by adding `visit_foreign_item`. Unfortunately, it never enters into this call, so definitely not the right place...

I then added `visit_use_tree` to then check all the imports outside with something like this:

```rust
let mut loader = crate::passes::collect_intra_doc_links::IntraLinkCrateLoader::new(resolver);
    ast::visit::walk_crate(&mut loader, krate);

    let mut items = Vec::new();
    for import in &loader.imports_to_check {
        if let Some(item) = krate.items.iter().find(|i| i.id == *import) {
            items.push(item);
        }
    }
    for item in items {
        ast::visit::walk_item(&mut item);
        for attr in &item.attrs {
            loader.check_attribute(attr);
        }
    }
```

This was, of course, a failure. We find the items without problems, but we still can't go into the external crate to check its items' attributes.

Finally, `@jyn514` suggested to look into the [`CrateLoader`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/creader/struct.CrateLoader.html), but it only seems to provide metadata (I went through [`CStore`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/creader/struct.CStore.html) and [`CrateMetadata`](https://doc.rust-lang.org/nightly/nightly-rustc/rustc_metadata/rmeta/decoder/struct.CrateMetadata.html)).

I think we are too limited here (with AST only) to be able to determine the crates we actually need to import, but it's very likely that I missed something. Maybe `@petrochenkov` or `@Aaron1011` have an idea?

So until we find a way to make it work completely, we need to revert it to fix the ICE. Once merged, we'll need to re-open #68427.

r? `@jyn514`
2021-07-02 11:35:27 +02:00
Guillaume Gomez
5f0c54db4e Revert "Don't load all extern crates unconditionally" 2021-07-01 18:25:53 +02:00
bjorn3
c7d2099de0 Rename all_crate_nums query to crates and remove useless wrapper 2021-07-01 16:51:11 +02:00
Dylan DPC
f9ebf1edb5 Rollup merge of #86523 - LeSeulArtichaut:macros-disambiguators, r=jyn514
Improvements to intra-doc link macro disambiguators

A few small improvements around macro disambiguators:
- display the link text as it was entered: previously `[macro!()]` would be displayed without the parantheses (fixes #86309)
- support `!{}` and `![]` as macro disambiguators (fixes #86310)

r? `@jyn514` cc `@Manishearth` `@camelid`
2021-06-23 00:20:21 +02:00
LeSeulArtichaut
dc591e18e8 Accept !{} and ![] as macro disambiguators 2021-06-22 11:36:19 +02:00
Yuki Okushi
83d9b1bb02 Rollup merge of #86334 - LeSeulArtichaut:86120-links-type-aliases, r=jyn514
Resolve type aliases to the type they point to in intra-doc links

This feels a bit sketchy, but I think it's better than just rejecting the link.
Helps with #86120, r? ``@jyn514``
2021-06-22 07:37:49 +09:00
LeSeulArtichaut
4cd5affcf2 Fix handling of disambiguator suffixes for intra-doc links 2021-06-21 20:26:14 +02:00
LeSeulArtichaut
dd90900cf4 Resolve type aliases to the type they point to in intra-doc links 2021-06-21 11:15:07 +02:00
bors
6936ca8c99 Auto merge of #86311 - LeSeulArtichaut:cleanup-array-iter, r=jackh726
Use the now available implementation of `IntoIterator` for arrays
2021-06-15 07:46:48 +00:00
LeSeulArtichaut
e3ca81fd5a Use the now available implementation of IntoIterator for arrays 2021-06-14 23:40:09 +02:00
Felix S. Klock II
0deba5546d manually crafted revert of PR #80653, to address issue #82465.
(update: placated tidy)
(update: rebased post PR #84707 )

merge me
2021-06-10 09:48:58 +00:00
bors
34b9932f5c Auto merge of #85990 - jyn514:channel-replace-rustdoc, r=Manishearth
rustdoc: link consistently to stable/beta in diagnostic messages

Builds on https://github.com/rust-lang/rust/pull/84942. This makes the diagnostics consistent with the links.
2021-06-05 08:42:05 +00:00
Yuki Okushi
74c744e54a Rollup merge of #84466 - jyn514:prim-str, r=GuillaumeGomez
rustdoc: Remove `PrimitiveType::{to_url_str, as_str}`

These can easily be rewritten in terms of `as_sym`, and this avoids bugs where the two get out of sync.

I don't expect this to have a perf impact, but I'll start a perf run just in case.
2021-06-05 06:13:30 +09:00
Joshua Nelson
4c71610e3e rustdoc: link consistently to stable/beta in diagnostic messages 2021-06-04 14:58:22 -04:00
Joshua Nelson
5079744414 Remove PrimitiveType::as_str 2021-05-20 09:55:56 -04:00
Joshua Nelson
587c50452f Fix rebase conflicts 2021-05-17 23:33:04 -04:00
Joshua Nelson
18f6922d8c Address review comments
- Simplify boolean expression
- Give an example of invalid syntax
- Remove explanation of why code block is text
2021-05-17 21:31:05 -04:00
Joshua Nelson
b885d81a4a Rename INVALID_RUST_CODEBLOCK{,S} 2021-05-17 21:31:04 -04:00
Joshua Nelson
4120f7561c Add back missing help for ignore blocks
This also gives a better error message when a span is missing.
2021-05-17 21:31:03 -04:00
Alexis Bourget
b574c67b93 New rustdoc lint to respect -Dwarnings correctly
This adds a new lint to `rustc` that is used in rustdoc when a code
block is empty or cannot be parsed as valid Rust code.

Previously this was unconditionally a warning. As such some
documentation comments were (unknowingly) abusing this to pass despite
the `-Dwarnings` used when compiling `rustc`, this should not be the
case anymore.
2021-05-17 21:31:01 -04:00
bors
3396a383bb Auto merge of #85178 - cjgillot:local-crate, r=oli-obk
Remove CrateNum parameter for queries that only work on local crate

The pervasive `CrateNum` parameter is a remnant of the multi-crate rustc idea.

Using `()` as query key in those cases avoids having to worry about the validity of the query key.
2021-05-17 01:42:03 +00:00
Guillaume Gomez
b68d5433c9 Rollup merge of #85067 - Stupremee:minimize-amount-of-fake-defids, r=jyn514,GuillaumeGomez
Minimize amount of fake `DefId`s used in rustdoc

Follow up from #84707, which minimizes the amount of fake defids to the smallest amount possible. Every `FakeDefId` that is now used in the rustdoc library must be preserved and can not be replaced with a normal `DefId`.
2021-05-15 13:29:47 +02:00
Guillaume Gomez
9682fa9dc4 Rollup merge of #84461 - jyn514:remove-strip-item, r=GuillaumeGomez
rustdoc: Remove unnecessary `StripItem` wrapper
2021-05-15 13:29:47 +02:00
Justus K
67d8d18b23 Minimize amount of fake DefIds used in rustdoc 2021-05-15 13:21:35 +02:00
Camille GILLOT
4e8d4bdf4b Use () for all_traits. 2021-05-12 13:58:46 +02:00
Camille GILLOT
9849327384 Use () for privacy. 2021-05-12 13:58:45 +02:00
bors
e1ff91f439 Auto merge of #83813 - cbeuw:remap-std, r=michaelwoerister
Fix `--remap-path-prefix` not correctly remapping `rust-src` component paths and unify handling of path mapping with virtualized paths

This PR fixes #73167 ("Binaries end up containing path to the rust-src component despite `--remap-path-prefix`") by preventing real local filesystem paths from reaching compilation output if the path is supposed to be remapped.

`RealFileName::Named` introduced in #72767 is now renamed as `LocalPath`, because this variant wraps a (most likely) valid local filesystem path.

`RealFileName::Devirtualized` is renamed as `Remapped` to be used for remapped path from a real path via `--remap-path-prefix` argument, as well as real path inferred from a virtualized (during compiler bootstrapping) `/rustc/...` path. The `local_path` field is now an `Option<PathBuf>`, as it will be set to `None` before serialisation, so it never reaches any build output. Attempting to serialise a non-`None` `local_path` will cause an assertion faliure.

When a path is remapped, a `RealFileName::Remapped` variant is created. The original path is preserved in `local_path` field and the remapped path is saved in `virtual_name` field. Previously, the `local_path` is directly modified which goes against its purpose of "suitable for reading from the file system on the local host".

`rustc_span::SourceFile`'s fields `unmapped_path` (introduced by #44940) and `name_was_remapped` (introduced by #41508 when `--remap-path-prefix` feature originally added) are removed, as these two pieces of information can be inferred from the `name` field: if it's anything other than a `FileName::Real(_)`, or if it is a `FileName::Real(RealFileName::LocalPath(_))`, then clearly `name_was_remapped` would've been false and `unmapped_path` would've been `None`. If it is a `FileName::Real(RealFileName::Remapped{local_path, virtual_name})`, then `name_was_remapped` would've been true and `unmapped_path` would've been `Some(local_path)`.

cc `@eddyb` who implemented `/rustc/...` path devirtualisation
2021-05-12 11:05:56 +00:00