From 128f2b5870cb5e6a01ec06bbee4f150b4ca6c19d Mon Sep 17 00:00:00 2001 From: est31 Date: Sat, 12 May 2018 09:54:53 +0200 Subject: [PATCH] Test that label break value only works on actual blocks --- src/test/ui/label_break_value_illegal_uses.rs | 29 +++++++++++++++++ .../ui/label_break_value_illegal_uses.stderr | 31 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 src/test/ui/label_break_value_illegal_uses.rs create mode 100644 src/test/ui/label_break_value_illegal_uses.stderr diff --git a/src/test/ui/label_break_value_illegal_uses.rs b/src/test/ui/label_break_value_illegal_uses.rs new file mode 100644 index 00000000000..d0bccdeae85 --- /dev/null +++ b/src/test/ui/label_break_value_illegal_uses.rs @@ -0,0 +1,29 @@ +// 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. + +// These are forbidden occurences of label-break-value + +fn labeled_unsafe() { + unsafe 'b: {} //~ ERROR expected one of `extern`, `fn`, or `{` +} + +fn labeled_if() { + if true 'b: {} //~ ERROR expected `{`, found `'b` +} + +fn labeled_else() { + if true {} else 'b: {} //~ ERROR expected `{`, found `'b` +} + +fn labeled_match() { + match false 'b: {} //~ ERROR expected one of `.`, `?`, `{`, or an operator +} + +pub fn main() {} diff --git a/src/test/ui/label_break_value_illegal_uses.stderr b/src/test/ui/label_break_value_illegal_uses.stderr new file mode 100644 index 00000000000..6cf6e4d0c7f --- /dev/null +++ b/src/test/ui/label_break_value_illegal_uses.stderr @@ -0,0 +1,31 @@ +error: expected one of `extern`, `fn`, or `{`, found `'b` + --> $DIR/label_break_value_illegal_uses.rs:14:12 + | +LL | unsafe 'b: {} //~ ERROR expected one of `extern`, `fn`, or `{` + | ^^ expected one of `extern`, `fn`, or `{` here + +error: expected `{`, found `'b` + --> $DIR/label_break_value_illegal_uses.rs:18:13 + | +LL | if true 'b: {} //~ ERROR expected `{`, found `'b` + | -- ^^---- + | | | + | | help: try placing this code inside a block: `{ 'b: { } }` + | this `if` statement has a condition, but no block + +error: expected `{`, found `'b` + --> $DIR/label_break_value_illegal_uses.rs:22:21 + | +LL | if true {} else 'b: {} //~ ERROR expected `{`, found `'b` + | ^^---- + | | + | help: try placing this code inside a block: `{ 'b: { } }` + +error: expected one of `.`, `?`, `{`, or an operator, found `'b` + --> $DIR/label_break_value_illegal_uses.rs:26:17 + | +LL | match false 'b: {} //~ ERROR expected one of `.`, `?`, `{`, or an operator + | ^^ expected one of `.`, `?`, `{`, or an operator here + +error: aborting due to 4 previous errors +