]> git.lizzy.rs Git - rust.git/commitdiff
Auto merge of #76897 - Aaron1011:feature/min-proc-macro-metadata, r=petrochenkov
authorbors <bors@rust-lang.org>
Sat, 26 Sep 2020 20:57:31 +0000 (20:57 +0000)
committerbors <bors@rust-lang.org>
Sat, 26 Sep 2020 20:57:31 +0000 (20:57 +0000)
Encode less metadata for proc-macro crates

Currently, we serialize the same crate metadata for proc-macro crates as
we do for normal crates. This is quite wasteful - almost none of this
metadata is ever used, and much of it can't even be deserialized (if it
contains a foreign `CrateNum`).

This PR changes metadata encoding to skip encoding the majority of crate
metadata for proc-macro crates. Most of the `Lazy<[T]>` fields are left
completetly empty, while the non-lazy fields are left as-is.

Additionally, proc-macros now have a def span that does not include
their body. This was done for normal functions in #75465, but was missed
for proc-macros.

As a result of this PR, we should only ever encode local `CrateNum`s
when encoding proc-macro crates. I've added a specialized serialization
impl for `CrateNum` to assert this.


Trivial merge