From aeb2353df54b2ca5fe0980766a023e028a0afa35 Mon Sep 17 00:00:00 2001 From: Scott McMurray Date: Tue, 3 Apr 2018 00:04:23 -0700 Subject: [PATCH] Add a UI test that the span for the catch type error is in the right place --- src/test/ui/catch-block-type-error.rs | 26 +++++++++++++++++++++++ src/test/ui/catch-block-type-error.stderr | 25 ++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/test/ui/catch-block-type-error.rs create mode 100644 src/test/ui/catch-block-type-error.stderr 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 or the MIT license +// , 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 = do catch { + foo()?; + 42 + //~^ ERROR type mismatch + }; + + let _: Option = 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 ` 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 ` as std::ops::Try>::Ok == ()` + --> $DIR/catch-block-type-error.rs:22:35 + | +LL | let _: Option = 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`.