- 
                Notifications
    
You must be signed in to change notification settings  - Fork 13.9k
 
          Use Option<Ident> for lowered param names.
          #138685
        
          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
          
     Merged
      
      
            bors
  merged 1 commit into
  rust-lang:master
from
nnethercote:use-Option-Ident-for-lowered-param-names
  
      
      
   
  Mar 21, 2025 
      
    
                
     Merged
            
            
  
    Use Option<Ident> for lowered param names.
  
  #138685
              
                    bors
  merged 1 commit into
  rust-lang:master
from
nnethercote:use-Option-Ident-for-lowered-param-names
  
      
      
   
  Mar 21, 2025 
              
            Conversation
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
    | 
           Some changes occurred in src/tools/clippy cc @rust-lang/clippy HIR ty lowering was modified cc @fmease  | 
    
| 
           @compiler-errors: I requested your review because this is closely related to #138482, which you reviewed. Please re-roll for a different reviewer if you don't want to do it. Thanks.  | 
    
Parameter patterns are lowered to an `Ident` by `lower_fn_params_to_names`, which is used when lowering bare function types, trait methods, and foreign functions. Currently, there are two exceptional cases where the lowered param can become an empty `Ident`. - If the incoming pattern is an empty `Ident`. This occurs if the parameter is anonymous, e.g. in a bare function type. - If the incoming pattern is neither an ident nor an underscore. Any such parameter will have triggered a compile error (hence the `span_delayed_bug`), but lowering still occurs. This commit replaces these empty `Ident` results with `None`, which eliminates a number of `kw::Empty` uses, and makes it impossible to fail to check for these exceptional cases. Note: the `FIXME` comment in `is_unwrap_or_empty_symbol` is removed. It actually should have been removed in rust-lang#138482, the precursor to this PR. That PR changed the lowering of wild patterns to `_` symbols instead of empty symbols, which made the mentioned underscore check load-bearing.
621118b    to
    f27cab8      
    Compare
  
    
              
                    compiler-errors
  
              
              approved these changes
              
                  
                    Mar 19, 2025 
                  
              
              
            
            
| 
           @bors r+ rollup  | 
    
    
  jieyouxu 
      added a commit
        to jieyouxu/rust
      that referenced
      this pull request
    
      Mar 20, 2025 
    
    
      
  
    
      
    
  
…owered-param-names, r=compiler-errors Use `Option<Ident>` for lowered param names. Parameter patterns are lowered to an `Ident` by `lower_fn_params_to_names`, which is used when lowering bare function types, trait methods, and foreign functions. Currently, there are two exceptional cases where the lowered param can become an empty `Ident`. - If the incoming pattern is an empty `Ident`. This occurs if the parameter is anonymous, e.g. in a bare function type. - If the incoming pattern is neither an ident nor an underscore. Any such parameter will have triggered a compile error (hence the `span_delayed_bug`), but lowering still occurs. This commit replaces these empty `Ident` results with `None`, which eliminates a number of `kw::Empty` uses, and makes it impossible to fail to check for these exceptional cases. Note: the `FIXME` comment in `is_unwrap_or_empty_symbol` is removed. It actually should have been removed in rust-lang#138482, the precursor to this PR. That PR changed the lowering of wild patterns to `_` symbols instead of empty symbols, which made the mentioned underscore check load-bearing. r? `@compiler-errors`
    
  bors 
      added a commit
        to rust-lang-ci/rust
      that referenced
      this pull request
    
      Mar 20, 2025 
    
    
      
  
    
      
    
  
Rollup of 15 pull requests Successful merges: - rust-lang#138321 ([bootstrap] Distribute split debuginfo if present) - rust-lang#138364 (ports the compiler test cases to new rust_intrinsic format) - rust-lang#138410 (Couple mir building cleanups) - rust-lang#138435 (Add support for postfix yield expressions) - rust-lang#138536 (stable_mir: Add `MutMirVisitor`) - rust-lang#138623 ([bootstrap] Use llvm_runtimes for compiler-rt) - rust-lang#138650 (Optimize `io::Write::write_fmt` for constant strings) - rust-lang#138652 (Reintroduce remote-test support in run-make tests) - rust-lang#138685 (Use `Option<Ident>` for lowered param names.) - rust-lang#138694 (Fix: add ohos target notes) - rust-lang#138700 (Suggest `-Whelp` when pass `--print lints` to rustc) - rust-lang#138709 (Update GCC submodule) - rust-lang#138724 (Check attrs: Don't try to retrieve the name of list stems) - rust-lang#138731 (coverage: Add LLVM plumbing for expansion regions) - rust-lang#138732 (Use `def_path_str` for def id arg in `UnsupportedOpInfo`) r? `@ghost` `@rustbot` modify labels: rollup
    
  bors 
      added a commit
        to rust-lang-ci/rust
      that referenced
      this pull request
    
      Mar 20, 2025 
    
    
      
  
    
      
    
  
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#138435 (Add support for postfix yield expressions) - rust-lang#138685 (Use `Option<Ident>` for lowered param names.) - rust-lang#138700 (Suggest `-Whelp` when pass `--print lints` to rustc) - rust-lang#138727 (Do not rely on `type_var_origin` in `OrphanCheckErr::NonLocalInputType`) - rust-lang#138729 (Clean up `FnCtxt::resolve_coroutine_interiors`) - rust-lang#138731 (coverage: Add LLVM plumbing for expansion regions) - rust-lang#138732 (Use `def_path_str` for def id arg in `UnsupportedOpInfo`) - rust-lang#138735 (Remove `llvm` and `llvms` triagebot ping aliases for `icebreakers-llvm` ping group) r? `@ghost` `@rustbot` modify labels: rollup
    
  matthiaskrgr 
      added a commit
        to matthiaskrgr/rust
      that referenced
      this pull request
    
      Mar 20, 2025 
    
    
      
  
    
      
    
  
…owered-param-names, r=compiler-errors Use `Option<Ident>` for lowered param names. Parameter patterns are lowered to an `Ident` by `lower_fn_params_to_names`, which is used when lowering bare function types, trait methods, and foreign functions. Currently, there are two exceptional cases where the lowered param can become an empty `Ident`. - If the incoming pattern is an empty `Ident`. This occurs if the parameter is anonymous, e.g. in a bare function type. - If the incoming pattern is neither an ident nor an underscore. Any such parameter will have triggered a compile error (hence the `span_delayed_bug`), but lowering still occurs. This commit replaces these empty `Ident` results with `None`, which eliminates a number of `kw::Empty` uses, and makes it impossible to fail to check for these exceptional cases. Note: the `FIXME` comment in `is_unwrap_or_empty_symbol` is removed. It actually should have been removed in rust-lang#138482, the precursor to this PR. That PR changed the lowering of wild patterns to `_` symbols instead of empty symbols, which made the mentioned underscore check load-bearing. r? ```@compiler-errors```
    
  bors 
      added a commit
        to rust-lang-ci/rust
      that referenced
      this pull request
    
      Mar 20, 2025 
    
    
      
  
    
      
    
  
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#138435 (Add support for postfix yield expressions) - rust-lang#138685 (Use `Option<Ident>` for lowered param names.) - rust-lang#138700 (Suggest `-Whelp` when pass `--print lints` to rustc) - rust-lang#138727 (Do not rely on `type_var_origin` in `OrphanCheckErr::NonLocalInputType`) - rust-lang#138729 (Clean up `FnCtxt::resolve_coroutine_interiors`) - rust-lang#138731 (coverage: Add LLVM plumbing for expansion regions) - rust-lang#138732 (Use `def_path_str` for def id arg in `UnsupportedOpInfo`) - rust-lang#138735 (Remove `llvm` and `llvms` triagebot ping aliases for `icebreakers-llvm` ping group) r? `@ghost` `@rustbot` modify labels: rollup
    
  bors 
      added a commit
        to rust-lang-ci/rust
      that referenced
      this pull request
    
      Mar 21, 2025 
    
    
      
  
    
      
    
  
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#138435 (Add support for postfix yield expressions) - rust-lang#138685 (Use `Option<Ident>` for lowered param names.) - rust-lang#138700 (Suggest `-Whelp` when pass `--print lints` to rustc) - rust-lang#138727 (Do not rely on `type_var_origin` in `OrphanCheckErr::NonLocalInputType`) - rust-lang#138729 (Clean up `FnCtxt::resolve_coroutine_interiors`) - rust-lang#138731 (coverage: Add LLVM plumbing for expansion regions) - rust-lang#138732 (Use `def_path_str` for def id arg in `UnsupportedOpInfo`) - rust-lang#138735 (Remove `llvm` and `llvms` triagebot ping aliases for `icebreakers-llvm` ping group) r? `@ghost` `@rustbot` modify labels: rollup
    
  rust-timer 
      added a commit
        to rust-lang-ci/rust
      that referenced
      this pull request
    
      Mar 21, 2025 
    
    
      
  
    
      
    
  
Rollup merge of rust-lang#138685 - nnethercote:use-Option-Ident-for-lowered-param-names, r=compiler-errors Use `Option<Ident>` for lowered param names. Parameter patterns are lowered to an `Ident` by `lower_fn_params_to_names`, which is used when lowering bare function types, trait methods, and foreign functions. Currently, there are two exceptional cases where the lowered param can become an empty `Ident`. - If the incoming pattern is an empty `Ident`. This occurs if the parameter is anonymous, e.g. in a bare function type. - If the incoming pattern is neither an ident nor an underscore. Any such parameter will have triggered a compile error (hence the `span_delayed_bug`), but lowering still occurs. This commit replaces these empty `Ident` results with `None`, which eliminates a number of `kw::Empty` uses, and makes it impossible to fail to check for these exceptional cases. Note: the `FIXME` comment in `is_unwrap_or_empty_symbol` is removed. It actually should have been removed in rust-lang#138482, the precursor to this PR. That PR changed the lowering of wild patterns to `_` symbols instead of empty symbols, which made the mentioned underscore check load-bearing. r? ``@compiler-errors``
    
  flip1995 
      pushed a commit
        to flip1995/rust
      that referenced
      this pull request
    
      Apr 3, 2025 
    
    
      
  
    
      
    
  
…owered-param-names, r=compiler-errors Use `Option<Ident>` for lowered param names. Parameter patterns are lowered to an `Ident` by `lower_fn_params_to_names`, which is used when lowering bare function types, trait methods, and foreign functions. Currently, there are two exceptional cases where the lowered param can become an empty `Ident`. - If the incoming pattern is an empty `Ident`. This occurs if the parameter is anonymous, e.g. in a bare function type. - If the incoming pattern is neither an ident nor an underscore. Any such parameter will have triggered a compile error (hence the `span_delayed_bug`), but lowering still occurs. This commit replaces these empty `Ident` results with `None`, which eliminates a number of `kw::Empty` uses, and makes it impossible to fail to check for these exceptional cases. Note: the `FIXME` comment in `is_unwrap_or_empty_symbol` is removed. It actually should have been removed in rust-lang#138482, the precursor to this PR. That PR changed the lowering of wild patterns to `_` symbols instead of empty symbols, which made the mentioned underscore check load-bearing. r? ``@compiler-errors``
    
  flip1995 
      pushed a commit
        to flip1995/rust
      that referenced
      this pull request
    
      Apr 3, 2025 
    
    
      
  
    
      
    
  
…owered-param-names, r=compiler-errors Use `Option<Ident>` for lowered param names. Parameter patterns are lowered to an `Ident` by `lower_fn_params_to_names`, which is used when lowering bare function types, trait methods, and foreign functions. Currently, there are two exceptional cases where the lowered param can become an empty `Ident`. - If the incoming pattern is an empty `Ident`. This occurs if the parameter is anonymous, e.g. in a bare function type. - If the incoming pattern is neither an ident nor an underscore. Any such parameter will have triggered a compile error (hence the `span_delayed_bug`), but lowering still occurs. This commit replaces these empty `Ident` results with `None`, which eliminates a number of `kw::Empty` uses, and makes it impossible to fail to check for these exceptional cases. Note: the `FIXME` comment in `is_unwrap_or_empty_symbol` is removed. It actually should have been removed in rust-lang#138482, the precursor to this PR. That PR changed the lowering of wild patterns to `_` symbols instead of empty symbols, which made the mentioned underscore check load-bearing. r? ```@compiler-errors```
    
  flip1995 
      pushed a commit
        to flip1995/rust
      that referenced
      this pull request
    
      Apr 3, 2025 
    
    
      
  
    
      
    
  
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#138435 (Add support for postfix yield expressions) - rust-lang#138685 (Use `Option<Ident>` for lowered param names.) - rust-lang#138700 (Suggest `-Whelp` when pass `--print lints` to rustc) - rust-lang#138727 (Do not rely on `type_var_origin` in `OrphanCheckErr::NonLocalInputType`) - rust-lang#138729 (Clean up `FnCtxt::resolve_coroutine_interiors`) - rust-lang#138731 (coverage: Add LLVM plumbing for expansion regions) - rust-lang#138732 (Use `def_path_str` for def id arg in `UnsupportedOpInfo`) - rust-lang#138735 (Remove `llvm` and `llvms` triagebot ping aliases for `icebreakers-llvm` ping group) r? `@ghost` `@rustbot` modify labels: rollup
    
  flip1995 
      pushed a commit
        to flip1995/rust
      that referenced
      this pull request
    
      Apr 3, 2025 
    
    
      
  
    
      
    
  
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#138435 (Add support for postfix yield expressions) - rust-lang#138685 (Use `Option<Ident>` for lowered param names.) - rust-lang#138700 (Suggest `-Whelp` when pass `--print lints` to rustc) - rust-lang#138727 (Do not rely on `type_var_origin` in `OrphanCheckErr::NonLocalInputType`) - rust-lang#138729 (Clean up `FnCtxt::resolve_coroutine_interiors`) - rust-lang#138731 (coverage: Add LLVM plumbing for expansion regions) - rust-lang#138732 (Use `def_path_str` for def id arg in `UnsupportedOpInfo`) - rust-lang#138735 (Remove `llvm` and `llvms` triagebot ping aliases for `icebreakers-llvm` ping group) r? `@ghost` `@rustbot` modify labels: rollup
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment
  
      Labels
      
    S-waiting-on-bors
  Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 
  
    T-compiler
  Relevant to the compiler team, which will review and decide on the PR/issue. 
  
    T-rustdoc
  Relevant to the rustdoc team, which will review and decide on the PR/issue. 
  Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Parameter patterns are lowered to an
Identbylower_fn_params_to_names, which is used when lowering bare function types, trait methods, and foreign functions. Currently, there are two exceptional cases where the lowered param can become an emptyIdent.If the incoming pattern is an empty
Ident. This occurs if the parameter is anonymous, e.g. in a bare function type.If the incoming pattern is neither an ident nor an underscore. Any such parameter will have triggered a compile error (hence the
span_delayed_bug), but lowering still occurs.This commit replaces these empty
Identresults withNone, which eliminates a number ofkw::Emptyuses, and makes it impossible to fail to check for these exceptional cases.Note: the
FIXMEcomment inis_unwrap_or_empty_symbolis removed. It actually should have been removed in #138482, the precursor to this PR. That PR changed the lowering of wild patterns to_symbols instead of empty symbols, which made the mentioned underscore check load-bearing.r? @compiler-errors