diff options
| author | Michael Goulet <michael@errs.io> | 2022-08-13 02:15:46 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-08-25 23:32:46 +0000 |
| commit | 075b3ce89d10313d9732e484e7f766b6a410bdf8 (patch) | |
| tree | ca2392d13fbcc682029fe2bcd15489b5c2babaa1 /src/test | |
| parent | e69cad449a890feab89d52448f2f8586ff1721f4 (diff) | |
| download | rust-075b3ce89d10313d9732e484e7f766b6a410bdf8.tar.gz rust-075b3ce89d10313d9732e484e7f766b6a410bdf8.zip | |
Attempt to normalize FnDef signature in InferCtxt::cmp
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/mismatched_types/normalize-fn-sig.rs | 16 | ||||
| -rw-r--r-- | src/test/ui/mismatched_types/normalize-fn-sig.stderr | 19 |
2 files changed, 35 insertions, 0 deletions
diff --git a/src/test/ui/mismatched_types/normalize-fn-sig.rs b/src/test/ui/mismatched_types/normalize-fn-sig.rs new file mode 100644 index 00000000000..1a2093c44f0 --- /dev/null +++ b/src/test/ui/mismatched_types/normalize-fn-sig.rs @@ -0,0 +1,16 @@ +trait Foo { + type Bar; +} + +impl<T> Foo for T { + type Bar = i32; +} + +fn foo<T>(_: <T as Foo>::Bar, _: &'static <T as Foo>::Bar) {} + +fn needs_i32_ref_fn(_: fn(&'static i32, i32)) {} + +fn main() { + needs_i32_ref_fn(foo::<()>); + //~^ ERROR mismatched types +} diff --git a/src/test/ui/mismatched_types/normalize-fn-sig.stderr b/src/test/ui/mismatched_types/normalize-fn-sig.stderr new file mode 100644 index 00000000000..6c55f29c5d1 --- /dev/null +++ b/src/test/ui/mismatched_types/normalize-fn-sig.stderr @@ -0,0 +1,19 @@ +error[E0308]: mismatched types + --> $DIR/normalize-fn-sig.rs:14:22 + | +LL | needs_i32_ref_fn(foo::<()>); + | ---------------- ^^^^^^^^^ expected `&i32`, found `i32` + | | + | arguments to this function are incorrect + | + = note: expected fn pointer `fn(&'static i32, i32)` + found fn item `fn(i32, &'static i32) {foo::<()>}` +note: function defined here + --> $DIR/normalize-fn-sig.rs:11:4 + | +LL | fn needs_i32_ref_fn(_: fn(&'static i32, i32)) {} + | ^^^^^^^^^^^^^^^^ ------------------------ + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. |
