mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Add a test showing that we don't infer across multiple uses of the same opaque type but with a different order of generic arguments
This commit is contained in:
parent
c93f571c2a
commit
9822fff2ea
@ -0,0 +1,13 @@
|
||||
// https://github.com/rust-lang/rust/issues/73481
|
||||
// This test used to cause unsoundness, since one of the two possible
|
||||
// resolutions was chosen at random instead of erroring due to conflicts.
|
||||
|
||||
#![feature(type_alias_impl_trait)]
|
||||
|
||||
type Y<A, B> = impl std::fmt::Debug;
|
||||
|
||||
fn g<A, B>() -> (Y<A, B>, Y<B, A>) {
|
||||
(42_i64, 60) //~^ ERROR concrete type differs from previous defining opaque type use
|
||||
}
|
||||
|
||||
fn main() {}
|
@ -0,0 +1,14 @@
|
||||
error: concrete type differs from previous defining opaque type use
|
||||
--> $DIR/multiple-def-uses-in-one-fn-infer.rs:9:1
|
||||
|
|
||||
LL | fn g<A, B>() -> (Y<A, B>, Y<B, A>) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `i64`, got `i32`
|
||||
|
|
||||
note: previous use here
|
||||
--> $DIR/multiple-def-uses-in-one-fn-infer.rs:9:1
|
||||
|
|
||||
LL | fn g<A, B>() -> (Y<A, B>, Y<B, A>) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to previous error
|
||||
|
Loading…
Reference in New Issue
Block a user