desugars operator overloading
fix mistakes
bendn 9 weeks ago
parent 1c3755a · commit 5ac69b7
-rw-r--r--Cargo.toml2
-rw-r--r--src/lib.rs6
2 files changed, 5 insertions, 3 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 1ec2741..f8c3546 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "lower-macros"
-version = "0.2.10"
+version = "0.2.11"
authors = ["bend-n <[email protected]>"]
description = "desugar math where the compiler wont"
edition = "2024"
diff --git a/src/lib.rs b/src/lib.rs
index 411b33e..12b883a 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -48,7 +48,7 @@ impl Sub for Basic {
fn sub_unop(&self, op: UnOp, x: TokenStream) -> TokenStream {
match op {
- UnOp::Deref(_) => quote!((#x).deref()),
+ UnOp::Deref(_) => quote!((*#x)),
UnOp::Not(_) => quote!((#x).not()),
UnOp::Neg(_) => quote!((#x).neg()),
e => Error::new(
@@ -100,6 +100,7 @@ impl Sub for Wrapping {
fn sub_unop(&self, op: UnOp, x: TokenStream) -> TokenStream {
match op {
+ UnOp::Deref(_) => quote!((*#x)),
UnOp::Neg(_) => quote!((#x).wrapping_neg()),
_ => quote!(#op #x),
}
@@ -146,6 +147,7 @@ impl Sub for Saturating {
fn sub_unop(&self, op: UnOp, x: TokenStream) -> TokenStream {
match op {
+ UnOp::Deref(_) => quote!((*#x)),
UnOp::Neg(_) => quote!((#x).saturating_neg()),
_ => quote!(#op #x),
}
@@ -379,7 +381,7 @@ fn walk(sub: &impl Sub, e: Expr) -> TokenStream {
}
Expr::Assign(ExprAssign { left, right, .. }) => {
let (left, right) = (walk(*left), walk(*right));
- quote!(#left = #right;)
+ quote!(#left = #right)
}
Expr::Paren(ExprParen { expr, .. }) => {
let expr = walk(*expr);