diff --git a/crates/aiken-lang/src/format.rs b/crates/aiken-lang/src/format.rs index 0d5f3e31..8193d135 100644 --- a/crates/aiken-lang/src/format.rs +++ b/crates/aiken-lang/src/format.rs @@ -702,7 +702,10 @@ impl<'comments> Formatter<'comments> { } pub fn int<'a>(&mut self, s: &'a str, base: &Base) -> Document<'a> { - unimplemented!() + match s.chars().next() { + Some('-') => Document::Str("-").append(self.uint(&s[1..], base)), + _ => self.uint(s, base), + } } pub fn uint<'a>(&mut self, s: &'a str, base: &Base) -> Document<'a> { diff --git a/crates/aiken-lang/src/tests/format.rs b/crates/aiken-lang/src/tests/format.rs index 79ca88d4..bea5d2e8 100644 --- a/crates/aiken-lang/src/tests/format.rs +++ b/crates/aiken-lang/src/tests/format.rs @@ -887,3 +887,21 @@ fn first_class_binop() { assert_fmt(src, src); } + +#[test] +fn int_uint() { + let src = indoc! { r#" + const i = 42 + + const j = -14 + + fn foo() { + when y is { + 14 -> -14 + -42 -> 42 + } + } + "#}; + + assert_fmt(src, src); +}