1
Fork 0
Commit graph

37 commits

Author SHA1 Message Date
Rune Tynan
0a91daeaa3
Vec -> HashSet 2021-02-08 16:04:14 -05:00
Rune Tynan
a26fa74d3c
Make header a vec of modifiers, make FunctionPointer consistent with Function and Method. 2021-02-08 14:00:30 -05:00
bors
ae00b62ceb Auto merge of #81502 - CraftSpider:method-abi, r=jyn514
Add abi field to `Method`

Also bumps version and adds a test (Will conflict with #81500, whichever is merged first)

Rationale: It's possible for methods to have an ABI. This should be exposed in the JSON.
2021-02-07 10:59:41 +00:00
Rune Tynan
ac75fafd1c
Remove accidentally left-behind git mark 2021-02-06 17:37:36 -05:00
Rune Tynan
30ecde0beb
Add abi field to Method 2021-02-05 22:25:11 -05:00
Guillaume Gomez
4810910b0b Remove Function all_types and ret_types fields 2021-02-05 17:23:52 +01:00
Mara Bos
e98e42b881
Rollup merge of #81500 - CraftSpider:union-kind, r=jyn514
Remove struct_type from union output

Also bumps the format number and adds a test

Rationale: It's illegal to have unions of the form `union Union(i32, f32);`, or `union Union;`. The struct_type field was recently removed from the rustdoc Union AST, at which time this field was changed to always just read "union". It makes sense to completely remove it, as it provides no information.
2021-02-05 12:25:59 +01:00
Rune Tynan
3106de5f2a
Remove struct_type from union output and bump format 2021-01-28 23:30:40 -05:00
Rune Tynan
a2f5c72a2d
Fix has_body for trait methods 2021-01-28 23:24:12 -05:00
Rune Tynan
67b78a0271
Update crate name and add README 2021-01-27 18:58:44 -05:00
Rune Tynan
c689b97fba
Split JSON into separately versioned crate 2021-01-27 18:56:57 -05:00
Mara Bos
2ceee72427
Rollup merge of #81227 - CraftSpider:struct-type-clean, r=jyn514
Remove doctree::StructType

Also removes it from the Union type, as unions can only ever be 'Plain'. Adds a new StructType to JSON, 'union', as the easiest way to encode the type of a union there. This leaves only one item in doctree, `Module`.

r? `@jyn514`
2021-01-22 14:30:16 +00:00
Rune Tynan
3349b40d47
Remove StructType entirely and replace it with CtorKind 2021-01-20 17:19:46 -05:00
Rune Tynan
450c5eae1d
Move StructType to clean, remove it from Unions, make JSON output whether something is a union 2021-01-20 16:46:34 -05:00
Rune Tynan
76511a7a71
Make 'docs' optional 2021-01-20 15:58:03 -05:00
Joshua Nelson
d11855a8ce Rename VariantKind -> Variant
There's no `Variant`, so it seems silly to have `Kind`.
2021-01-15 13:55:03 -05:00
Joshua Nelson
dd459a2be6 Remove useless clean::Variant struct
It had exactly one field and no special behavior, so there was no point.
2021-01-15 13:54:59 -05:00
Guillaume Gomez
34d128a263 Replace under-used ImplPolarity enum with a boolean 2021-01-09 14:59:37 +01:00
Joshua Nelson
4a4426377e Box ItemKind to reduce the size of Item
This brings the size of `Item` from

```
[src/librustdoc/lib.rs:103] std::mem::size_of::<Item>() = 680
```

to

```
[src/librustdoc/lib.rs:103] std::mem::size_of::<Item>() = 280
```
2020-12-23 12:50:35 -05:00
bors
28d73a3ee3 Auto merge of #80099 - jyn514:visibility-on-demand, r=GuillaumeGomez
Remove `DefPath` from `Visibility` and calculate it on demand

Depends on #80090 and should not be merged before. Helps with https://github.com/rust-lang/rust/issues/79103 and https://github.com/rust-lang/rust/issues/76382.

cc https://github.com/rust-lang/rust/pull/80014#issuecomment-746810284 - `@nnethercote` I figured it out! It was simpler than I expected :)

This brings the size of `clean::Visibility` down from 40 bytes to 8.

Note that this does *not* remove `clean::Visibility`, even though it's now basically the same as `ty::Visibility`, because the `Invsible` variant means something different from `Inherited` and I thought it would be be confusing to merge the two. See the new comments on `impl Clean for ty::Visibility` for details.
2020-12-23 06:39:15 +00:00
bors
18b745e9bf Auto merge of #80095 - jyn514:stability-on-demand, r=GuillaumeGomez
[rustdoc] Calculate stability, const_stability, and deprecation on-demand

Previously, they would always be calculated ahead of time, which bloated the size of `clean::Item`.

Builds on https://github.com/rust-lang/rust/pull/80090 and should not be merged before. Helps with https://github.com/rust-lang/rust/issues/79103 and https://github.com/rust-lang/rust/issues/76382.

cc https://github.com/rust-lang/rust/pull/80014#issuecomment-746810284

This brings `Item` down to 568 bytes, down from 616.
2020-12-23 03:35:32 +00:00
bors
50a90975c0 Auto merge of #80154 - GuillaumeGomez:str-to-symbol, r=jyn514
Continue String to Symbol conversion in rustdoc (2)

Follow-up of #80119.

This is the last one (and I actually expected more conversions but seems like it was the last one remaining...).

r? `@jyn514`
2020-12-18 22:54:47 +00:00
Joshua Nelson
a2fb4b95dd Remove DefPath from Visibility and calculate it on demand 2020-12-18 12:29:55 -05:00
Joshua Nelson
1523f67f16 Calculate stability, const_stability, and deprecation on-demand
Previously, they would always be calculated ahead of time, which bloated
the size of `clean::Item`.
2020-12-18 09:27:34 -05:00
Guillaume Gomez
57266f1df6 Continue String to Symbol conversion in rustdoc 2020-12-18 12:05:51 +01:00
bors
d8d3ab96aa Auto merge of #80090 - jyn514:tcx-in-render, r=GuillaumeGomez
Pass a `TyCtxt` through to `FormatRender`

This is the next step after https://github.com/rust-lang/rust/pull/79957 for https://github.com/rust-lang/rust/issues/76382. Eventually I plan to use this to remove `stability`, `const_stability`, and `deprecation` from `Item`, but that needs more extensive changes (in particular, https://github.com/rust-lang/rust/pull/75355 or something like it).

This has no actual changes to behavior, it's just moving types around.

ccc https://github.com/rust-lang/rust/pull/80014#issuecomment-746810284
2020-12-18 08:44:50 +00:00
Guillaume Gomez
44e226ceb7 Continue String to Symbol conversion in rustdoc 2020-12-17 18:19:38 +01:00
Joshua Nelson
47c969436a Make it compile 2020-12-17 11:36:04 -05:00
Guillaume Gomez
50d221c924 Replace String with Symbol where possible 2020-12-16 22:04:27 +01:00
bors
90f4b52961 Auto merge of #80041 - jyn514:shrink-item, r=GuillaumeGomez
Get rid of `clean::Deprecation`

This brings the size of `item.deprecation` from 56 to 16 bytes. Helps with #79103 and https://github.com/rust-lang/rust/issues/76382, in the same vein as https://github.com/rust-lang/rust/pull/79957.

r? `@GuillaumeGomez`
2020-12-16 03:35:08 +00:00
Joshua Nelson
a16904fecf Switch to Symbol for item.name
This decreases the size of `Item` from 680 to 616 bytes. It also does a
lot less work since it no longer has to copy as much.
2020-12-14 22:19:15 -05:00
Joshua Nelson
7d452430fa Get rid of clean::Deprecation
This brings the size of `item.deprecation` from 56 to 16 bytes.
2020-12-14 22:00:46 -05:00
Joshua Nelson
0e574fb39a Fix the JSON backend
This was simpler than expected.
2020-12-12 00:01:25 -05:00
Joshua Nelson
4fa95b3a07 Calculate span info on-demand instead of ahead of time
This should *vastly* reduce memory usage.
2020-12-12 00:01:01 -05:00
Nixon Enraght-Moony
601820028c Discard const_stability 2020-12-01 19:01:34 +00:00
Nixon Enraght-Moony
40b5470b0d Address review comments.
Go back to CRATE_DEF_INDEX

Minor niceness improvements

Don't output hidden items

Remove striped items from fields

Add $TEST_BASE_DIR

Small catch
2020-12-01 18:34:39 +00:00
Joseph Ryan
66884e318f Add json backend
Respond to comments and start adding tests

Fix re-exports and extern-crate

Add expected output tests

Add restricted paths

Format

Fix: associated methods missing in output

Ignore stripped items

Mark stripped items

removing them creates dangling references

Fix tests and update conversions

Don't panic if JSON backend fails to create a file

Fix attribute error in JSON testsuite

Move rustdoc-json to rustdoc/

This way it doesn't have to build rustc twice. Eventually it should
probably get its own suite, like rustdoc-js, but that can be fixed in a
follow-up.

Small cleanups

Don't prettify json before printing

This fully halves the size of the emitted JSON.

Add comments

[BREAKING CHANGE] rename version -> crate_version

[BREAKING CHANGE] rename source -> span

Use exhaustive matches

Don't qualify imports for DefId

Rename clean::{ItemEnum -> ItemKind}, clean::Item::{inner -> kind}

Fix Visibility conversion

clean::Visability was changed here:
https://github.com/rust-lang/rust/pull/77820/files#diff-df9f90aae0b7769e1eb6ea6f1d73c1c3f649e1ac48a20e169662a8930eb427beL1467-R1509

More churn catchup

Format
2020-12-01 18:34:39 +00:00