Commit graph

113 commits

Author SHA1 Message Date
Nicholas Nethercote
7fa8901cd0 rustdoc_json: represent generic args consistently.
They show up in three places: once as `Option<Box<GenericArgs>>`, once
as `Box<GenericArgs>`, and once as `GenericArgs`. The first option is
best. It is more compact because generic args are often missing. This
commit changes the latter two to the former.

Example output, before and after, for the `AssocItemConstraint` change:
```
{"name":"Offset","args":{"angle_bracketed":{"args":[],"constraints":[]}},"binding":{...}}
{"name":"Offset","args":null,"binding":{...}}
```
Example output, before and after, for the `Type::QualifiedPath` change:
```
{"qualified_path":{"name":"Offset","args":{"angle_bracketed":{"args":[],"constraints":[]}}, ...}}
{"qualified_path":{"name":"Offset","args":null, ...}}
```
This reduces JSON output size, but not by much (e.g. 0.5%), because
`AssocItemConstraint` and `Type::QualifiedPath` are uncommon.
2025-06-21 13:52:46 +10:00
Nicholas Nethercote
59a3399148 Fix some comments.
As per the previous commit, generic args here can only appear on the
final segment. So make the comments obey that constraint.
2025-06-21 13:50:52 +10:00
Jana Dönszelmann
b9107a83a1
expected word diagnostic test 2025-06-20 15:06:29 +02:00
Jana Dönszelmann
3c418ec505
bump rustdoc json format number for pretty print change of attribute 2025-06-18 14:04:54 +02:00
Jana Dönszelmann
81f8b570b9
bump rustdoc json version for inline attribute representation 2025-06-17 23:22:51 +02:00
Nicholas Nethercote
fb75e09914 Add a comment to FORMAT_VERSION.
This minimizes the chance of two PRs changing it from N to N+1.
2025-06-17 11:27:31 +10:00
Alona Enraght-Moony
763663ad56 rustdoc-json-type: Depend on serde and serde_derive seperately
Before this commit, serde_derive is built before serde. But serde does
not depend on serde_derive, so that is not needed. Instead, build serde
and serde_derive in parallel.

This speeds up compilation for users depending on rustdoc-json-types out
of tree.

Imports: https://www.github.com/rust-lang/rustdoc-types/pull/49
Co-authored-by: Martin Nordholts <martin.nordholts@codetale.se>
2025-06-03 21:17:33 +00:00
Luca Palmieri
6be3c3ceb7
[rustdoc-json] Implement PartialOrd and Ord for rustdoc_types::Id 2025-06-02 13:43:51 +02:00
León Orell Valerian Liehr
98bd1a6a3a
rustdoc JSON: Don't apply #[repr] privacy heuristics 2025-05-22 21:26:48 +02:00
Alona Enraght-Moony
8cdfabd230 rustdoc-json: Remove false docs and add test for inline attribute
The docs about how `#[inline]` was represented isn't true. Updates the
comment, and adds a test.

CC https://www.github.com/rust-lang/rust/issues/137645
2025-05-21 19:47:41 +00:00
Guillaume Gomez
076016d55a Update rustdoc-json-types FORMAT_VERSION to 45 2025-04-18 20:34:56 +02:00
Guillaume Gomez
59477a8ab2 Make rustdoc JSON Span column 1-based, just like line numbers 2025-04-18 20:32:40 +02:00
Will Glynn
8c50f95cf0 rustdoc: Output target feature information
`#[target_feature]` attributes refer to a target-specific list of
features. Enabling certain features can imply enabling other features.
Certain features are always enabled on certain targets, since they are
required by the target's ABI. Features can also be enabled indirectly
based on other compiler flags.

Feature information is ultimately known to `rustc`. Rather than force
external tools to track it -- which may be wildly impractical due to
`-C target-cpu` -- have `rustdoc` output `rustc`'s feature data.
2025-04-15 21:26:14 -05:00
Predrag Gruevski
bafdbcadd5 rustdoc: Use own logic to print #[repr(..)] attributes in JSON output. 2025-03-22 18:47:12 +00:00
Michael Goulet
e3ac1fa81a Add RTN support to rustdoc 2025-03-15 18:13:27 +00:00
morine0122
112f7b01a1 make precise capturing args in rustdoc Json typed 2025-03-10 21:40:09 +09:00
Jana Dönszelmann
f321f107e3
Fix rustdoc and clippy 2025-02-24 14:31:19 +01:00
Alona Enraght-Moony
510de59dbd rustdoc-json-types: Document that crate name isn't package name. 2025-02-01 19:57:59 +00:00
Matthias Krüger
40e28582bb
Rollup merge of #135799 - aDotInTheVoid:skrrt-skrrt-revrrt, r=GuillaumeGomez
rustdoc-json: Rename `Path::name` to `path`, and give it the path again.

Closes: #135600.

Reverts #134880 (Effectively, but not actually, as the `FORMAT_VERSION` needs to be bumped, changed docs/tests). CC `@AS1100K.`

Also CC `@obi1kenobi` `@LukeMathWalker`

Still needs before being merge-ready:
- [x] Tests for cross-crate paths
- [x] (Maybe) Document what the field does.
- [x] Decide if the field rename is good (https://github.com/rust-lang/rust/pull/135799#issuecomment-2605937831)
- [ ] Squash commits.

r? `@GuillaumeGomez`
2025-01-24 08:08:08 +01:00
Alona Enraght-Moony
0149c0fdd8 rustdoc-json-types: Finalize dyn compatibility renaming 2025-01-22 20:01:17 +00:00
Alona Enraght-Moony
9c0e32bcd2 rustdoc-json: Rename Path::name to path, and give it path (again).
Closes https://github.com/rust-lang/rust/issues/135600

Effectivly reverts https://github.com/rust-lang/rust/pull/134880
2025-01-22 19:29:48 +00:00
Aditya Kumar
2c4aee92fa
Made Path::name only have item name rather than full name 2025-01-14 06:03:43 +00:00
Alona Enraght-Moony
f33dba0287 rustdoc-json: Include safety of statics 2024-12-01 21:39:58 +00:00
bors
7ed1a51b25 Auto merge of #131980 - matthiaskrgr:rollup-iy5nw71, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #131814 (`optimize` attribute applied to things other than methods/functions/c…)
 - #131927 (Check for filecheck directives in files marked `skip-filecheck`)
 - #131967 (Remove `lower_mono_bounds`)
 - #131973 (fix(rustdoc-json-types): document rustc-hash feature)
 - #131976 (feat(rustdoc-json-types): mark simple enums as copy)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-10-20 21:40:21 +00:00
Matthias Krüger
4b658657da
Rollup merge of #131976 - jalil-salame:rustdoc-types-copy-enums, r=aDotInTheVoid
feat(rustdoc-json-types): mark simple enums as copy

Fixes rust-lang/rustdoc-types#26 and some typos in the documentation

r? `@aDotInTheVoid`

I have been assigning these PRs to you `@aDotInTheVoid,` is that okay? I think I'm out of PRs for now, but for future reference c:
2024-10-20 21:04:15 +02:00
Jalil David Salamé Messina
afa75f0aa5
fix(rustdoc-json-types): typos
Typos found some typos in the file, so I fixed them c:
2024-10-20 19:01:36 +02:00
Jalil David Salamé Messina
f047591652
feat(rustdoc-json-types): mark simple enums as copy
Fixes [rust-lang/rustdoc-types#26](https://github.com/rust-lang/rustdoc-types/issues/26)
2024-10-20 19:01:36 +02:00
Jalil David Salamé Messina
880d565df1
fix(rustdoc-json-types): document rustc-hash feature
The `rustc-hash` feature is publicly exposed by the `rustdoc-types`. It
is already documented in that crate's README and Cargo.toml, but we
might as well add some information to the crate docs themselves c:

Follow up to:
- #131936
- [rust-lang/rustdoc-types#42][1]

[1]: https://github.com/rust-lang/rustdoc-types/pull/42
2024-10-20 18:31:29 +02:00
Noratrieb
4348383a0f Update rustc-hash to version 2
This brings in the new algorithm.
2024-10-20 00:12:49 -07:00
Jalil David Salamé Messina
d1fa49b2e6
feat(rustdoc-json-types): introduce rustc-hash feature
This allows the public `rustdoc-types` crate to expose this feature
easily and allows consumers of the crate to get the performance
advantages from doing so.

The reasoning for this was discussed on [Zulip][1]

Changes:
- Make `rustc-hash` optional but default to including it
- Rename all occurrences of `FxHashMap` to `HashMap`.
- Feature gate the import and rename the imported `FxHashMap` to
  `HashMap`
- Introduce a type alias `FxHashMap` which resolves to the currently
  used `HashMap` (`rustc_hash::FxHashMap` or
  `std::collections::HashMap`) for use in `src/librustdoc`.

[1]: https://rust-lang.zulipchat.com/#narrow/channel/266220-t-rustdoc/topic/rustc-hash.20and.20performance.20of.20rustdoc-types
2024-10-19 18:15:09 +02:00
León Orell Valerian Liehr
2e6f3bd1d3
rustdoc-JSON: Rename "object safe" to "dyn compatible" 2024-10-16 23:00:49 +02:00
Trevor Gross
05c0591321
Rollup merge of #130078 - its-the-shrimp:rustdoc-types-compress-ids, r=aDotInTheVoid
rustdoc-json: change item ID's repr from a string to an int

Following [this discussion on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/Optimizing.20the.20.60Id.60.20type.20in.20.60rustdoc-types.60), I've changed the repr of `rustdoc_json_types::Id` from a String to a u32, by adding a `clean::ItemId` interner to `JsonRenderer`

r? ``@aDotInTheVoid``
2024-10-11 16:53:46 -05:00
m
1b5c05433a
fix typo in rustdoc-json-types comment 2024-10-10 23:18:06 -07:00
schvv31n
1e30b5ae45 rustdoc-json: Id(String) -> Id(u32) 2024-09-29 22:09:47 +01:00
Predrag Gruevski
3b9db47f07
rustdoc: update ProcMacro docs section on helper attributes
I believe the mention of attribute macros in the section on proc macro helper attributes is erroneous. As far as I can tell, attribute macros cannot define helper attributes.

The following attribute macro is not valid (fails to build), no matter how I try to define (or skip defining) the helpers:
```rust
#[proc_macro_attribute(attributes(helper))]
pub fn attribute_helpers(_attr: TokenStream, item: TokenStream) -> TokenStream {
    item
}
```

The [language reference](https://doc.rust-lang.org/reference/procedural-macros.html#attribute-macros) also doesn't seem to mention attribute macro helpers. The helpers subsection is inside the section on derive macros.
2024-09-27 14:34:48 -04:00
schvv31n
f2696ab4d3 rustdoc: normalise type/field names in rustdoc-json-types/jsondoclint 2024-09-01 23:58:08 +03:00
Alona Enraght-Moony
9028b5381b rustdoc-json: Use FxHashMap from rustdoc_json_types 2024-08-15 13:12:11 +00:00
kraktus
b735547025
rustdoc-json-types Discriminant: fix typo
"when to complex" should obviously be "too complex"
2024-08-09 20:50:00 +02:00
Alona Enraght-Moony
73ac5e0c6e rustdoc: Remove OpaqueTy 2024-08-01 15:57:45 +00:00
Matthias Krüger
47b76d8d93
Rollup merge of #127290 - its-the-shrimp:document_rustdoc_json_types, r=aDotInTheVoid
Fully document `rustdoc-json-types`

100% of `rustdoc-json-types` is now documented
Here's the summary from rustdoc with `-Zunstable-options --show-coverage`:

```
+-------------------------------------+------------+------------+------------+------------+
| File                                | Documented | Percentage |   Examples | Percentage |
+-------------------------------------+------------+------------+------------+------------+
| src/rustdoc-json-types/lib.rs       |        314 |     100.0% |         23 |      31.9% |
+-------------------------------------+------------+------------+------------+------------+
| Total                               |        314 |     100.0% |         23 |      31.9% |
+-------------------------------------+------------+------------+------------+------------+
```
2024-07-29 07:11:14 +02:00
schvv31n
c881f72807 fully document rustdoc-json-types 2024-07-29 00:54:43 +01:00
Nicholas Nethercote
84ac80f192 Reformat use declarations.
The previous commit updated `rustfmt.toml` appropriately. This commit is
the outcome of running `x fmt --all` with the new formatting options.
2024-07-29 08:26:52 +10:00
Michael Goulet
bd135e487f Add rustdoc-json support for use<> 2024-07-12 05:24:51 -04:00
Alona Enraght-Moony
7e8aac553e rustdoc-json: Better representation of lifetime bounds in where clauses.
As suggested [on zulip][1], there's no need to use `GenericBound` here,
as the only bound a lifetime can have is that it outlives other
lifetimes.

While we're making breaking changes here, I also renamed it from using
"region" to "lifetime", as this is more user-aligned. See [this
comment][2] for details.

[1]: https://rust-lang.zulipchat.com/#narrow/stream/266220-t-rustdoc/topic/.60ItemEnum.3A.3AOpaqueTy.60/near/448871430
[2]: https://github.com/rust-lang/rust/issues/100961#issuecomment-2206565556
2024-07-03 20:00:56 +00:00
Boxy
432c11feb6 Remove Type from rustdoc Const 2024-06-05 22:25:42 +01:00
Matthias Krüger
1f055cdb6e
Rollup merge of #125130 - aDotInTheVoid:id-docs, r=GuillaumeGomez
rustdoc-json-types: Document `Id`

Inspired by finding [someone looking into the internals of an id](https://github.com/rust-lang/rust/issues/91609#issuecomment-2110994540), I realized we only document the fact that these are opaque on [the rfc](https://rust-lang.github.io/rfcs/2963-rustdoc-json.html#id).

r? `@GuillaumeGomez`
2024-05-16 16:22:45 +02:00
Alona Enraght-Moony
504bca9ee6 rustdoc-json-types: Document Id 2024-05-16 12:52:46 +00:00
whosehang
65d7c1d2d6 chore: fix some typos in comments
Signed-off-by: whosehang <whosehang@outlook.com>
2024-04-24 13:58:51 +08:00
Oli Scherer
18ff131c4e Normalize layout test to protect against android alignment differences 2024-04-08 12:06:28 +00:00
Oli Scherer
84acfe86de Actually create ranged int types in the type system. 2024-04-08 12:02:19 +00:00