Skip to content

Commit

Permalink
modify inherent impls test to indicate TypeckTables do not change
Browse files Browse the repository at this point in the history
I also added some comments explaining what is going on. In short, the
changes in question do not, in fact, affect the`TypeckTables` in any
semantic way. However, altering the order of lowering can cause it
appear to affect the `TypeckTables`: if we lower generics before the
body, then the `HirId` for things in the body will be affected. In
this case, we are now lowering the generics etc
*after* the body, so the hash no longer changes. This seems good.
  • Loading branch information
nikomatsakis committed Nov 22, 2017
1 parent 78ccbba commit d3e0c33
Showing 1 changed file with 40 additions and 4 deletions.
44 changes: 40 additions & 4 deletions src/test/incremental/hashes/inherent_impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,16 @@ impl Foo {
#[rustc_metadata_clean(cfg="cfail2")]
#[rustc_metadata_clean(cfg="cfail3")]
impl Foo {
#[rustc_clean(cfg="cfail2", except="Hir,HirBody,TypeckTables")]
// Warning: Note that `TypeckTables` are coming up clean here.
// The addition or removal of lifetime parameters that don't
// appear in the arguments or fn body in any way does not, in
// fact, affect the `TypeckTables` in any semantic way (at least
// as of this writing). **However,** altering the order of
// lowering **can** cause it appear to affect the `TypeckTables`:
// if we lower generics before the body, then the `HirId` for
// things in the body will be affected. So if you start to see
// `TypeckTables` appear dirty, that might be the cause. -nmatsakis
#[rustc_clean(cfg="cfail2", except="Hir,HirBody")]
#[rustc_clean(cfg="cfail3")]
#[rustc_metadata_clean(cfg="cfail2")]
#[rustc_metadata_clean(cfg="cfail3")]
Expand All @@ -391,9 +400,18 @@ impl Foo {
#[rustc_metadata_clean(cfg="cfail2")]
#[rustc_metadata_clean(cfg="cfail3")]
impl Foo {
// Warning: Note that `TypeckTables` are coming up clean here.
// The addition or removal of type parameters that don't appear in
// the arguments or fn body in any way does not, in fact, affect
// the `TypeckTables` in any semantic way (at least as of this
// writing). **However,** altering the order of lowering **can**
// cause it appear to affect the `TypeckTables`: if we lower
// generics before the body, then the `HirId` for things in the
// body will be affected. So if you start to see `TypeckTables`
// appear dirty, that might be the cause. -nmatsakis
#[rustc_clean(
cfg="cfail2",
except="Hir,HirBody,GenericsOfItem,PredicatesOfItem,TypeOfItem,TypeckTables",
except="Hir,HirBody,GenericsOfItem,PredicatesOfItem,TypeOfItem",
)]
#[rustc_clean(cfg="cfail3")]
#[rustc_metadata_dirty(cfg="cfail2")]
Expand Down Expand Up @@ -439,8 +457,17 @@ impl Foo {
#[rustc_metadata_clean(cfg="cfail2")]
#[rustc_metadata_clean(cfg="cfail3")]
impl Foo {
// Warning: Note that `TypeckTables` are coming up clean here.
// The addition or removal of bounds that don't appear in the
// arguments or fn body in any way does not, in fact, affect the
// `TypeckTables` in any semantic way (at least as of this
// writing). **However,** altering the order of lowering **can**
// cause it appear to affect the `TypeckTables`: if we lower
// generics before the body, then the `HirId` for things in the
// body will be affected. So if you start to see `TypeckTables`
// appear dirty, that might be the cause. -nmatsakis
#[rustc_clean(cfg="cfail2", except="Hir,HirBody,GenericsOfItem,PredicatesOfItem,\
TypeOfItem,TypeckTables")]
TypeOfItem")]
#[rustc_clean(cfg="cfail3")]
#[rustc_metadata_dirty(cfg="cfail2")]
#[rustc_metadata_clean(cfg="cfail3")]
Expand All @@ -461,7 +488,16 @@ impl Foo {
#[rustc_metadata_clean(cfg="cfail2")]
#[rustc_metadata_clean(cfg="cfail3")]
impl Foo {
#[rustc_clean(cfg="cfail2", except="Hir,HirBody,PredicatesOfItem,TypeckTables")]
// Warning: Note that `TypeckTables` are coming up clean here.
// The addition or removal of bounds that don't appear in the
// arguments or fn body in any way does not, in fact, affect the
// `TypeckTables` in any semantic way (at least as of this
// writing). **However,** altering the order of lowering **can**
// cause it appear to affect the `TypeckTables`: if we lower
// generics before the body, then the `HirId` for things in the
// body will be affected. So if you start to see `TypeckTables`
// appear dirty, that might be the cause. -nmatsakis
#[rustc_clean(cfg="cfail2", except="Hir,HirBody,PredicatesOfItem")]
#[rustc_clean(cfg="cfail3")]
#[rustc_metadata_dirty(cfg="cfail2")]
#[rustc_metadata_clean(cfg="cfail3")]
Expand Down

0 comments on commit d3e0c33

Please sign in to comment.