diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-10-23 18:26:39 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-10-23 18:26:39 +0900 |
| commit | 3f462c22b53ee5ae2f56e2b268a15fd4dab9d22c (patch) | |
| tree | bc2635c79610813b70b4f699825421aa439a6e99 /src | |
| parent | 00c4dcdbb456964cfda35a1d447a0ee630b79c39 (diff) | |
| parent | 36a5244da311b9cd9a4ee04a75f15e23cf9fe891 (diff) | |
| download | rust-3f462c22b53ee5ae2f56e2b268a15fd4dab9d22c.tar.gz rust-3f462c22b53ee5ae2f56e2b268a15fd4dab9d22c.zip | |
Rollup merge of #78235 - Aaron1011:closure-ret-infer, r=varkor
Explain where the closure return type was inferred Fixes #78193
Diffstat (limited to 'src')
3 files changed, 43 insertions, 0 deletions
diff --git a/src/test/ui/closures/closure-return-type-mismatch.rs b/src/test/ui/closures/closure-return-type-mismatch.rs new file mode 100644 index 00000000000..1631bb303e5 --- /dev/null +++ b/src/test/ui/closures/closure-return-type-mismatch.rs @@ -0,0 +1,17 @@ +fn main() { + || { + if false { + return "test"; + } + let a = true; + a //~ ERROR mismatched types + }; + + || -> bool { + if false { + return "hello" //~ ERROR mismatched types + }; + let b = true; + b + }; +} diff --git a/src/test/ui/closures/closure-return-type-mismatch.stderr b/src/test/ui/closures/closure-return-type-mismatch.stderr new file mode 100644 index 00000000000..3a89d30a05d --- /dev/null +++ b/src/test/ui/closures/closure-return-type-mismatch.stderr @@ -0,0 +1,21 @@ +error[E0308]: mismatched types + --> $DIR/closure-return-type-mismatch.rs:7:9 + | +LL | a + | ^ expected `&str`, found `bool` + | +note: return type inferred to be `&str` here + --> $DIR/closure-return-type-mismatch.rs:4:20 + | +LL | return "test"; + | ^^^^^^ + +error[E0308]: mismatched types + --> $DIR/closure-return-type-mismatch.rs:12:20 + | +LL | return "hello" + | ^^^^^^^ expected `bool`, found `&str` + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/generator/type-mismatch-signature-deduction.stderr b/src/test/ui/generator/type-mismatch-signature-deduction.stderr index 9e111d68a55..4abc0542c51 100644 --- a/src/test/ui/generator/type-mismatch-signature-deduction.stderr +++ b/src/test/ui/generator/type-mismatch-signature-deduction.stderr @@ -6,6 +6,11 @@ LL | 5 | = note: expected type `std::result::Result<{integer}, _>` found type `{integer}` +note: return type inferred to be `std::result::Result<{integer}, _>` here + --> $DIR/type-mismatch-signature-deduction.rs:8:20 + | +LL | return Ok(6); + | ^^^^^ error[E0271]: type mismatch resolving `<[generator@$DIR/type-mismatch-signature-deduction.rs:6:5: 14:6] as Generator>::Return == i32` --> $DIR/type-mismatch-signature-deduction.rs:5:13 |
