- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.9k
          rustc: replace TyCtxt<'a, 'gcx, 'tcx> with TyCtxt<'gcx, 'tcx>.
          #61722
        
          New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
63cfc09    to
    23755eb      
    Compare
  
    
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
23755eb    to
    3ae6b4f      
    Compare
  
    Add deny(unused_lifetimes) to all the crates that have deny(internal). @Zoxc brought up, regarding #61722, that we don't force the removal of unused lifetimes. Turns out that it's not that bad to enable for compiler crates (I wonder why it's not `warn` by default?). I would've liked to enable `single_use_lifetimes` as well, but #53738 makes it unusable for now. For the `rustfmt` commit, I used rust-lang/rustfmt#1324 (comment), and manually filtered out some noise. r? @oli-obk cc @rust-lang/compiler
1b99bba    to
    0472b6c      
    Compare
  
    
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
8af839a    to
    18f8668      
    Compare
  
    18f8668    to
    fff08cb      
    Compare
  
    There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me with leftover unnecessary lifetimes removed
| } | ||
|  | ||
| impl<D> TypeRelation<'me, 'gcx, 'tcx> for TypeRelating<'me, 'gcx, 'tcx, D> | ||
| impl<D> TypeRelation<'gcx, 'tcx> for TypeRelating<'me, 'gcx, 'tcx, D> | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The 'me lifetime can be '_ here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe that'd be handled by the "single-use lifetime" lint, which we haven't turned on yet.
| @bors rollup=never p=10 (high bitrot probability) | 
| @bors r=oli-obk | 
| 📌 Commit 4c98cb6 has been approved by  | 
      
        
              This comment has been minimized.
        
        
      
    
  This comment has been minimized.
rustc: replace `TyCtxt<'a, 'gcx, 'tcx>` with `TyCtxt<'gcx, 'tcx>`. This first lifetime parameter of `TyCtxt` has been phantom for a while, thanks to @Zoxc, but was never removed, and I'm doing this now in preparation for removing the `'gcx`/`'tcx` split. I wasn't going to do this as a separate step, and instead start converting uses of `TyCtxt` to a single-lifetime alias of it (e.g. `type TyCx<'tcx> = TyCtxt<'tcx, 'tcx, 'tcx>;`) but it turns out (as @Zoxc rightly predicted) that there is far more fallout from not needing a lifetime for the first parameter of `TyCtxt`. That is, going from `TyCtxt<'a, 'gcx, 'tcx>` to `TyCtxt<'tcx, 'gcx, 'tcx>` (the first commit in this PR) has the largest amount of fallout out of all the changes we might make (because it can require removing the `'a` parameter of `struct`s containing `tcx: TyCtxt<'a, ...>`), and is the hardest to automate (because `'a` is used everywhere, not just with `TyCtxt`, unlike, say `'gcx, 'tcx` -> `'tcx`). So I'm submitting this now to get it out of the way and reduce further friction in the future. **EDIT**: for the `rustfmt` commit, I used rust-lang/rustfmt#1324 (comment), and manually filtered out some noise, like in #61735, but unlike that PR, there was also a weird bug to work around. It should be reviewed separately, and dropped if unwanted. cc @rust-lang/compiler r? @nikomatsakis
| ☀️ Test successful - checks-travis, status-appveyor | 
Tested on commit rust-lang/rust@24ddd16. Direct link to PR: <rust-lang/rust#61722> 💔 rls on linux: test-pass → test-fail (cc @Xanewok, @rust-lang/infra).
Fix wrong lifetime of TyCtxt Rustup rust-lang/rust#61722 changelog: none
Fix wrong lifetime of TyCtxt Rustup rust-lang/rust#61722 changelog: none
Fix wrong lifetime of TyCtxt Rustup rust-lang/rust#61722 changelog: none
Unify all uses of 'gcx and 'tcx. This is made possible by @Zoxc landing #57214 (see #57214 (comment) for the decision). A bit of context for the approach: just like #61722, this is *not* how I originally intended to go about this, but @Zoxc and my own experimentation independently resulted in the same conclusion: The interim alias `type TyCx<'tcx> = TyCtxt<'tcx, 'tcx>;` attempt required more work (adding `use`s), even only for handling the `TyCtxt<'tcx, 'tcx>` case and not the general `TyCtxt<'gcx, 'tcx>` one. What this PR is based on is the realization that `'gcx` is a special-enough name that it can be replaced, without caring for context, with `'tcx`, and then repetitions of the name `'tcx` be compacted away. After that, only a small number of error categories remained, each category easily dealt with with either more mass replacements (e.g. `TyCtxt<'tcx, '_>` -> `TyCtxt<'tcx>`) or by hand. For the `rustfmt` commit, I used rust-lang/rustfmt#1324 (comment), and manually filtered out some noise, like in #61735 and #61722, and like the latter, there was also a weird bug to work around. It should be reviewed separately, and dropped if unwanted (in this PR it's pretty significant). cc @rust-lang/compiler r? @nikomatsakis
This first lifetime parameter of
TyCtxthas been phantom for a while, thanks to @Zoxc, but was never removed, and I'm doing this now in preparation for removing the'gcx/'tcxsplit.I wasn't going to do this as a separate step, and instead start converting uses of
TyCtxtto a single-lifetime alias of it (e.g.type TyCx<'tcx> = TyCtxt<'tcx, 'tcx, 'tcx>;) but it turns out (as @Zoxc rightly predicted) that there is far more fallout from not needing a lifetime for the first parameter ofTyCtxt.That is, going from
TyCtxt<'a, 'gcx, 'tcx>toTyCtxt<'tcx, 'gcx, 'tcx>(the first commit in this PR) has the largest amount of fallout out of all the changes we might make (because it can require removing the'aparameter ofstructs containingtcx: TyCtxt<'a, ...>), and is the hardest to automate (because'ais used everywhere, not just withTyCtxt, unlike, say'gcx, 'tcx->'tcx).So I'm submitting this now to get it out of the way and reduce further friction in the future.
EDIT: for the
rustfmtcommit, I used rust-lang/rustfmt#1324 (comment), and manually filtered out some noise, like in #61735, but unlike that PR, there was also a weird bug to work around.It should be reviewed separately, and dropped if unwanted.
cc @rust-lang/compiler r? @nikomatsakis