diff options
Diffstat (limited to 'tests/ui/chalkify/inherent_impl.rs')
-rw-r--r-- | tests/ui/chalkify/inherent_impl.rs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/ui/chalkify/inherent_impl.rs b/tests/ui/chalkify/inherent_impl.rs new file mode 100644 index 000000000..f0f24d485 --- /dev/null +++ b/tests/ui/chalkify/inherent_impl.rs @@ -0,0 +1,42 @@ +// run-pass +// compile-flags: -Z trait-solver=chalk + +trait Foo { } + +impl Foo for i32 { } + +struct S<T: Foo> { + x: T, +} + +fn only_foo<T: Foo>(_x: &T) { } + +impl<T> S<T> { + // Test that we have the correct environment inside an inherent method. + fn dummy_foo(&self) { + only_foo(&self.x) + } +} + +trait Bar { } +impl Bar for u32 { } + +fn only_bar<T: Bar>() { } + +impl<T> S<T> { + // Test that the environment of `dummy_bar` adds up with the environment + // of the inherent impl. + fn dummy_bar<U: Bar>(&self) { + only_foo(&self.x); + only_bar::<U>(); + } +} + +fn main() { + let s = S { + x: 5, + }; + + s.dummy_bar::<u32>(); + s.dummy_foo(); +} |