diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-08-24 10:46:27 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2022-08-24 11:37:56 +1000 |
| commit | c9429b1cec47ae4d2be8c891a482142e9efd4b24 (patch) | |
| tree | 84635981934f9b0406b17a46e837c00c150f83dc | |
| parent | a1bea1551b8312b6abfbbf7d49bafac2e6ce8ee4 (diff) | |
| download | rust-c9429b1cec47ae4d2be8c891a482142e9efd4b24.tar.gz rust-c9429b1cec47ae4d2be8c891a482142e9efd4b24.zip | |
Define index types within `thir_with_elements`.
The macro already generates other stuff, might as well generate these index types as well.
| -rw-r--r-- | compiler/rustc_middle/src/thir.rs | 41 |
1 files changed, 13 insertions, 28 deletions
diff --git a/compiler/rustc_middle/src/thir.rs b/compiler/rustc_middle/src/thir.rs index 5e26a52900e..9cb6763b663 100644 --- a/compiler/rustc_middle/src/thir.rs +++ b/compiler/rustc_middle/src/thir.rs @@ -33,32 +33,17 @@ use std::ops::Index; pub mod visit; -newtype_index! { - /// An index to an [`Arm`] stored in [`Thir::arms`] - #[derive(HashStable)] - pub struct ArmId { - DEBUG_FORMAT = "a{}" - } -} - -newtype_index! { - /// An index to an [`Expr`] stored in [`Thir::exprs`] - #[derive(HashStable)] - pub struct ExprId { - DEBUG_FORMAT = "e{}" - } -} - -newtype_index! { - #[derive(HashStable)] - /// An index to a [`Stmt`] stored in [`Thir::stmts`] - pub struct StmtId { - DEBUG_FORMAT = "s{}" - } -} - macro_rules! thir_with_elements { - ($($name:ident: $id:ty => $value:ty,)*) => { + ($($name:ident: $id:ty => $value:ty => $format:literal,)*) => { + $( + newtype_index! { + #[derive(HashStable)] + pub struct $id { + DEBUG_FORMAT = $format + } + } + )* + /// A container for a THIR body. /// /// This can be indexed directly by any THIR index (e.g. [`ExprId`]). @@ -91,9 +76,9 @@ macro_rules! thir_with_elements { } thir_with_elements! { - arms: ArmId => Arm<'tcx>, - exprs: ExprId => Expr<'tcx>, - stmts: StmtId => Stmt<'tcx>, + arms: ArmId => Arm<'tcx> => "a{}", + exprs: ExprId => Expr<'tcx> => "e{}", + stmts: StmtId => Stmt<'tcx> => "s{}", } #[derive(Copy, Clone, Debug, HashStable)] |
