From 126f2ab004b245a8d48e523aec4f4d8135cced4f Mon Sep 17 00:00:00 2001 From: KtorZ Date: Thu, 6 Jul 2023 19:14:45 +0200 Subject: [PATCH] Implement new formatter for 'int'. This is used for constants and patterns, which can carry negative values. --- crates/aiken-lang/src/format.rs | 5 ++++- crates/aiken-lang/src/tests/format.rs | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) 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); +}