Rollup merge of #56491 - euclio:assert-error, r=estebank

emit error with span for empty asserts

Fixes #55547.
This commit is contained in:
Guillaume Gomez 2018-12-10 22:01:57 +01:00 committed by GitHub
commit dec7b19516
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 0 deletions

View File

@ -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();

View File

@ -0,0 +1,4 @@
fn main() {
assert!(); //~ ERROR requires a boolean expression
debug_assert!(); //~ ERROR requires a boolean expression
}

View File

@ -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