1
Fork 0

Adjust assert_default_hashing_controls

This commit is contained in:
Aaron Hill 2021-12-26 17:45:21 -05:00
parent 5580e5e1dd
commit 560c90f5df
No known key found for this signature in database
GPG key ID: B4087E510E98B164
3 changed files with 22 additions and 6 deletions

View file

@ -89,11 +89,11 @@ rustc_index::newtype_index! {
}
}
// Assert that the provided `HashStableContext` is configured with the 'default'
// `HashingControls`. We should always have bailed out before getting to here
// with a non-default mode. With this check in place, we can avoid the need
// to maintain separate versions of `ExpnData` hashes for each permutation
// of `HashingControls` settings.
/// Assert that the provided `HashStableContext` is configured with the 'default'
/// `HashingControls`. We should always have bailed out before getting to here
/// with a non-default mode. With this check in place, we can avoid the need
/// to maintain separate versions of `ExpnData` hashes for each permutation
/// of `HashingControls` settings.
fn assert_default_hashing_controls<CTX: HashStableContext>(ctx: &CTX, msg: &str) {
match ctx.hashing_controls() {
// Ideally, we would also check that `node_id_hashing_mode` was always
@ -105,7 +105,13 @@ fn assert_default_hashing_controls<CTX: HashStableContext>(ctx: &CTX, msg: &str)
// FIXME: Enforce that we don't end up transitively hashing any `HirId`s,
// or ensure that this method is always invoked with the same
// `NodeIdHashingMode`
HashingControls { hash_spans: true, node_id_hashing_mode: _ } => {}
//
// Note that we require that `hash_spans` be set according to the global
// `-Z incremental-ignore-spans` option. Normally, this option is disabled,
// which will cause us to require that this method always be called with `Span` hashing
// enabled.
HashingControls { hash_spans, node_id_hashing_mode: _ }
if hash_spans == !ctx.debug_opts_incremental_ignore_spans() => {}
other => panic!("Attempted hashing of {msg} with non-default HashingControls: {:?}", other),
}
}

View file

@ -2058,6 +2058,9 @@ impl InnerSpan {
pub trait HashStableContext {
fn def_path_hash(&self, def_id: DefId) -> DefPathHash;
fn hash_spans(&self) -> bool;
/// Accesses `sess.opts.debugging_opts.incremental_ignore_spans` since
/// we don't have easy access to a `Session`
fn debug_opts_incremental_ignore_spans(&self) -> bool;
fn def_span(&self, def_id: LocalDefId) -> Span;
fn span_data_to_lines_and_cols(
&mut self,