From ef49032297b90e7010b08db04d569dd8a5f0a8f2 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Sun, 9 Aug 2020 08:42:41 -0400 Subject: [PATCH] Add comment about the lack of `ExpnData` serialization for proc-macro crates --- src/librustc_metadata/rmeta/encoder.rs | 4 ++++ src/librustc_span/hygiene.rs | 3 +++ 2 files changed, 7 insertions(+) diff --git a/src/librustc_metadata/rmeta/encoder.rs b/src/librustc_metadata/rmeta/encoder.rs index 352b8bff7e2f..6872693a66cb 100644 --- a/src/librustc_metadata/rmeta/encoder.rs +++ b/src/librustc_metadata/rmeta/encoder.rs @@ -280,6 +280,10 @@ impl<'a, 'tcx> SpecializedEncoder for EncodeContext<'a, 'tcx> { // cross-crate inconsistencies (getting one behavior in the same // crate, and a different behavior in another crate) due to the // limited surface that proc-macros can expose. + // + // IMPORTANT: If this is ever changed, be sure to update + // `rustc_span::hygiene::raw_encode_expn_id` to handle + // encoding `ExpnData` for proc-macro crates. if self.is_proc_macro { SyntaxContext::root().encode(self)?; } else { diff --git a/src/librustc_span/hygiene.rs b/src/librustc_span/hygiene.rs index 87c2c1e6bd08..74dc904b6e61 100644 --- a/src/librustc_span/hygiene.rs +++ b/src/librustc_span/hygiene.rs @@ -1188,6 +1188,9 @@ pub fn raw_encode_expn_id( let data = expn.expn_data(); // We only need to serialize the ExpnData // if it comes from this crate. + // We currently don't serialize any hygiene information data for + // proc-macro crates: see the `SpecializedEncoder` impl + // for crate metadata. if data.krate == LOCAL_CRATE { needs_data(); }