about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2018-12-10 22:01:57 +0100
committerGitHub <noreply@github.com>2018-12-10 22:01:57 +0100
commitdec7b1951608925f3e9b4f21397d114debc235e0 (patch)
tree9efc46c8848825d404a4ba393c2375cd93b2af70 /src
parent1137d29d5e551e377579c5a601fe7c444057d00c (diff)
parenta367cec6e355a0b17d611acba5577ee72c228971 (diff)
downloadrust-dec7b1951608925f3e9b4f21397d114debc235e0.tar.gz
rust-dec7b1951608925f3e9b4f21397d114debc235e0.zip
Rollup merge of #56491 - euclio:assert-error, r=estebank
emit error with span for empty asserts

Fixes #55547.
Diffstat (limited to 'src')
-rw-r--r--src/libsyntax_ext/assert.rs8
-rw-r--r--src/test/ui/macros/assert.rs4
-rw-r--r--src/test/ui/macros/assert.stderr16
3 files changed, 28 insertions, 0 deletions
diff --git a/src/libsyntax_ext/assert.rs b/src/libsyntax_ext/assert.rs
index e3bd2ca0131..a2384b59048 100644
--- a/src/libsyntax_ext/assert.rs
+++ b/src/libsyntax_ext/assert.rs
@@ -24,6 +24,14 @@ pub fn expand_assert<'cx>(
     tts: &[TokenTree],
 ) -> Box<dyn MacResult + 'cx> {
     let mut parser = cx.new_parser_from_tts(tts);
+
+    if parser.token == token::Eof {
+        cx.struct_span_err(sp, "macro requires a boolean expression as an argument")
+            .span_label(sp, "boolean expression required")
+            .emit();
+        return DummyResult::expr(sp);
+    }
+
     let cond_expr = panictry!(parser.parse_expr());
     let custom_msg_args = if parser.eat(&token::Comma) {
         let ts = parser.parse_tokens();
diff --git a/src/test/ui/macros/assert.rs b/src/test/ui/macros/assert.rs
new file mode 100644
index 00000000000..8732cb58d74
--- /dev/null
+++ b/src/test/ui/macros/assert.rs
@@ -0,0 +1,4 @@
+fn main() {
+    assert!();  //~ ERROR requires a boolean expression
+    debug_assert!(); //~ ERROR requires a boolean expression
+}
diff --git a/src/test/ui/macros/assert.stderr b/src/test/ui/macros/assert.stderr
new file mode 100644
index 00000000000..89faba0cf63
--- /dev/null
+++ b/src/test/ui/macros/assert.stderr
@@ -0,0 +1,16 @@
+error: macro requires a boolean expression as an argument
+  --> $DIR/assert.rs:2:5
+   |
+LL |     assert!();  //~ ERROR requires a boolean expression
+   |     ^^^^^^^^^^ boolean expression required
+
+error: macro requires a boolean expression as an argument
+  --> $DIR/assert.rs:3:5
+   |
+LL |     debug_assert!(); //~ ERROR requires a boolean expression
+   |     ^^^^^^^^^^^^^^^^ boolean expression required
+   |
+   = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
+
+error: aborting due to 2 previous errors
+