diff --git a/CHANGELOG.md b/CHANGELOG.md index 30d3a01..816270c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ Types of changes ### Fixed - All prebuilt binaries are now fully statically linked. +- An attempt to subtract with overflow in some scenarios of a `let-in` expression ## [0.3.0] - 2022-02-18 diff --git a/src/rules/let_in.rs b/src/rules/let_in.rs index 601cb68..853c3d9 100644 --- a/src/rules/let_in.rs +++ b/src/rules/let_in.rs @@ -116,6 +116,7 @@ pub fn rule( let child_expr = children.get_next().unwrap(); // in + let mut dedent = false; steps.push_back(crate::builder::Step::Format(child_in.element)); match layout { crate::config::Layout::Tall => { @@ -131,6 +132,7 @@ pub fn rule( { steps.push_back(crate::builder::Step::Whitespace); } else { + dedent = true; steps.push_back(crate::builder::Step::Indent); steps.push_back(crate::builder::Step::NewLine); steps.push_back(crate::builder::Step::Pad); @@ -152,7 +154,9 @@ pub fn rule( steps.push_back(crate::builder::Step::FormatWider( child_expr.element, )); - steps.push_back(crate::builder::Step::Dedent); + if dedent { + steps.push_back(crate::builder::Step::Dedent); + } } crate::config::Layout::Wide => { steps.push_back(crate::builder::Step::Whitespace);