diff options
| author | Scott McMurray <scottmcm@users.noreply.github.com> | 2018-04-03 00:04:23 -0700 |
|---|---|---|
| committer | Scott McMurray <scottmcm@users.noreply.github.com> | 2018-04-10 20:03:40 -0700 |
| commit | aeb2353df54b2ca5fe0980766a023e028a0afa35 (patch) | |
| tree | e24566a81e18622d9d14dc4419ca1d39ac0e8386 | |
| parent | c4b6521327d6662cbfa245a285bed1764692c4b2 (diff) | |
| download | rust-aeb2353df54b2ca5fe0980766a023e028a0afa35.tar.gz rust-aeb2353df54b2ca5fe0980766a023e028a0afa35.zip | |
Add a UI test that the span for the catch type error is in the right place
| -rw-r--r-- | src/test/ui/catch-block-type-error.rs | 26 | ||||
| -rw-r--r-- | src/test/ui/catch-block-type-error.stderr | 25 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/test/ui/catch-block-type-error.rs b/src/test/ui/catch-block-type-error.rs new file mode 100644 index 00000000000..c7739f6c5f8 --- /dev/null +++ b/src/test/ui/catch-block-type-error.rs @@ -0,0 +1,26 @@ +// Copyright 2018 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(catch_expr)] + +fn foo() -> Option<()> { Some(()) } + +fn main() { + let _: Option<f32> = do catch { + foo()?; + 42 + //~^ ERROR type mismatch + }; + + let _: Option<i32> = do catch { + //~^ ERROR type mismatch + foo()?; + }; +} diff --git a/src/test/ui/catch-block-type-error.stderr b/src/test/ui/catch-block-type-error.stderr new file mode 100644 index 00000000000..9634efe2cd8 --- /dev/null +++ b/src/test/ui/catch-block-type-error.stderr @@ -0,0 +1,25 @@ +error[E0271]: type mismatch resolving `<std::option::Option<f32> as std::ops::Try>::Ok == {integer}` + --> $DIR/catch-block-type-error.rs:18:9 + | +LL | 42 + | ^^ expected f32, found integral variable + | + = note: expected type `f32` + found type `{integer}` + +error[E0271]: type mismatch resolving `<std::option::Option<i32> as std::ops::Try>::Ok == ()` + --> $DIR/catch-block-type-error.rs:22:35 + | +LL | let _: Option<i32> = do catch { + | ___________________________________^ +LL | | //~^ ERROR type mismatch +LL | | foo()?; +LL | | }; + | |_____^ expected i32, found () + | + = note: expected type `i32` + found type `()` + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0271`. |
