diff --git a/compiler/noirc_frontend/src/tests/traits.rs b/compiler/noirc_frontend/src/tests/traits.rs index 88138ecde4d..f2e9641ff20 100644 --- a/compiler/noirc_frontend/src/tests/traits.rs +++ b/compiler/noirc_frontend/src/tests/traits.rs @@ -261,3 +261,57 @@ fn errors_if_impl_trait_constraint_is_not_satisfied() { assert_eq!(typ, "SomeGreeter"); assert_eq!(impl_trait, "Foo"); } + +#[test] +fn regression_6314_single() { + let src = r#" + trait Foo { + fn foo(self) -> Self; + } + + trait Baz: Foo {} + + impl Baz for T where T: Foo {} + + fn main() { } + "#; + assert_no_errors(src); +} + +#[test] +fn regression_6314_double() { + let src = r#" + trait Foo { + fn foo(self) -> Self; + } + + trait Bar { + fn bar(self) -> Self; + } + + trait Baz: Foo + Bar {} + + impl Baz for T where T: Foo + Bar {} + + fn baz(x: T) -> T where T: Baz { + x.foo().bar() + } + + impl Foo for Field { + fn foo(self) -> Self { + self + 1 + } + } + + impl Bar for Field { + fn bar(self) -> Self { + self + 2 + } + } + + fn main() { + assert(0.foo().bar() == baz(0)); + } + "#; + assert_no_errors(src); +}