-
Notifications
You must be signed in to change notification settings - Fork 13.2k
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
Use Option<Ident>
for lowered param names.
#138685
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
+125
−87
Conversation
This file contains 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``
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
Ident
bylower_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
Ident
results withNone
, which eliminates a number ofkw::Empty
uses, and makes it impossible to fail to check for these exceptional cases.Note: the
FIXME
comment inis_unwrap_or_empty_symbol
is 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