mirror of
https://github.com/rust-lang/rust.git
synced 2026-05-16 13:05:18 +03:00
Rename various things relating to the StableHash derive macros.
Including the `stable_hasher` attribute and the `HashStableMode` enum. Part of MCP 983.
This commit is contained in:
@@ -29,7 +29,7 @@ pub struct SortedIndexMultiMap<I: Idx, K, V> {
|
||||
items: IndexVec<I, (K, V)>,
|
||||
|
||||
// We can ignore this field because it is not observable from the outside.
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
/// Indices of the items in the set, sorted by the item's key.
|
||||
idx_sorted_by_item_key: Vec<I>,
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#[derive(Debug, Default, StableHash)]
|
||||
pub struct DiagnosticItems {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub id_to_name: DefIdMap<Symbol>,
|
||||
pub name_to_id: FxIndexMap<Symbol, DefId>,
|
||||
}
|
||||
|
||||
@@ -160,7 +160,7 @@ fn from(ident: Ident) -> Self {
|
||||
// platforms where the alignment is already sufficient.
|
||||
#[repr(align(4))]
|
||||
pub struct Lifetime {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
|
||||
/// Either a named lifetime definition (e.g. `'a`, `'static`) or an
|
||||
@@ -369,7 +369,7 @@ pub fn is_global(&self) -> bool {
|
||||
pub struct PathSegment<'hir> {
|
||||
/// The identifier portion of this path segment.
|
||||
pub ident: Ident,
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub res: Res,
|
||||
|
||||
@@ -440,7 +440,7 @@ pub fn span<'tcx>(&self, tcx: impl crate::intravisit::HirTyCtxt<'tcx>) -> Span {
|
||||
#[derive(Clone, Copy, Debug, StableHash)]
|
||||
#[repr(C)]
|
||||
pub struct ConstArg<'hir, Unambig = ()> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub kind: ConstArgKind<'hir, Unambig>,
|
||||
pub span: Span,
|
||||
@@ -538,7 +538,7 @@ pub struct ConstArgArrayExpr<'hir> {
|
||||
|
||||
#[derive(Clone, Copy, Debug, StableHash)]
|
||||
pub struct InferArg {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub span: Span,
|
||||
}
|
||||
@@ -829,7 +829,7 @@ pub enum GenericParamKind<'hir> {
|
||||
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct GenericParam<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub def_id: LocalDefId,
|
||||
pub name: ParamName,
|
||||
@@ -1093,7 +1093,7 @@ pub fn span_for_bound_removal(&self, predicate_pos: usize, bound_pos: usize) ->
|
||||
/// A single predicate in a where-clause.
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct WherePredicate<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub span: Span,
|
||||
pub kind: &'hir WherePredicateKind<'hir>,
|
||||
@@ -1636,7 +1636,7 @@ pub struct OwnerInfo<'hir> {
|
||||
///
|
||||
/// WARNING: The delayed lints are not hashed as a part of the `OwnerInfo`, and therefore
|
||||
/// should only be accessed in `eval_always` queries.
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub delayed_lints: Steal<DelayedLints>,
|
||||
}
|
||||
|
||||
@@ -1710,7 +1710,7 @@ pub struct Block<'hir> {
|
||||
/// An expression at the end of the block
|
||||
/// without a semicolon, if any.
|
||||
pub expr: Option<&'hir Expr<'hir>>,
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
/// Distinguishes between `unsafe { ... }` and `{ ... }`.
|
||||
pub rules: BlockCheckMode,
|
||||
@@ -1740,7 +1740,7 @@ pub struct TyFieldPath {
|
||||
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct TyPat<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub kind: TyPatKind<'hir>,
|
||||
pub span: Span,
|
||||
@@ -1748,7 +1748,7 @@ pub struct TyPat<'hir> {
|
||||
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct Pat<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub kind: PatKind<'hir>,
|
||||
pub span: Span,
|
||||
@@ -1896,7 +1896,7 @@ pub fn is_guaranteed_to_constitute_read_for_never(&self) -> bool {
|
||||
/// except `is_shorthand` is true.
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct PatField<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
/// The identifier for the field.
|
||||
pub ident: Ident,
|
||||
@@ -1952,7 +1952,7 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct PatExpr<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub span: Span,
|
||||
pub kind: PatExprKind<'hir>,
|
||||
@@ -2060,7 +2060,7 @@ pub enum PatKind<'hir> {
|
||||
/// A statement.
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct Stmt<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub kind: StmtKind<'hir>,
|
||||
pub span: Span,
|
||||
@@ -2094,7 +2094,7 @@ pub struct LetStmt<'hir> {
|
||||
pub init: Option<&'hir Expr<'hir>>,
|
||||
/// Else block for a `let...else` binding.
|
||||
pub els: Option<&'hir Block<'hir>>,
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub span: Span,
|
||||
/// Can be `ForLoopDesugar` if the `let` statement is part of a `for` loop
|
||||
@@ -2107,7 +2107,7 @@ pub struct LetStmt<'hir> {
|
||||
/// `<pat> (if <guard>) => <body>`.
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct Arm<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub span: Span,
|
||||
/// If this pattern and the optional guard matches, then `body` is evaluated.
|
||||
@@ -2136,7 +2136,7 @@ pub struct LetExpr<'hir> {
|
||||
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct ExprField<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub ident: Ident,
|
||||
pub expr: &'hir Expr<'hir>,
|
||||
@@ -2410,7 +2410,7 @@ fn into_diag_arg(self, _: &mut Option<std::path::PathBuf>) -> DiagArgValue {
|
||||
/// `const N: usize = { ... }` with `tcx.hir_opt_const_param_default_param_def_id(..)`
|
||||
#[derive(Copy, Clone, Debug, StableHash)]
|
||||
pub struct AnonConst {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub def_id: LocalDefId,
|
||||
pub body: BodyId,
|
||||
@@ -2420,7 +2420,7 @@ pub struct AnonConst {
|
||||
/// An inline constant expression `const { something }`.
|
||||
#[derive(Copy, Clone, Debug, StableHash)]
|
||||
pub struct ConstBlock {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub def_id: LocalDefId,
|
||||
pub body: BodyId,
|
||||
@@ -2436,7 +2436,7 @@ pub struct ConstBlock {
|
||||
/// [rust lang reference]: https://doc.rust-lang.org/reference/expressions.html
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct Expr<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub kind: ExprKind<'hir>,
|
||||
pub span: Span,
|
||||
@@ -3352,7 +3352,7 @@ pub enum ImplItemKind<'hir> {
|
||||
/// * the `f(..): Bound` in `Trait<f(..): Bound>` (feature `return_type_notation`)
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct AssocItemConstraint<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub ident: Ident,
|
||||
pub gen_args: &'hir GenericArgs<'hir>,
|
||||
@@ -3432,7 +3432,7 @@ pub enum AmbigArg {}
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
#[repr(C)]
|
||||
pub struct Ty<'hir, Unambig = ()> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub span: Span,
|
||||
pub kind: TyKind<'hir, Unambig>,
|
||||
@@ -3678,7 +3678,7 @@ pub struct UnsafeBinderTy<'hir> {
|
||||
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct OpaqueTy<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub def_id: LocalDefId,
|
||||
pub bounds: GenericBounds<'hir>,
|
||||
@@ -3718,7 +3718,7 @@ pub fn name(self) -> Symbol {
|
||||
/// since resolve_bound_vars operates on `Lifetime`s.
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct PreciseCapturingNonLifetimeArg {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub ident: Ident,
|
||||
pub res: Res,
|
||||
@@ -3918,7 +3918,7 @@ pub fn contains_label(&self) -> bool {
|
||||
/// Represents a parameter in a function header.
|
||||
#[derive(Debug, Clone, Copy, StableHash)]
|
||||
pub struct Param<'hir> {
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub pat: &'hir Pat<'hir>,
|
||||
pub ty_span: Span,
|
||||
@@ -4219,7 +4219,7 @@ pub struct Variant<'hir> {
|
||||
/// Name of the variant.
|
||||
pub ident: Ident,
|
||||
/// Id of the variant (not the constructor, see `VariantData::ctor_hir_id()`).
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub def_id: LocalDefId,
|
||||
/// Fields and constructor id of the variant.
|
||||
@@ -4259,7 +4259,7 @@ pub enum UseKind {
|
||||
pub struct TraitRef<'hir> {
|
||||
pub path: &'hir Path<'hir>,
|
||||
// Don't hash the `ref_id`. It is tracked via the thing it is used to access.
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_ref_id: HirId,
|
||||
}
|
||||
|
||||
@@ -4295,7 +4295,7 @@ pub struct FieldDef<'hir> {
|
||||
pub span: Span,
|
||||
pub vis_span: Span,
|
||||
pub ident: Ident,
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub hir_id: HirId,
|
||||
pub def_id: LocalDefId,
|
||||
pub ty: &'hir Ty<'hir>,
|
||||
@@ -4320,11 +4320,11 @@ pub enum VariantData<'hir> {
|
||||
/// A tuple variant.
|
||||
///
|
||||
/// E.g., `Bar(..)` as in `enum Foo { Bar(..) }`.
|
||||
Tuple(&'hir [FieldDef<'hir>], #[stable_hasher(ignore)] HirId, LocalDefId),
|
||||
Tuple(&'hir [FieldDef<'hir>], #[stable_hash(ignore)] HirId, LocalDefId),
|
||||
/// A unit variant.
|
||||
///
|
||||
/// E.g., `Bar = ..` as in `enum Foo { Bar = .. }`.
|
||||
Unit(#[stable_hasher(ignore)] HirId, LocalDefId),
|
||||
Unit(#[stable_hash(ignore)] HirId, LocalDefId),
|
||||
}
|
||||
|
||||
impl<'hir> VariantData<'hir> {
|
||||
|
||||
@@ -59,10 +59,10 @@ pub fn extension(attr: TokenStream, input: TokenStream) -> TokenStream {
|
||||
}
|
||||
|
||||
decl_derive!(
|
||||
[StableHash, attributes(stable_hasher)] => stable_hash::hash_stable_derive
|
||||
[StableHash, attributes(stable_hash)] => stable_hash::stable_hash_derive
|
||||
);
|
||||
decl_derive!(
|
||||
[StableHash_NoContext, attributes(stable_hasher)] => stable_hash::hash_stable_no_context_derive
|
||||
[StableHash_NoContext, attributes(stable_hash)] => stable_hash::stable_hash_no_context_derive
|
||||
);
|
||||
|
||||
// Encoding and Decoding derives
|
||||
|
||||
@@ -10,7 +10,7 @@ fn parse_attributes(field: &syn::Field) -> Attributes {
|
||||
let mut attrs = Attributes { ignore: false, project: None };
|
||||
for attr in &field.attrs {
|
||||
let meta = &attr.meta;
|
||||
if !meta.path().is_ident("stable_hasher") {
|
||||
if !meta.path().is_ident("stable_hash") {
|
||||
continue;
|
||||
}
|
||||
let mut any_attr = false;
|
||||
@@ -31,20 +31,20 @@ fn parse_attributes(field: &syn::Field) -> Attributes {
|
||||
Ok(())
|
||||
});
|
||||
if !any_attr {
|
||||
panic!("error parsing stable_hasher");
|
||||
panic!("error parsing stable_hash");
|
||||
}
|
||||
}
|
||||
attrs
|
||||
}
|
||||
|
||||
pub(crate) fn hash_stable_derive(s: synstructure::Structure<'_>) -> proc_macro2::TokenStream {
|
||||
hash_stable_derive_with_mode(s, HashStableMode::Normal)
|
||||
pub(crate) fn stable_hash_derive(s: synstructure::Structure<'_>) -> proc_macro2::TokenStream {
|
||||
stable_hash_derive_with_mode(s, HashStableMode::Normal)
|
||||
}
|
||||
|
||||
pub(crate) fn hash_stable_no_context_derive(
|
||||
pub(crate) fn stable_hash_no_context_derive(
|
||||
s: synstructure::Structure<'_>,
|
||||
) -> proc_macro2::TokenStream {
|
||||
hash_stable_derive_with_mode(s, HashStableMode::NoContext)
|
||||
stable_hash_derive_with_mode(s, HashStableMode::NoContext)
|
||||
}
|
||||
|
||||
enum HashStableMode {
|
||||
@@ -64,7 +64,7 @@ enum HashStableMode {
|
||||
NoContext,
|
||||
}
|
||||
|
||||
fn hash_stable_derive_with_mode(
|
||||
fn stable_hash_derive_with_mode(
|
||||
mut s: synstructure::Structure<'_>,
|
||||
mode: HashStableMode,
|
||||
) -> proc_macro2::TokenStream {
|
||||
@@ -75,8 +75,8 @@ fn hash_stable_derive_with_mode(
|
||||
|
||||
s.add_bounds(add_bounds);
|
||||
|
||||
let discriminant = hash_stable_discriminant(&mut s);
|
||||
let body = hash_stable_body(&mut s);
|
||||
let discriminant = stable_hash_discriminant(&mut s);
|
||||
let body = stable_hash_body(&mut s);
|
||||
|
||||
s.bound_impl(
|
||||
quote!(::rustc_data_structures::stable_hash::StableHash),
|
||||
@@ -94,7 +94,7 @@ fn stable_hash<__Hcx: ::rustc_data_structures::stable_hash::StableHashCtxt>(
|
||||
)
|
||||
}
|
||||
|
||||
fn hash_stable_discriminant(s: &mut synstructure::Structure<'_>) -> proc_macro2::TokenStream {
|
||||
fn stable_hash_discriminant(s: &mut synstructure::Structure<'_>) -> proc_macro2::TokenStream {
|
||||
match s.ast().data {
|
||||
syn::Data::Enum(_) => quote! {
|
||||
::std::mem::discriminant(self).stable_hash(__hcx, __hasher);
|
||||
@@ -104,7 +104,7 @@ fn hash_stable_discriminant(s: &mut synstructure::Structure<'_>) -> proc_macro2:
|
||||
}
|
||||
}
|
||||
|
||||
fn hash_stable_body(s: &mut synstructure::Structure<'_>) -> proc_macro2::TokenStream {
|
||||
fn stable_hash_body(s: &mut synstructure::Structure<'_>) -> proc_macro2::TokenStream {
|
||||
s.each(|bi| {
|
||||
let attrs = parse_attributes(bi.ast());
|
||||
if attrs.ignore {
|
||||
|
||||
@@ -121,7 +121,7 @@ pub struct Generics {
|
||||
pub own_params: Vec<GenericParamDef>,
|
||||
|
||||
/// Reverse map to the `index` field of each `GenericParamDef`.
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
pub param_def_id_to_index: FxHashMap<DefId, u32>,
|
||||
|
||||
pub has_self: bool,
|
||||
|
||||
@@ -1133,7 +1133,7 @@ pub struct OutputFilenames {
|
||||
/// preserved with a flag like `-C save-temps`, since these files may be
|
||||
/// hard linked.
|
||||
// This does not affect incr comp outputs, only where temp files are stored.
|
||||
#[stable_hasher(ignore)]
|
||||
#[stable_hash(ignore)]
|
||||
invocation_temp: Option<String>,
|
||||
|
||||
explicit_dwo_out_directory: Option<PathBuf>,
|
||||
|
||||
Reference in New Issue
Block a user