diff --git a/compiler/noirc_evaluator/src/ssa/ir/types.rs b/compiler/noirc_evaluator/src/ssa/ir/types.rs index 61b63168c7a..4bc80e8cc82 100644 --- a/compiler/noirc_evaluator/src/ssa/ir/types.rs +++ b/compiler/noirc_evaluator/src/ssa/ir/types.rs @@ -315,7 +315,11 @@ impl std::fmt::Display for Type { } Type::Slice(element) => { let elements = vecmap(element.iter(), |element| element.to_string()); - write!(f, "[{}]", elements.join(", ")) + if elements.len() == 1 { + write!(f, "[{}]", elements.join(", ")) + } else { + write!(f, "[({})]", elements.join(", ")) + } } Type::Function => write!(f, "function"), } diff --git a/compiler/noirc_evaluator/src/ssa/parser/tests.rs b/compiler/noirc_evaluator/src/ssa/parser/tests.rs index c2212c42dba..32642c04166 100644 --- a/compiler/noirc_evaluator/src/ssa/parser/tests.rs +++ b/compiler/noirc_evaluator/src/ssa/parser/tests.rs @@ -89,6 +89,19 @@ fn test_make_composite_array() { assert_ssa_roundtrip(src); } +#[test] +fn test_make_composite_slice() { + let src = " + acir(inline) predicate_pure fn main f0 { + b0(): + v2 = make_array [Field 2, Field 3] : [Field; 2] + v4 = make_array [Field 1, v2] : [(Field, [Field; 2])] + return v4 + } + "; + assert_ssa_roundtrip(src); +} + #[test] fn test_make_byte_array_with_string_literal() { let src = "