diff options
| author | Matthias Krüger <476013+matthiaskrgr@users.noreply.github.com> | 2025-05-17 10:33:11 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-17 10:33:11 +0200 |
| commit | 59ad0cbd04597067cfb15aed6df2f7e20eeeab77 (patch) | |
| tree | c8326bc57c8de9f85ca7ac2e9946625a2b84b012 | |
| parent | 4c52b5d17a136c292289bf587c024d9738c1c100 (diff) | |
| parent | cf878d8f260e535fab7e6f6401fc61e5d846ac4d (diff) | |
| download | rust-59ad0cbd04597067cfb15aed6df2f7e20eeeab77.tar.gz rust-59ad0cbd04597067cfb15aed6df2f7e20eeeab77.zip | |
Rollup merge of #141059 - samueltardieu:push-trvpulpskwwp, r=compiler-errors
HIR: explain in comment why `ExprKind::If` "then" is an `Expr` One could be tempted to replace the "then" `hir::Expr` with kind `hir::ExprKind::Block` by a `hir::Block`. Explain why this would not be a good idea. I've been there. r? ``@compiler-errors``
| -rw-r--r-- | compiler/rustc_hir/src/hir.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/rustc_hir/src/hir.rs b/compiler/rustc_hir/src/hir.rs index 107aea4e5a4..fa1d1ec0a86 100644 --- a/compiler/rustc_hir/src/hir.rs +++ b/compiler/rustc_hir/src/hir.rs @@ -2744,6 +2744,8 @@ pub enum ExprKind<'hir> { /// /// The "then" expr is always `ExprKind::Block`. If present, the "else" expr is always /// `ExprKind::Block` (for `else`) or `ExprKind::If` (for `else if`). + /// Note that using an `Expr` instead of a `Block` for the "then" part is intentional, + /// as it simplifies the type coercion machinery. If(&'hir Expr<'hir>, &'hir Expr<'hir>, Option<&'hir Expr<'hir>>), /// A conditionless loop (can be exited with `break`, `continue`, or `return`). /// |
