bitrot: no trailing ';' in macros when eval'd in expr position

https://github.com/rust-lang/rust/issues/79813

At least some of these don't initially appear to be in expr position,
but the end of a block is always an expression, so these being wrapped
in `{}` don't actually help. Seems weird but whatever, easy enough to
fix!
This commit is contained in:
2021-10-27 17:36:30 -07:00
parent 054d40aa95
commit 212431a9f2

View File

@@ -50,7 +50,7 @@ macro_rules! step {
$cpu:expr, $bus:expr, $prefix:tt, $modrm:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt,
$(name=$name:ident$(<$($tyargs:tt),*>)?,)? $cycles:literal, $(name=$name:ident$(<$($tyargs:tt),*>)?,)? $cycles:literal,
()) => { ()) => {
$(ops::$name$(::<$($tyargs),*>)?)?($($done),*); $(ops::$name$(::<$($tyargs),*>)?)?($($done),*)
}; };
// Inductive case: decode next arg to be placed in list // Inductive case: decode next arg to be placed in list
@@ -274,7 +274,7 @@ macro_rules! step {
(@prefix $cookie:tt, $cpu:expr, $bus:expr, (@prefix $cookie:tt, $cpu:expr, $bus:expr,
($segment:ident, $repeat:ident, $prefix_loop:lifetime), ($segment:ident, $repeat:ident, $prefix_loop:lifetime),
$modrm:tt) => { $modrm:tt) => {
continue $prefix_loop; continue $prefix_loop
}; };
(@r16 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, ($modrm_val:ident, $($modrm_rest:tt),*)) => { { (@r16 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, ($modrm_val:ident, $($modrm_rest:tt),*)) => { {
@@ -310,19 +310,19 @@ macro_rules! step {
} }; } };
(@reg=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => { (@reg=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => {
step!(@arg $cookie, Reg { reg: &$cpu.$reg }); step!(@arg $cookie, Reg { reg: &$cpu.$reg })
}; };
(@reghi=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => { (@reghi=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => {
step!(@arg $cookie, RegHi { reg: &$cpu.$reg }); step!(@arg $cookie, RegHi { reg: &$cpu.$reg })
}; };
(@reglo=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => { (@reglo=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => {
step!(@arg $cookie, RegLo { reg: &$cpu.$reg }); step!(@arg $cookie, RegLo { reg: &$cpu.$reg })
}; };
(@regval=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => { (@regval=$reg:ident $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => {
step!(@arg $cookie, $cpu.$reg.get()); step!(@arg $cookie, $cpu.$reg.get())
}; };
(@rel8 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => { { (@rel8 $cookie:tt, $cpu:expr, $bus:expr, $prefix:tt, $modrm:tt) => { {
@@ -773,7 +773,7 @@ impl i8088 {
0xC5 => reghi=c, convert / R 0, 0xC5 => reghi=c, convert / R 0,
0xC6 => reghi=d, convert / R 0, 0xC6 => reghi=d, convert / R 0,
0xC7 => reghi=b, convert / R 0, 0xC7 => reghi=b, convert / R 0,
}) });
} }
} }